How costs are estimated
For each request GoModel prices:- Input and output tokens at the model’s per-million-token (MTok) rates.
- Cached input, reasoning, and audio tokens at their own rates when the provider reports them, so cache-heavy and reasoning-heavy traffic is priced correctly.
cost_in_usd_ticks), GoModel uses that value instead of catalog pricing. Each row records which method was used in its cost_source field: model_pricing, openrouter_credits, or xai_cost_in_usd_ticks.
Cached tokens are discounted only when the model’s pricing includes a
cached_input_per_mtok rate. Without it, they are priced at the full input rate.Time-of-day pricing
Some providers charge different rates depending on when a request runs. DeepSeek, for example, bills its off-peak hours at half the peak rates and treats weekends as off-peak. The catalog publishes the standard (peak) rates as a model’s base prices and lists the discounted periods underpricing.time_windows:
start inclusive, end exclusive); an end at or before start wraps past midnight, and days limits a range to weekdays (all days when omitted). Rates absent from a window keep their base price, and outside every window the base prices apply. Recalculating stored costs uses each row’s stored timestamp, so historical rows are re-priced for the window they actually fell in. The dashboard’s cached-input cost estimate applies windows per minute of the week, matching the precision of the window bounds.
On the Models page, a * next to a price marks a model with time windows; hover it to see the schedule and rates. Overriding a base rate (input, output, cached input, or cache write) replaces the catalog’s discount for that rate as well: the override becomes the price at every hour. config.yaml model metadata may also declare its own time_windows, which replace the catalog’s.
Time windows are recurring UTC schedules only. Rules the catalog cannot
express — a provider’s holidays, or promotions with a fixed end date — are
not applied.
Where pricing comes from
Pricing for a model is resolved in priority order:- Operator overrides set in the dashboard.
config.yamlproviders.<name>.modelsmetadata.- The model catalog, sourced from the
ai-model-listregistry.
ai-model-list and contribute a correction there, or set an override for an immediate fix.
Pricing is one part of a wider metadata pipeline that also resolves context windows, capabilities, and model categories — see Model metadata for the full source chain.
Override pricing
Override pricing when the catalog price is wrong, missing, or differs from your negotiated rate. Open the Models page, find the model, and open its Pricing override editor. Set one or more price types (input, output, cached input, and so on) in USD. Saved fields override catalog andconfig.yaml pricing for that selector; unset fields keep inheriting.
The Models page lists each model's prices; the $ action opens its pricing override
Set a price type and USD value; saved fields override catalog and config.yaml pricing for the selector
Dashboard totals
- Estimated Cost — spend on live provider requests; cache hits are excluded.
- Saved Cost — what requests served from the cache would otherwise have cost.
--- value means the cost is unknown because no pricing was available, which is not the same as $0.
Recalculate stored costs
Recalculating recomputes the stored cost of matching usage rows from current pricing. Use it after changing an override, or when pricing was unavailable at the time a request ran. The action is enabled by default (USAGE_PRICING_RECALCULATION_ENABLED); on the usage view, choose Recalculate, then type recalculate to confirm. It is scoped to the selected date range, provider or model, and user path.