Approximate public API prices of models (EXEC-001, owner decision of 2026-10-07). They
decide whether to ask the user before a model runs and whether a model meets a user's price
limit (AX-002); never billing, a request's cost or a model's safety.
Remarks
The list comes from coagent8_PRICES_URL (an http(s) URL, or a local file for a mirror or
an offline copy), else OpenRouter's public GET /api/v1/models, which needs no key and
receives no user data. A read is bounded in time and size and validated. Only the prices of
models the backends offer are kept (models.json), matched when the list is read: output,
uncached and cached input per million tokens (owner decision of 2026-10-08).
List prices change rarely, so a stored list is used as is and read again in the background
once it is a day old (PRICE_REFRESH_MS). A call waits for a read only when no list
is stored, when it needs a model the stored list has not checked, or, with a price limit,
when the list is older than a week (PRICE_STALE_MS). Reads are shared and a failed
one is retried after five minutes. Only an exact match from a list younger than a week
meets a limit (checkPriceLimit).
Approximate public API prices of models (
EXEC-001, owner decision of 2026-10-07). They decide whether to ask the user before a model runs and whether a model meets a user's price limit (AX-002); never billing, a request's cost or a model's safety.Remarks
The list comes from
coagent8_PRICES_URL(an http(s) URL, or a local file for a mirror or an offline copy), else OpenRouter's publicGET /api/v1/models, which needs no key and receives no user data. A read is bounded in time and size and validated. Only the prices of models the backends offer are kept (models.json), matched when the list is read: output, uncached and cached input per million tokens (owner decision of 2026-10-08).List prices change rarely, so a stored list is used as is and read again in the background once it is a day old (PRICE_REFRESH_MS). A call waits for a read only when no list is stored, when it needs a model the stored list has not checked, or, with a price limit, when the list is older than a week (PRICE_STALE_MS). Reads are shared and a failed one is retried after five minutes. Only an exact match from a list younger than a week meets a limit (checkPriceLimit).