Core Guides
Billing and pricing
How charges, estimates, balances, and limits work
One TokenLab balance works across models. There is no subscription or minimum spend. Top-ups start at $5. Charges are based on the model and usage recorded for each request.
Delivery options
The same model and API are available through two routes: Verified costs less, and Official is more reliable. The delivery option decides which route runs a request and which price you pay.
| Option | Route | Price | If the route is unavailable |
|---|---|---|---|
Verified | Verified only: routes tested by TokenLab | Verified price, lower than the Official price on most models | The request fails and is not charged |
Official | Official only: the model maker or a major platform | Official price, the model maker's published price | The request fails and is not charged |
Auto (default) | Verified first. Official runs the request once if Verified has no supply or fails before any output | The price of the route that completed the request | Official runs the request |
The Models page shows both prices for each model.
- Each completed request is charged once.
- Auto does not switch after output starts or after a task is accepted.
- Before a run, Auto holds the higher of the two possible amounts. If the balance covers only the Verified estimate, Auto runs Verified alone for that request and does not fall back to Official. After the run, you pay the actual charge and the rest is released.
- The
X-TokenLab-Delivery-Policyrequest header overrides the API key setting, and the API key setting overrides the Workspace default. See the API introduction.
For paid generation, Console shows the maximum estimate before confirmation. After completion, Runs and Usage show the final charge and the option that completed the request.
Pricing Models
Model prices can change. Check Console, the Models page, GET /v1/models/:model/pricing, or the Pricing API for the current price.
On the Models page, a dash in the Verified price or discount column means no Verified offer is currently available; it does not mean free. Models with Official supply remain available through Official or Auto. In the API, the Verified price fields of such a model are null or omitted, and the official_* price fields show what you pay. Delivery labels describe supported options, while availability is checked when each request runs. Series prices summarize models with supply in the relevant delivery option and keep different billing units separate.
Token-Based Pricing
Most chat, reasoning, embedding, rerank, and some image models are priced by input, output, cache, or image-output tokens.
| Pricing family | Examples | Verify current price |
|---|---|---|
| Chat / Responses | gpt-5.4, claude-sonnet-4-6, gemini-3.5-flash | Models page or Pricing API |
| Embeddings / rerank | text-embedding-3-small, qwen3-vl-rerank | Model pricing detail |
| Token-priced images | gpt-image-2 | GET /v1/models/gpt-image-2/pricing |
Do not hard-code a copied price table. Read the current price when your application needs to display or compare costs.
Tool fees
Some built-in tools cost extra on top of tokens. TokenLab charges a tool fee only when the model uses the tool and the response reports it. A request that offers a tool the model does not use has no tool fee.
| Tool | Models | Charge |
|---|---|---|
| Web search | OpenAI, Claude and Grok models, and Gemini 3 models with Google Search grounding | Each search the model runs. For Gemini 3, each unique search query |
| Search grounding | Gemini 2.5 models with Google Search grounding | Once for each request that the search grounded |
- Each model has its own tool fee for Verified and Official, the same as its token prices. The model's pricing details show it as Web search or Search grounding.
- Search results that the model reads are billed as input tokens at the model's price.
- A tool without a price on a model is not charged.
- In Console, open a request in Runs: Tool fees shows the number of calls and the price of each call. The API key usage records show the same values in
charged_price_basis: the count inmeasure.dimensions.webSearchCallsorgroundedPrompts, and the price of each call ineffectiveUnitPrices.webSearchoreffectiveUnitPrices.groundedPrompt.
Prompt caching
A model can read the repeated start of a prompt from a cache. Tokens read from the cache cost less than input tokens.
- GPT, Gemini and some other models cache long repeated prompts automatically. You do not set anything.
- Claude models cache only when you ask. Send
"anthropic_options": {"prompt_caching": true}in a Chat Completions request. TokenLab marks the end of the system prompt and the latest user message as cache points. With the Messages API, addcache_controlto the blocks yourself.
| Charge | Claude price (typical) |
|---|---|
| Cache write, 5 minutes (default) | 1.25 × input price |
Cache write, 1 hour ("prompt_caching_ttl": "1h") | 2 × input price |
| Cache read | 0.1 × input price |
- Cache prices differ by model and delivery option. Check the model on the Models page before you rely on a ratio.
- One cache read within the cache lifetime pays back the write. A prompt that never repeats costs a little more with caching on.
- A prompt shorter than the model's minimum (512 to 4,096 tokens for Claude, depending on the model) is not cached and has no cache write charge.
- If the serving route does not support a one-hour cache, the five-minute cache is used.
- The response shows the result:
usage.prompt_tokens_details.cached_tokensis the number of tokens read from the cache, andusage.cache_creation_input_tokensis the number written to it.
Service tier
TokenLab runs and bills requests at the standard service tier. service_tier values auto and default are accepted. Other values, such as flex, priority, fast, and ultrafast, are ignored: the request runs at the standard tier and is charged the standard price.
Request and Task Pricing
Image, video, music, 3D, audio, and world models may be priced per request, image, second, minute, or task. The model page shows the billing unit.
| Family | Examples |
|---|---|
| Image | flux-pro-1.1 |
| Video | veo3.1, seedance-2.0 |
| Music | suno-music |
| 3D | tripo-h3.1 |
| Audio | grok-tts, whisper-large-v3 |
Async task billing
Some tasks reserve the estimated cost when they are created. A completed task is charged once; a failed task releases or refunds the pending amount.
Video, music, 3D, and task-based image generation return a task ID and poll_url. The final amount is recorded after the task becomes completed or failed. A completed task includes billing_transaction_id after billing; a failed task is not charged.
If Usage still does not show the final charge or released amount after the task finishes, contact support@tokenlab.sh with the Request ID and task ID.
Billing transaction IDs
Non-streaming OpenAI-compatible responses include billing_transaction_id when billing finishes before the response is sent. The same value may appear in X-Billing-Transaction-ID; Gemini and other native formats may expose it only in this header.
Async tasks include billing_transaction_id after completion. Streaming may finish before billing does, so use Usage when the header is absent.
Token counts
Text models usually report input, output, and total tokens in usage. Tokenization differs by model, language, and media input, so character-count formulas are not reliable billing estimates. Use the model's current price and the final Usage record.
Find your usage
Open Usage to find:
- Real-time balance
- Usage history by model
- Cost breakdown
- API key usage
API response
Token-based responses usually include usage information:
{
"usage": {
"prompt_tokens": 50,
"completion_tokens": 100,
"total_tokens": 150
}
}Spend less
Low-balance alerts
Set a threshold in Console → Settings. TokenLab emails you when the balance falls below it.
Add balance
Open Console → Billing, choose an amount, and use one of the payment methods shown at checkout. The balance updates after the payment provider confirms the payment.
When the trial-credit experiment is on, a new eligible account can receive a $0.25 trial credit once (was $0.10). Unused trial credit can expire after the campaign window.
API Key Limits
You can set a spending limit when you create or edit an API key in Console → API Keys.
When the limit is reached, requests with that key will return 402 Payment Required.
Billing help
Contact support@tokenlab.sh for billing inquiries.