Account and billing
Account and billing
How does billing work?
One USD balance per account, drawn down as work completes. There is no subscription and no monthly commitment — credits are added up front and consumed.
- Text is metered per token, priced separately for input, cached input, and output.
- Tasks — image, video, effect, workflow — reserve credits on submission and settle on completion.
Where do I see what I have spent?
Two places, showing the same figures:
- The dashboard, for calls, tokens, cost, and the per-key breakdown.
GET /v1/usage, for the same data programmatically — includingby_model,by_capability, andby_api_key.
What happens when a task fails?
The reservation is refunded. GET /v1/tasks/{task_id} reports the refund on the task itself, and GET /v1/usage reports credits_refunded alongside credits_settled.
This matters for your own accounting: if your ledger records the reservation and never reads the refund, your numbers drift from the invoice. Reconcile both.
Why is my balance negative?
credit_balance can go below zero. A long-running task settles at completion, so work already accepted finishes and bills even if the balance reached zero while it was running. Add credits and the balance returns to positive.
What happens at zero?
Every paid operation on the account starts returning 402 insufficient_credits — this is account-wide, not per-key. Tasks already accepted continue to completion. Nothing is deleted and no key is revoked; adding credits resumes service immediately.
If anything you run is user-facing, alert on 402 rather than discovering it from a user.
How is the request-rate allowance decided?
By lifetime paid top-ups, not by plan. Adding credits moves the account up a tier, permanently — the tier never falls back, because the figure it is based on only ever increases.
The current allowance and the next tier are on the dashboard, and in GET /api/user/self under rate_limit:
Two things it deliberately does not tell you: promotional credits and referral bonuses do not count toward a tier, and the figure shown excludes any stricter limit attached to an individual key.
Do credits expire?
No. The balance stays until it is spent.
Why does the same prompt cost different amounts?
Four reasons, in rough order of how often they surprise people:
- Output length varies. Output is the expensive half of a text call, and the model decides how long it is unless you cap it.
- Cached input is cheaper than fresh input. Repeating a long system prompt can hit the cache and cost a fraction of the first call.
- Some models bill by time of day. The DeepSeek family doubles during weekday peak hours in Beijing time; Hunyuan
hy3has its own daily peak window. The pricing page footnotes give the exact hours. - Some models bill by context length. The GPT-5.6 and Grok families charge a higher rate past a context threshold. A long agent session crosses it silently.
Every response’s usage record shows which rate was applied.
Can I see cost per application?
Give each application its own API key. by_api_key in GET /v1/usage then attributes tasks and credits per key with no further work.
How do I add credits?
From the dashboard. The balance updates as soon as the payment is confirmed; there is nothing to enable afterwards.
How do I get help with a charge?
Open a support ticket from the dashboard with the request_id of the call in question, or the task ID. Both resolve to a single record.

