Configure model pricing and view monthly billing
The Settings page's Billing sub-tab has two tabs: Model pricing (model price snapshots) and Monthly cost (monthly cost breakdown). Another Settings sub-tab is Users & Access (user and key management; see Access key & key group fields and Console user management).
Entry point: Console → Settings → Billing (visible to admin and monitor).
Model pricing
Manage each model's price snapshot (per 1M tokens, in USD). Prices are used for monthly-cost calculation.
Model list
The table lists all configured models; each row shows the model name, its upstream, and the snapshot count. Click to expand and view that model's price history.
Snapshots
Each model can have multiple price snapshots, ordered by time:
| Column | Description |
|---|---|
| Created at | The snapshot's effective time (hover to show the price's valid interval) |
| Billing mode | Token-based / per-call / per-duration |
| Input price | USD price per 1M input tokens |
| Output price | USD price per 1M output tokens |
| Cache read price | USD price per 1M cache-read tokens |
| Mode unit price | The mode price under per-call / per-duration billing (per-call = per invocation, per-duration = per second of media duration; Token mode shows —) |
| Source | auto (written automatically by the system from the built-in baseline or a remote pricing source) or pinned (set manually in the console, with a yellow badge) |
| Status | current (currently effective, green) or preset (preset/historical) |
Create / edit a snapshot (admin only)
- Expand the target model and click "New snapshot".
- Fill in:
- Created at: blank = current time, or specify a past/future time (format
YYYY-MM-DD HH:MM:SS). Past time = backfill historical prices; future time = preset to take effect later. - Input / output / cache read price: USD / 1M tokens.
- Billing mode: Token-based (default), per-call, or per-duration.
- Currency: USD by default; CNY / EUR / JPY / GBP optional.
- Per-call price: only for per-call billing mode.
- Duration unit price: only for per-duration billing mode (price per second of media duration; for models such as voice/video that return no token usage, only duration in seconds).
- Extra pricing: custom pricing dimensions as key-value pairs (e.g.
reasoning_tokens).
- Created at: blank = current time, or specify a past/future time (format
- Save.
Price effectiveness rules
- Multiple snapshots are sorted by
created_at, each covering the interval[its own time, the next one's time). - The earliest snapshot covers all earlier historical periods (backfill).
- The latest snapshot extends indefinitely forward (current and future).
is_currentmarks the snapshot effective at the current moment.- Relationship between auto and manual prices: when you manually create/edit a price snapshot (pinned) for a model, it becomes the currently effective price because its time is newer, shadowing all auto rows below it — auto rows are not deleted or overwritten but kept in the table as historical snapshots, and cost calculation uses the pinned price unaffected. The pinned price is authoritative; the system skips that model on refresh and will not overwrite your manual price with the baseline price.
- How auto rows update: when a model has only one auto snapshot (you have not created a pinned price yet), if the built-in baseline or remote pricing source changes, the system updates that single row in place (keeping one row, rather than appending a new one for each baseline change). Only after you add a second snapshot for that model (producing price history) do subsequent auto changes append new rows to preserve the audit trail.
- Deleting a pinned price: the current price falls back to the next-newest auto row; if at that point the model has only one auto row left and the baseline has updated, the system updates it in place to the latest value — self-healing.
See Pricing & billing fields for the full reference on field semantics.
Monthly cost
Breaks down cost by month across five dimensions: access key, key group, model, by day, by week. By-day / by-week are split by the browser's local timezone (a week is Monday to Sunday in the local timezone), and the table is ordered chronologically.
Operations
- Select a dimension (default access key) and a month (dropdown; the range is determined by the start/end time of the statistics).
- The top summary cards show, for the selected month: total requests, total cost, input tokens, output tokens, cache-read tokens.
- The main table lists by the selected dimension:
| Column | Description |
|---|---|
| Access key / key group / model / day / week | Expandable to see details; a week is shown as its date range (MM-DD ~ MM-DD) |
| Total requests | |
| Successful requests | |
| Failed requests | Shown in red when greater than 0 |
| Input tokens | |
| Output tokens | |
| Cache read tokens | |
| Cost (USD) |
- Expand a row: the access key / key group dimension shows the request count and cost details of each model under that item; the model dimension shows the details of each access key that consumed that model; the by-day / by-week dimension shows the distribution details of each model within that period.
- There is a totals row at the bottom of the table.
- Click the export button to export the currently displayed month's bill as Excel; see Export billing Excel and troubleshoot logs.
FAQ
Q: What's the difference between the auto and pinned snapshot sources? auto is a price written automatically by the system from the built-in baseline or a remote pricing source; pinned is a price you set or modified manually in the console. pinned becomes the currently effective price because its time is newer, shadowing the auto rows below it, and the system skips that model on refresh and will not overwrite the pinned price.
Q: I set a manual price, what happens to the previously auto-written row? It is not deleted or overwritten. It is shadowed by your manual price (cost calculation uses the manual price) and kept in the table as a historical snapshot and fallback point. After you delete the manual price, the current price automatically falls back to it.
Q: With only one auto price, does a baseline change append a new row? No. The system updates that single row in place, and the table keeps one row. Only after a second snapshot already exists (you created a pinned price or backfilled a historical price) does a baseline change append a new row to preserve price history.
Q: What happens when a snapshot is deleted?
- Deleting the only remaining row: the model becomes "no pricing"; the system may re-fetch automatically after a refresh.
- Deleting the currently effective row: falls back to the adjacent snapshot.
- Deleting a historical record: permanently deleted, no effect on current pricing.
Q: The monthly cost is inaccurate? Confirm that the model pricing's snapshot time range covers that month. If a month has no valid price, the cost is 0.
Q: What's the difference between the three billing modes? Token-based bills by input/output token count; per-call bills by invocation count (a fixed price per call); per-duration bills by media duration (unit price × seconds). The three modes are mutually exclusive, and each mode ignores the other modes' prices. Per-call / per-duration apply to models that return no token usage (such as images, speech transcription, video generation).
Next: Pricing & billing fields for full field semantics; Statistics for usage statistics; Export billing Excel and troubleshoot logs for the export operation; Upstream & model fields for model configuration.
