Short answer
The Cost column on the log page is the USD amount for that call. Four things explain everything you see there:- Usage-based models (most text models, plus gpt-image-2, the SeeDance 2.0 family and others) return token counts in the response’s
usagefield, so cost is computable client-side; - Per-call models return no amount in the response, but the unit price is fixed, so cost = calls × fixed price — equally easy to compute;
- Log amounts are pre-discount: your real cost is that figure divided by your top-up bonus ratio (a 10% bonus means ÷1.1, roughly a 9% discount);
- The log only records successfully billed calls. Errors are returned in the API response; a failed call that produced no charge never appears in the log and is not billed.
One-liner: per-call billing = fixed cost; usage-based billing = computed from tokens, returned in the response.
Reading each column
Per-call models may still show token counts in Prompt / Completion, but the amount is not derived from those columns. An easy tell: if repeated calls with the same parameters cost exactly the same, and the figure is a round number like 0.030000, it is per-call billing.
The two billing modes
Usage-based (per token)
The response’s
usage field returns token counts directly. Cost = input tokens × input rate + output tokens × output rate.Applies to: most text models, plus token-priced image and video models such as gpt-image-2 and the SeeDance 2.0 family.Per-call (fixed unit price)
No amount is returned in the response, but each call has a fixed price, so cost = calls × unit price — the easiest case to budget.Applies to: most image and video models priced per image or per second. Look up rates on the Model Pricing page in the console.
Can the API return the cost directly?
It does not return an amount, but the cost is fully computable:- Usage-based: multiply the
usagevalues by the rates yourself — these are the vendor’s own token counts, more accurate than any estimate; - Per-call: the unit price is fixed, so just multiply by the number of calls.
Computing it from usage
Usage-based models return something like this:Checking token counts for gpt-image-2
The pricing section of the model overview has measured data on how input and output images convert into tokens
Why log amounts are “pre-discount”
The log records the raw amount computed from model rates. Your real cost gets one more discount on top, because your top-up came with bonus credit:0.011 ÷ 1.1 = 0.01 — roughly a 9% discount.
See the top-up bonus tiers
Bonus percentages per tier, first-time bonuses, and how credit is issued
No need to apply group discounts a second time: a model group’s multiplier is already applied at billing time, so the logged amount includes it. The only layer left to convert is the top-up bonus. See model multipliers.
Are failed calls billed?
No — and they do not appear in the cost log at all. This is the key to reading the log correctly: A typical example: calling gpt-image-2 and gettingPUBLIC_-prefixed error, that is upstream content moderation — not billed, and safe to retry after adjusting the prompt.
A pre-deduction hold is not a charge. Before a request runs, the system freezes an estimated amount; if the request fails the hold is released, and settlement always follows actual usage. A balance that briefly dips and recovers is expected — see the pre-deduction mechanism.
Common questions
Two calls to the same model cost very different amounts — is that normal?
Two calls to the same model cost very different amounts — is that normal?
Yes. Under usage-based billing the amount tracks usage. Common causes:
- Different input length: long context, multi-turn history, images and audio all push input tokens up sharply
- Reasoning tokens: models with reasoning enabled produce extra output tokens, counted in the Completion column
- Cache hits: cached input is billed at a much lower rate, so the second run of the same prompt can be far cheaper
- Image/video parameters: resolution, duration and image count directly drive token counts or call counts
The token counts in the log do not match my own count.
The token counts in the log do not match my own count.
Trust the
usage field in the response and the log — they come from the same source. Mismatches usually come from: multimodal content (images, audio) being converted into tokens by vendor-specific rules; system prompts and tool schemas counting as input; and reasoning tokens counting as output without appearing in the visible text.Where do I find unit prices for per-call models?
Where do I find unit prices for per-call models?
Log in and check the Model Pricing page in the console, or the model pricing overview on this site. Per-call prices are fixed, so cost is simply price × number of calls.
A call failed but I think I was charged. What now?
A call failed but I think I was charged. What now?
First check the log by timestamp to confirm whether a cost record was actually created. If there really is an abnormal charge, contact support with the timestamp and model name from the log. Losses caused by issues on our side are compensated with reissued credit — see SLA guarantees.
Can I see the content I sent in the log?
Can I see the content I sent in the log?
No. For privacy and storage reasons the log keeps only what billing requires — time, model, token counts and amount — and does not record request or response content. See how to view call records.