Prompt caching cut DeepSeek's input cost 88% and its latency from 1.43s to 0.90s in our 2026-07-28 test, but the same discount vanished through a router while GLM-5 and MiniMax kept theirs.
Prompt caching is a server-side billing and latency optimization that reuses the computed state of a repeated prompt prefix instead of paying to process it again. Vendors document it well. What nobody publishes is what happens on the second call, on the endpoint you actually call, in the usage fields the API returns. So we ran it.
We sent the same fixed ~1800-token prefix, a fictional API changelog, two or three times to each of eight endpoints on 2026-07-28. Calls went out two seconds apart with a different one-line question each time, temperature 0, max_tokens 40. All 17 calls succeeded.
Cache behavior was read from each API's own usage object, never inferred. DeepSeek native reports prompt_cache_hit_tokens and prompt_cache_miss_tokens. The routed path reports prompt_tokens_details.cached_tokens plus a billed usage.cost figure. Total routed spend for the whole run was $0.051.
One disclosure that governs every number below: DeepSeek V4-Flash was measured natively on api.deepseek.com, and all seven other endpoints were measured through an OpenRouter-routed path. Native re-verification for the routed models is still pending. This is a single-region snapshot, not a continuous monitor.
The second caveat matters even more. This design fires identical requests back to back with no cache markers attached, so it measures implicit (automatic) caching only. Any provider whose cache requires an explicit marker is expected to report zero cached tokens here. That is a finding about default behavior, never a claim that caching is unsupported.
| Endpoint | Repeat-call cached tokens | Billed change on repeat | Verdict |
|---|---|---|---|
| DeepSeek V4-Flash (native) | 3328 of 3403 (98%) | input cost computed at official rates: $0.000476 to $0.0000571 (-88%) | implicit cache HIT, explicit hit/miss fields, latency 1.43s to 0.90s, third call hit again (3328) |
| DeepSeek (routed) | 0 | $0.000698 to $0.000696 (none) | cache lost through the router this run, full price twice |
| GLM-5 (routed) | 3200 of 3284 | $0.002388 to $0.000596 (-75%) | implicit cache survived routing, discount visible in billing |
| MiniMax-M2.5 (routed) | 3296 of 3316 | $0.000530 to $0.000204 (-62%) | implicit cache survived routing |
| Qwen3-235B (routed) | 0 | $0.000726 to $0.000331 | NOT cache evidence: provider-price variance, see the note below |
| Kimi K2 (routed) | 0 | $0.001901 to $0.001897 (none) | no implicit cache visible via this route |
| GPT-4o (routed) | 0 | $0.00841 to $0.00840 (none) | no cache visible via this route; OpenAI documents automatic caching on its own API |
| Claude Sonnet 4.6 (routed) | 0 | $0.01207 to $0.01201 (none) | expected by design, Anthropic caching needs explicit markers our test never sends |
Three findings come out of that table, and the second and third of them contradict each other in a way most caching write-ups quietly avoid.
On the repeat call, DeepSeek V4-Flash reported 3328 of 3403 prompt tokens as cache hits and only 75 as misses, a 98% hit rate on a prefix that had been seen once, two seconds earlier. The third call hit 3328 again. Latency fell from 1.43s to 0.90s.
The cost side is arithmetic, not a bill. Applying the measured hit and miss split at DeepSeek's official rates gives $0.000476 for the cold call and $0.0000571 for the warm one, an 88% input-cost reduction. According to DeepSeek's API documentation, cache-hit input tokens are priced at $0.014 per million against $0.14 per million on a miss, and the cache is applied automatically with no request-side flag. We compute those native figures at official rates, not from an invoice, because the native API returns no per-call cost field.
The same DeepSeek model family, called through the router in the same run, returned zero cached tokens on both calls and billed $0.000698 then $0.000696. Nothing was saved. Set the two paths side by side and the native repeat call cost roughly one twelfth of the routed repeat call on input.
That gap is big enough to change an architecture decision for a high-volume RAG or agent workload with a heavy fixed system prompt. It is also a snapshot: routing topologies change, and a different upstream provider may behave differently on another day.
GLM-5 returned 3200 cached tokens of 3284 on its repeat call and its billed cost fell from $0.002388 to $0.000596, a 75% drop. MiniMax-M2.5 went from 32 cached tokens to 3296 of 3316, with billing down from $0.000530 to $0.000204, a 62% drop. Both discounts were visible in billing, through the router.
So "routers lose caching" is false as a blanket claim. Z.ai develops GLM-5 and MiniMax publishes MiniMax-M2.5, and both integrations passed cache state through to the billing layer while DeepSeek's did not on the same day. According to MiniMax's platform documentation, context caching is offered as a first-party feature, and our routed measurement is consistent with it working end to end. The lesson is per-provider verification, not a rule about routers.
Qwen3-235B reported zero cached tokens on both calls, yet billing dropped from $0.000726 to $0.000331. That is not a cache. Call B matches Qwen's list price, roughly $0.00032 computed for that token count, while call A billed about twice list. The delta tracks provider-price variance across the routed marketplace, where different upstream hosts of the same model charge different rates. We flag it because a careless reading of billed cost alone would have produced a fake 54% cache saving. According to Alibaba Cloud's Model Studio documentation, Qwen offers implicit context caching on its native endpoint, which our routed path could not demonstrate.
Anthropic's zero is the cleanest example of a design boundary rather than a product gap. According to Anthropic's prompt caching documentation, a request must carry a cache_control marker for caching to engage, cache reads bill at 0.1x the base input rate, and the default cache lifetime is five minutes. Our implicit-only test never sends that marker, so zero cached tokens on Claude Sonnet 4.6 is exactly the expected result.
OpenAI is different again. According to OpenAI's prompt caching guide, caching applies automatically to prompts of 1024 tokens or more on its own API. Our prefix clears that floor comfortably, yet the routed GPT-4o path reported nothing. We tested the route, not the vendor's own endpoint, and we say so rather than converting a routing observation into a vendor verdict. Moonshot AI builds Kimi K2 and documents managed context caching on its own platform; that also did not surface through the route.
Nothing here is a quality claim. Caching changes input cost and latency only, and no output in this run was judged for accuracy. With that fixed, the ranked read across the cluster is:
The rule the matrix supports: never budget a caching discount from a vendor pricing page alone. Read cached_tokens or the hit and miss fields on your own second call, on the endpoint you will ship against. Two of our eight endpoints would be mispriced by trusting docs, and Qwen by trusting billed cost.
| Question | Page |
|---|---|
| What caching is and how prefixes match | What is prompt caching |
| DeepSeek's native cache, measured | DeepSeek context caching |
| Qwen's cache and the pricing artifact | Qwen context cache |
| Kimi's managed cache versus our routed zero | Kimi context caching |
| Cache pricing across vendors | Prompt caching pricing comparison |
| What routing does to a discount | OpenRouter prompt caching |
| ROI thresholds and break-even | Is prompt caching worth it |
| Reading and improving hit rate | LLM cache hit rate |
| Caching against the fine-tuning alternative | Prompt caching vs fine-tuning |
For the DeepSeek price table itself, see our DeepSeek cache discount page.
Does prompt caching make model output better? No. Caching affects input cost and latency only. We made no accuracy or quality comparison in this run, and none of these numbers should be read as a capability ranking.
Why did Claude and GPT-4o show zero cached tokens?
Our test measures implicit caching only. Anthropic requires an explicit cache_control marker, which we never sent, and the OpenAI result came through a routed path rather than OpenAI's own API where automatic caching is documented.
Do routers always break caching? No. DeepSeek's cache was lost through the router on 2026-07-28, but GLM-5 kept a 75% billed discount and MiniMax-M2.5 kept 62% on the same route in the same run. It is provider-specific.
Was Qwen's cheaper second call a cache hit? No. Qwen reported zero cached tokens both times. Call B matched Qwen's list price while call A billed about twice list, so the difference tracks provider-price variance on the routed marketplace.
Are the DeepSeek native cost figures billed amounts? No. They are computed from the measured hit and miss token split at DeepSeek's official published rates. Routed cost figures are billed values returned by the API.
How long do these results stay valid? Treat them as a 2026-07-28 snapshot. Routing topologies, upstream providers and cache TTLs change, so we re-verify this cluster quarterly and flag native re-verification as still outstanding for the routed models.
Seventeen calls, eight endpoints, one fixed ~1800-token prefix, 2026-07-28, $0.051 of routed spend. DeepSeek native on api.deepseek.com; everything else OpenRouter-routed and pending native re-verification. Implicit caching only. Single region. Raw per-call usage objects are preserved in the cluster evidence artifact.
Last verified: 2026-07-28
Author: Kevin Fan, Customer Success Manager. Kevin evaluates Chinese LLM API pricing and performance for cross-border teams.