Pricing & billing
What each capability is measured in, and the rules that decide what lands on your bill.
Units of measurement#
Not everything is measured in tokens. Using the right unit per capability is what keeps the numbers honest.
| Field | Type | Description |
|---|---|---|
Text generation | tokens | Input and output tokens, priced separately. Output usually costs several times more than input. |
Reasoning | output tokens | Thinking tokens are output tokens. Higher effort means a bigger bill — see Reasoning. |
Text to speech | characters | Characters of the input field, not tokens and not seconds of audio. |
Images | images | One generated image is one unit, whatever its size. n: 4 costs four units. |
Cached input | discounted tokens | Where a provider supports prompt caching, repeated prefixes are billed at a reduced rate automatically. |
Plans and wallet#
Two ways to pay, and they cover different things.
- Subscription plan — a monthly price that includes spending allowances over rolling windows (for example a 5-hour and a 7-day window). Usage inside those windows is covered by the plan.
- Wallet — prepaid balance, charged per request. Used when you have no plan, and for capabilities a plan does not cover.
Images charge the wallet; speech counts against the plan window
Image generation is billed per image against your wallet, separately from the plan's spending window.
Free allowances#
- Free-tier models come with a daily token allowance on every plan, including the free one.
- Images include a number of free generations per rolling 24 hours. This is an allowance, not a wall: past it, images are simply charged to your wallet rather than refused.
- The window slides. It does not reset at midnight, which would create a rush at the same moment every day.
Model tiers#
| Field | Type | Description |
|---|---|---|
free | any account | Usable on every plan within the daily token allowance. |
paid | plan or balance | Needs an active paid plan or a positive wallet balance. |
premium | paying accounts | Flagship models. Available once the account has made a real payment — gifts and trials do not unlock this tier. |
What you are charged for#
Charged
- Every successful request, at the price of the model you requested.
- Tokens already generated when you cancel mid-stream. The work was really done upstream.
- Image jobs the provider refuses on content grounds — the attempt consumed real upstream capacity.
Not charged
- Requests that fail with a 5xx, or that never reach a provider.
- Requests rejected by validation — an unknown model, or input beyond the context window.
- A duplicate blocking request replayed from cache. See Idempotency & retries.
- Image jobs that fail or are cancelled.
You always pay the price of the model you asked for
Pricing follows the model in your request, and the model field in the response always matches what you asked for. There is nothing to reconcile between the two.
Tracking usage#
Every response carries token counts. Record them as you go rather than reconciling later — they are the same numbers your invoice is built from.
"usage": {
"prompt_tokens": 1024,
"completion_tokens": 256,
"total_tokens": 1280
}"usage": {
"input_tokens": 1024,
"output_tokens": 256
}When streaming, usage arrives as a separate frame after the finish chunk, and only if you set stream_options.include_usage — read to the end of the stream or you will record zero. The dashboard breaks the same data down by key, model and day.
Keeping spend predictable#
- Set a monthly limit per API key. One key per service turns a runaway loop into a capped incident instead of an empty wallet.
- Set
max_tokens. It is a hard ceiling on the most expensive part of a request, and xKiro never raises it on your behalf. - Choose the smallest model that passes your tests. The gap between tiers is several times the price, and usually smaller than the gap in your prompt quality.
- Turn reasoning off when you do not need it. Explicitly — omitting the field is not the same as disabling it.
- Cache. Identical prompts returning identical answers is money you can simply stop spending.
Current prices per model are listed in the pricing page, and per-key usage in the dashboard — which always reflects what your account is actually charged.
