In the Anthropic Messages usage structure, a bill splits into four components:
| Component | Field | What to verify |
|---|---|---|
| Non-cached input | input_tokens | Input read neither from cache nor counted as cache creation; do not add cached tokens into this price again |
| Output | output_tokens | Generated this call; a cache hit does not waive it |
| Cache read | cache_read_input_tokens | How many tokens were read; the read price is not necessarily zero |
| Cache write | cache_creation_input_tokens | Aggregated writes; if 5-minute/1-hour breakdowns exist, bill by the breakdowns and never add the aggregate again |
Under the official native semantics, total input equals the three components combined (non-cached input + cache read + cache write) — that is a token count, not a statement that all three are charged at the ordinary input price. Other compatible protocols (for example an OpenAI-style prompt_tokens) may already include cached input and report it in a subfield; similar field names do not imply identical semantics. For streaming responses, confirm you captured the final usage event instead of only the first frame.
Per the official Anthropic prompt caching table (read via browser on 2026-10-23): 5-minute cache writes cost 1.25x the base input price, 1-hour writes 2x; cache hits and refreshes are not all 0.1x.
| Official model | Cache hit and refresh (relative to base input price) |
|---|---|
| Claude Opus 5.5 / Sonnet 5.5 | 0.05x |
| Claude Fable 5.1 / Mythos 5.1 | 0.025x |
| Other models in the table | 0.1x (still verify the context tier and pricing modifiers for that model) |
These are official API rules, not quotes any third-party platform must adopt. When auditing a relay bill, use the read/write prices actually in effect on that node at that time; do not estimate with a flat "one tenth of input price", and do not present an official discount multiplier as a promise your platform already honours.
All numbers below are constructed examples, not current prices, and do not correspond to any specific model. Assume the same node, model, currency USD, and no long-context surcharges, taxes, discounts or retries; assumed prices: non-cached input 3, output 15, cache read 0.30, 5-minute write 3.75, 1-hour write 6 (USD / 1M tokens).
| Constructed request | Non-cached input | Output | Cache read | 5-min write |
|---|---|---|---|---|
| A: first write | 2,000 | 1,000 | 0 | 10,000 |
| B: subsequent read | 2,000 | 1,000 | 10,000 | 0 |
A = 2,000×3/1M + 1,000×15/1M + 10,000×3.75/1M = 0.006 + 0.015 + 0.0375 = USD 0.0585
B = 2,000×3/1M + 1,000×15/1M + 10,000×0.30/1M = 0.006 + 0.015 + 0.003 = USD 0.024
Two calls total USD 0.0825 (no-cache baseline USD 0.102, about 19.12% saved)
B hit the cache and was still charged USD 0.024 — the read itself has a price, plus new input and output. The first write A costs USD 0.0075 more than a single uncached call: one hit does not guarantee the whole task is cheaper; request count, reused prefix, output size and write price all change the outcome. If A's write used the 1-hour tier (6/1M), the two calls total USD 0.105, above the no-cache baseline.
Per the official docs, the TTL clock starts when the request that writes or reads the cache begins (not when the response ends), and response generation time consumes the TTL. The official default is 5 minutes, and each read refreshes the retention window instead of recharging a write fee. cache_creation_input_tokens equals the sum of the 5-minute and 1-hour sub-items; price each TTL sub-item separately and never bill the aggregate field twice. Whether a third-party node follows the same refresh rules, minimum cacheable length and prefix requirements must be checked against that node's current docs; asking the same question twice does not guarantee a hit.
A missing or null usage field means the record provides no value — it must not be filled with zero; an explicit zero only means the record reported zero. A cache-read field that is always zero does not by itself prove "the platform swallows the field" — the prefix, length or TTL may not qualify, the model or node may not support caching, the request may not enable the mechanism, or the protocol mapping may differ. Conversely, cache_read_input_tokens greater than zero does not prove the model comes from a direct official connection. Usage is billing evidence, not supply-chain authentication.
Current listed prices and multipliers per node are on the live pricing page and the public evidence snapshot; for Claude Code endpoint and model configuration see the Claude Code setup guide.
This article is written by the TokenDos operator and is a related-party disclosure, not an independent review. Official rules come from the Anthropic prompt caching docs (read via browser on 2026-10-23) and the official pricing entry; the worked examples are constructed and were not validated against a real bill. Cite the source when republishing.
Start using TokenDos with pay-per-token pricing today
Get API Key Now