Context caching is the difference between paying full price for the same tokens once and paying full price for them on every call. With Kimi models, the stable part of a prompt — the system instructions, the tool definitions, the reference documents — is recognised on repeat requests and billed at a reduced cache rate instead of the full input rate, so a prompt that was expensive only because it was long stops being expensive the moment it starts repeating. If you run agents, retrieval pipelines, or any workload that re-sends the same preamble all day, this is the biggest cost lever you have, and the current rates for Kimi models are worth checking against the model leaderboard before you commit to a design.
The reason this matters now is that long prompts stopped being an edge case. Agents carry entire codebases and running transcripts. Assistants read whole contracts instead of excerpts. Multi-turn conversations are re-sent in full on every turn, because that is how the API works. Input length has quietly become the dominant line on many inference bills, and the uncomfortable part is that the expensive portion of those prompts is, in most calls, identical to the call before it. That redundancy used to be simply the cost of doing business. Context caching turns it into a one-time charge instead of a recurring one, and Kimi’s implementation is straightforward enough that the real work sits on your side of the fence: structuring prompts so the cache can actually hit.
What context caching actually stores
Every request to a large language model has two phases. First the model reads the prompt — all of it, every token — before it can write the first word of the answer. That reading is real compute, and per-token input pricing is how it shows up on your invoice. A context cache stores the internal state produced by reading a prompt prefix, keyed to the exact text of that prefix. When the next request begins with the same text, the stored state is reused instead of recomputed, and the reused tokens are billed at the cache-hit rate rather than the full input rate.
Three properties decide whether any of this helps you. The match must be exact: change one character anywhere in the prefix and every token after it becomes a miss. The cache has a lifetime: entries expire after a window of inactivity, so a job that runs once a week collects nothing. And there is normally a minimum length before a prefix is even eligible. The exact thresholds for Kimi’s implementation live in its API documentation, and they are worth reading before you design around them — they are precisely the kind of detail that changes without anyone announcing it.
The arithmetic of a repeated prefix
Once caching is in play, the input side of every call splits in two: tokens the cache covered at the hit rate, and tokens it did not, at the full rate. What you save depends on two ratios — how much of each prompt repeats, and how many of your calls are repeats. The arithmetic is unforgiving in both directions. If the repeated preamble makes up most of every request and your traffic is dominated by repeat calls, the effective input cost per call collapses toward the cache rate, and the one full-price call that warmed the cache amortises to nothing within the first few repeats. If the preamble is short, or every request is genuinely unique, the cache changes nothing.
That is why the first thing to do with any caching rollout is measure the split rather than assume it. The current hit and miss rates for Kimi models, along with each model’s context window, are listed on the provider page:
How to structure a prompt so the cache actually hits
Cache-friendliness is an ordering problem. Everything that is byte-identical between calls goes at the front: the system prompt, the tool schemas, the static reference documents. Everything that varies goes at the back: the user’s message, the retrieved chunks, the latest tool output. The cache matches prefixes, so a single variable token sitting early in the prompt — a timestamp, a request ID, today’s date interpolated into the instructions — cuts off everything after it, and you will pay full price for a prompt that is almost entirely identical to the last one.
The fixes are mundane. Take the timestamp out of the system prompt and pass it in the user turn. Keep tool definitions in a fixed order, because a serializer that reorders them between calls is silently invalidating your prefix. Let conversations grow by appending rather than rewriting, which they naturally do. And if you summarise a long transcript partway through to save tokens, understand that you are trading a cache hit for a shorter prompt — sometimes worth it, sometimes not, but make the trade deliberately.
Which workloads gain, and which don’t
The pattern that benefits is any workload where the expensive part of the prompt is the same every time. Agent loops are the cleanest case: the system prompt and tool definitions never change, and the transcript only grows, so every turn after the first is mostly cache hits. Document review is similar — one long corpus, many questions against it — and so is batch evaluation, where the same instruction set runs against case after case in a row.
The pattern that gains nothing is the one-shot request with a unique prompt: a different preamble per user, a system prompt personalised with account data, or short prompts that never approach the minimum cacheable length. Caching also does nothing for output tokens, and on generation-heavy tasks output is a large share of the bill — so if your costs are dominated by what the model writes rather than what it reads, a cache is not your lever. Knowing which side of that line your workload sits on is worth an hour of analysis before you restructure anything.
Which Kimi model should carry the prompt
Within the Kimi family, the models differ in context window, pricing, and the trade-offs they were tuned for, and the right choice for a cache-heavy workload is not automatically the right choice for a short-prompt one. The practical approach is to shortlist by what the workload actually needs — usable context length, input price, output price — and then compare the candidates side by side instead of from memory, because both the lineup and the rates move more often than most teams re-check them. The leaderboard is the fastest way to run that comparison in one place:
How to tell the cache is actually working
Verification is unglamorous and essential. The API response reports token usage, and a cache-aware response distinguishes tokens served from the cache from tokens billed in full — if that split is not moving, nothing else below it matters. The test to run on every integration is the same: send one long request, send the identical request again, and compare the usage objects. The second call should show most of the prefix as cached. If it does not, the usual suspects, in order of likelihood: something in the preamble changes between calls (hunt the timestamp), the prefix sits below the minimum length, or calls are spaced far enough apart that entries expire before reuse.
One more habit worth building: watch the input split over a week, not a single request. Hit rates that look healthy in a test can evaporate in production, where a scheduler injects a date, a load balancer spreads traffic across prompt variants, or an A/B test quietly forks the system prompt. The cache does not fail loudly. It just stops discounting, and only the invoice notices.
The takeaway
Context caching does not make long prompts cheap; it makes repeated long prompts cheap, and that distinction should drive everything else. If your workload re-sends the same preamble call after call — agents, document pipelines, long multi-turn sessions — then structuring prompts for prefix stability is the highest-leverage engineering hour you can spend, and Kimi’s caching makes the discount real rather than theoretical. If every request is unique, no amount of caching changes your economics, and you should optimise output or prompt length instead. Check the current rates, measure the hit rate from the very first integration, and treat the cache as a production dependency — because the moment your cost model assumes it, it is one.
Sourcing note: Feature behaviour, rates, and thresholds described here reflect Kimi’s context caching as documented by the provider and listed on the OrcaRouter pages linked above, checked on 2026-09-07. Pricing and cache terms change frequently; verify current figures before making architecture decisions. No third-party benchmarks were used; operational observations are the author’s own.


