Batch and caching, explained
Short answer: list prices are negotiable only by changing when or how you call. Three mechanisms do that: a batch discount — almost always -50% — for asynchronous work; off-peak windows on the rare providers that publish them; and prompt caching, which reads repeated input at 50-97.5% off in exchange for a write fee. All figures below come from official pages in the Sep 7 2026 snapshot, cited per table.
First: what “task” means here
Throughout this site, a task is one finished piece of work — a draft, a summary, a fix. For API math we size a task at roughly 100k tokens of input + output combined; the reference pay-as-you-go blend is $8 per million, so a task costs about $0.80. The full definition and the break-even logic are in effective cost per task, explained. The discounts in this guide work by moving that $0.80 — not by changing what the task is.
Batch discounts: the -50% family
A batch discount is a published percentage off list price for sending work to the provider's asynchronous batch endpoint instead of real-time chat completions. You trade immediacy for price: results come back on the provider's window, not the caller's. In our Sep 7 snapshot, every provider that publishes a batch modifier publishes -50% — across 10 OpenAI model rows (gpt-4.1 family through gpt-6-astra and the o-series), Anthropic's Fable 5.1, Google's Gemini 2.5 Pro, and Mistral Large. Gemini 3.8 Flash is the one approximate row: Google's wording is “batch/flex about half” (priority is the opposite trade, about 1.8x).
| Model | List in / out $/M | Batch blend $/M | Published batch rate | Source (accessed 2026-09-07) |
|---|---|---|---|---|
| OpenAI gpt-5.6-luna | $0.20 / $1.20 | $0.23 | -50% | developers.openai.com API pricing table |
| OpenAI gpt-5.6-terra | $2.00 / $12.00 | $2.25 | -50% | developers.openai.com API pricing table |
| OpenAI gpt-5.6-sol | $4.00 / $20.00 | $4.00 | -50% | developers.openai.com API pricing table |
| OpenAI gpt-6-astra | $10.00 / $50.00 | $10.00 | -50% | developers.openai.com API pricing table |
| OpenAI o3 | $2.00 / $8.00 | $1.75 | -50% | developers.openai.com API pricing table |
| Anthropic Fable 5.1 | $10.00 / $50.00 | $10.00 | -50% | claude.com/pricing |
| Google Gemini 2.5 Pro | $1.25 / $10.00 | $1.72 | $0.625 / $5.00 — both halved | ai.google.dev/gemini-api/docs/pricing |
| Google Gemini 3.8 Flash | $0.75 / $3.75 | ~$0.75 | “batch/flex about half” (approximate wording) | ai.google.dev/gemini-api/docs/pricing |
| Mistral Large | $0.50 / $1.50 | $0.38 | -50% (“Batch work reduces price by 50%”) | mistral.ai/pricing |
| Batch blend = our blended $/M — (3 x input + output) / 4 — x (1 - published discount). The blend is Token Perks arithmetic, not a provider figure. The full per-row Batch column on the leaderboard is computed the same way from the same dated rows. | ||||
Batch pays when nobody is waiting: embeddings backfills, weekly summarization, eval suites, overnight migrations. It is the wrong tool for anything interactive.
Off-peak windows: exact hours, rare providers
In our Sep 7 snapshot, DeepSeek is the only token-priced API provider with a complete published peak/off-peak schedule — and it is precise: peak is 01:00-04:00 and 06:00-10:00 UTC, Monday through Friday; all other hours are off-peak; off-peak rates are exactly half of peak (api-docs.deepseek.com/quick_start/pricing/, accessed 2026-09-07). Alibaba Cloud's Hong Kong Model Studio table adds region-specific night discounts at 22:00-08:00 UTC+8 (alibabacloud.com Model Studio pricing docs, accessed 2026-09-07).
| Model | Input peak / off-peak | Output peak / off-peak | Cache-hit input off-peak |
|---|---|---|---|
| deepseek-v4-flash | $0.44 / $0.22 | $1.32 / $0.66 | $0.007 |
| deepseek-v4-pro | $1.32 / $0.66 | $3.96 / $1.98 | $0.022 |
| All per 1M tokens; peak cache-hit input is double the off-peak figures shown ($0.014 / $0.044). Source: api-docs.deepseek.com/quick_start/pricing/, accessed 2026-09-07. | |||
The compounding effect is easy to miss: on v4-flash, an off-peak request that also hits cache pays $0.007/M on input against $0.44 at a peak miss — about 98% off the same tokens at the worst possible time. Scheduled agent work that can wait until off-peak should; work that can't should at least keep its prefix stable so it still hits cache.
Prompt caching: the write fee is the whole question
Caching reuses the prefix of a repeated prompt — system instructions, retrieved documents, a long file you re-ask about. Per-row terms, all accessed 2026-09-07:
| Provider / model | Write fee | Read price | TTL | Min prompt |
|---|---|---|---|---|
| Anthropic — Sonnet 5, Opus 5, Haiku 4.5 | 1.25x input (5m) / 2x (1h) | 0.1x input (90% off) | 5m default, free refresh on use; 1h option | 1,024-4,096 tok |
| Anthropic — Fable 5.1 | 1.25x (5m) / 2x (1h) | 0.025x input (97.5% off) | 5m default; 1h option | 512 tok |
| OpenAI — gpt-5.6 trio, gpt-6-astra | 1.25x input | 0.1x input (90% off) | 30m, refreshed on reuse | 1,024 tok |
| OpenAI — gpt-5.5 / 5.2 / 5-mini | not published (no write charge shown) | 90% off cached input | not published (30m-class typical) | 2,048 tok |
| OpenAI — gpt-4.1 family / o3 | not published | 75% off (o1: 50%) | not published | 2,048 tok |
| Moonshot — kimi-k3 / K2.7 Code | not shown (hit/miss rates only) | $0.30 vs $3.00 miss (K3); $0.19 vs $0.95 (K2.7) | not published (system-managed) | 256 tok |
| DeepSeek — v4 models | none shown (automatic) | $0.007-0.014/M vs $0.22-0.44 miss | not published (docs: cleared within hours-days) | not published |
| Google — Gemini 2.5 Pro / 3.1 Pro Preview | not shown (cached rate listed per model) | $0.125/M (2.5 Pro, up to 200k); $0.20/M (3.1 Pro, up to 200k) | not published in snapshot | 2,048 / 4,096 tok |
| Groq — API (console list) | none (“no additional cost”) | 50% off cached input | 2 hours without use | 128-1,024 tok |
| Alibaba Cloud Model Studio (Qwen) | 125% of input (explicit) / 100% (implicit) | 10% of input, explicit tier (90% off) | 5m, resets on hit (explicit) | 1,024 tok |
| MiniMax — M2.7 | $0.375/M | $0.06/M vs $0.30 input (no % stated) | not published | not published |
| Mistral — Large | not published | up to 90% off repeated input | not published | not published |
| Sources: platform.claude.com prompt-caching docs; developers.openai.com API pricing; platform.kimi.ai/docs/pricing; api-docs.deepseek.com; ai.google.dev/gemini-api/docs/pricing; console.groq.com/docs/prompt-caching; alibabacloud.com Model Studio docs; platform.minimax.io; mistral.ai/pricing. All accessed 2026-09-07. Where the official page states no figure, the cell says so. | ||||
The break-even intuition, worked once so you can redo it with your own mix. On Sonnet 5 (input $2/M, 5-minute cache write $2.50/M, cache read $0.20/M), a 10k-token prefix costs $0.025 to write and $0.002 to read on each hit; uncached the same 10k tokens cost $0.02 every call. The write premium (0.25x base) is smaller than one hit's saving (0.9x base), so a single cache read inside the TTL already pays for the write — two for the 1-hour tier. The question is almost never “how many repeats”; it is “does it repeat within 5 minutes at all.” High-frequency agents reuse prefixes well inside the window; occasional callers pay the premium for nothing. This is Token Perks arithmetic on provider-published rates, not a provider figure.
Two caveats the docs themselves make load-bearing. First, minimums are real: under the minimum prompt size nothing caches, and Anthropic notes no error is returned — you only see it in the usage fields. Second, cache reads discount input only. Output tokens never get cheaper, so output-heavy work barely moves.
The >200k repricing trap: the surcharge covers everything
Google and xAI both price long-context requests in two brackets split at a 200k-token prompt size — and crossing the line reprices the whole request, not just the overflow. From the same Sep 7 sources:
| Model | In / out up to 200k | In / out above 200k | Cached in, both brackets |
|---|---|---|---|
| Google Gemini 2.5 Pro | $1.25 / $10.00 | $2.50 / $15.00 | $0.125 / $0.25 |
| Google Gemini 3.1 Pro Preview | $2.00 / $12.00 | $4.00 / $18.00 | $0.20 (above 200k: no cached rate published) |
| xAI grok-4.6 | $2.00 / $6.00 | $4.00 / $12.00 | $0.50 / $1.00 |
| xAI grok-4.5 | $2.00 / $6.00 | $4.00 / $12.00 | $0.30 / $0.60 |
| xAI grok-4.3 | $1.25 / $2.50 | $2.50 / $5.00 | $0.20 / $0.40 |
| xAI grok-build-0.1 (coding) | $1.00 / $2.00 | $2.00 / $4.00 | $0.20 / $0.40 |
| All per 1M tokens. xAI's docs state a prompt over the threshold bills the whole request at the higher rate; Google's table prices the above-200k bracket as a whole. Sources: ai.google.dev/gemini-api/docs/pricing; docs.x.ai/docs/models; accessed 2026-09-07. | |||
The practical rules: budget your agent's context against the bracket, not the model's maximum window; trim retrieved-document blocks to stay under 200k on Google and xAI; and note the brackets are provider-specific — DeepSeek and Moonshot price million-token contexts in the Sep 7 snapshot without a published 200k surcharge.
What is not published
- Cache TTLs for DeepSeek, Moonshot, older OpenAI rows, and MiniMax — checked, no figure on the pricing pages (Moonshot is system-managed with no TTL control; DeepSeek's docs say the cache is usually cleared within hours to days).
- Batch completion windows on the pricing pages — the discount is published; the turnaround lives in batch-specific docs.
- Any published off-peak schedule at OpenAI, Anthropic, Google, xAI, Moonshot, Groq, or Mistral in the Sep 7 pass.
- Batch-plus-caching stacking policy outside Anthropic's own docs statement.
- One dated drift to watch: Gemini 3.8 Flash's cached input rises from $0.075/M to $0.15/M on Jan 1, 2027, per Google's table.
Which lever, when
- Nobody waiting? Batch: a -50% modifier is published on 14 tracked rows (one of them as “about half”).
- Same long prefix every call? Cache it — one hit inside the TTL already pays the write fee where a write fee exists; DeepSeek and Groq have none.
- Schedulable work? Off-peak where published: DeepSeek's Mon-Fri 01:00-04:00 / 06:00-10:00 UTC peak window is exactly 2x the rest of the week.
- Context over 200k on Google or xAI? Price the upper bracket first — the surcharge hits the whole request.
FAQ
What is a batch discount?
A published percentage off list price for work you submit to the provider's batch endpoint — an asynchronous lane — instead of sending it through real-time calls. The common rate is exactly -50%: OpenAI publishes it across most model rows, and Anthropic (Fable 5.1), Google (Gemini 2.5 Pro), and Mistral Large carry it too. The completion window is the provider's to set; check their batch docs. Computed batch prices per model are in the Batch column of the leaderboard.
Does the batch discount apply to real-time requests?
No. The published batch modifier applies to the batch endpoint. Real-time requests pay list price unless another mechanism (caching, an off-peak window, a promo) applies. That is the trade: batch is for work with no human waiting on the other side.
What is prompt caching and what does it cost?
You pay to write a reusable prompt prefix to cache, then discounted rates to read it back. Anthropic and the newer OpenAI models charge 1.25x the input price for a standard write (2x for Anthropic's 1-hour option) and read at 0.1x input — 0.025x on Fable 5.1. Groq charges nothing to write and takes 50% off cached input. DeepSeek and Moonshot discount cache-hit input automatically, with no write fee shown. Several providers also set a minimum prompt size to be cacheable at all, from 256 tokens (Kimi) to 4,096 (some Claude and Gemini models).
Which providers publish cache TTLs?
Anthropic: 5 minutes by default, refreshed free on use, with a 1-hour option at extra cost. OpenAI: 30 minutes, refreshed on reuse, stated for the gpt-5.6 trio and gpt-6-astra — not stated per model on older rows. Groq: 2 hours without use. Alibaba Cloud Model Studio: 5 minutes, resets on hit. Not published: DeepSeek (docs note the cache is usually cleared within hours to days), Moonshot (system-managed), and Google's per-model cache lifetime in our snapshot.
What is the 200k-token surcharge trap?
Google and xAI both publish two price brackets split at a 200k-token prompt size, and the higher bracket bills the whole request — not just the tokens above the line. On grok-4.3, a 200,001-token prompt pays $2.50/M on every input token instead of $1.25/M: double the input line for one token over. Check which bracket your long-context agent actually lands in before pricing it.
Can batch and caching discounts combine?
On Anthropic, yes in principle: the caching docs state the multipliers 'stack with other pricing modifiers such as the Batch API discount.' For other providers our snapshot does not record a stacking policy — treat combination as unpublished until confirmed in their docs.
How fresh are these numbers?
Every figure comes from the Sep 7 2026 snapshot of official pricing and docs pages, cited per row. Re-check the provider page before building on any of them — Google already shows a scheduled cached-rate increase for Gemini 3.8 Flash on Jan 1, 2027.
Next: Effective cost per task, explained · Compare discounted rates against live list prices on the leaderboard
Cite this page
Token Perks. “Batch and caching, explained.” Research snapshot Sep 7 2026. https://token-perks.com/guides/batch-and-caching-explained/
CC-BY-4.0 with attribution. Includes the snapshot date so readers know how fresh the numbers are.