How it works
A model reads a prompt from the start. When a new request begins with the same tokens as a recent one, the provider can reuse that work instead of redoing it, and it bills those tokens at a lower cached price. Only the matching start counts: one changed token and everything after it is new input again.
Agents, chat apps and document Q&A send the same instructions, tool definitions and documents again and again, so for them the cached price matters more than the input price.
What cached tokens cost
| Model | Input / 1M | Cached / 1M | Cached share |
|---|---|---|---|
| Claude Opus 5.5 | $1.40 | $0.14 | 10% |
| Claude Sonnet 5.5 | $0.90 | $0.09 | 10% |
| GPT-6 Astra | $2.50 | $0.25 | 10% |
| GPT-6 Sol | $0.50 | $0.05 | 10% |
| Gemini 3.1 Pro | $0.80 | $0.08 | 10% |
| Gemini 3.8 Flash | $0.32 | $0.032 | 10% |
| DeepSeek V4.1 Flash | $0.03 | $0.00074 | 2.5% |
| Qwen 3.8 Max | $1.20 | $0.15 | 12.5% |
Prices on Zurelay, live. Each model's page has its full price list.
Claude caches what you mark
Claude caches the blocks you mark with cache_control, for five minutes, or an hour with "ttl": "1h". Writing to the cache costs 1.25 times the input price for five minutes and 2 times for an hour; reading it back costs a tenth. Claude Code marks its prompts for you. Most other models cache a repeated start on their own.
How to hit the cache
- Put what never changes first: instructions, tool definitions, reference documents. Then the conversation, then the new question.
- Keep that start byte-for-byte the same. A timestamp, a request ID or a reordered tool list at the top makes every request a miss.
- Send follow-ups soon. Caches expire after minutes, so a burst of requests hits and a request an hour later starts over (unless you asked Claude for an hour).
Check that it worked
The usage in each response says how much came from the cache: usage.prompt_tokens_details.cached_tokens on Chat Completions, and cache_read_input_tokens and cache_creation_input_tokens on Anthropic's Messages API. If the cached count stays at zero on repeated requests, something at the start of the prompt is changing.
To see what caching does to a whole month, set the cached share in the LLM cost calculator.