Batch processing is the largest single discount in the LLM market, and it is the one most teams never turn on. OpenAI, Anthropic, Google and xAI all halve both input and output rates for requests that can wait up to 24 hours. Not a promotional rate, not a tier you have to qualify for — a permanent 50% cut on the same models, the same context windows and the same outputs, in exchange for latency.
The arithmetic is brutal in the best way. A job that costs $400 a night costs $200 in batch. Run it for a year and the difference is $73,000. Most teams that run nightly jobs already have the workload; they simply submit it synchronously because that is what the tutorial showed.

| Provider | Batch support | Discount | Notes |
|---|---|---|---|
| OpenAI | All 13 models | 50% off input and output | Results within 24 hours |
| Anthropic | All 5 models | 50% off input and output | Results within 24 hours |
| All 6 models | 50% off input and output | Results within 24 hours | |
| xAI | Both Grok models | 50% off input and output | Results within 24 hours |
| DeepSeek | None | — | Off-peak hours bill at 50% instead |
Four of the five providers in this dataset treat batch as a first-class tier. DeepSeek is the exception: it has no batch API, and instead discounts requests outside peak hours. The economics are similar, but the trigger is different — you cannot submit a batch at 2 p.m. and get the discount, you have to wait for the window.
Take a realistic nightly workload: 10,000 requests, each with 10,000 input tokens and 2,000 output tokens. That is 100 million input tokens and 20 million output tokens per night.
| Model | List price / night | Batch / night | Annual list | Annual batch | Saved |
|---|---|---|---|---|---|
| GPT-6 Astra | $2,000 | $1,000 | $730,000 | $365,000 | $365,000 |
| Claude Fable 5.1 | $2,000 | $1,000 | $730,000 | $365,000 | $365,000 |
| GPT-6 Sol | $400 | $200 | $146,000 | $73,000 | $73,000 |
| Claude Sonnet 5 | $400 | $200 | $146,000 | $73,000 | $73,000 |
| Gemini 3.8 Flash | $150 | $75 | $54,750 | $27,375 | $27,375 |
| Grok 4.3 | $175 | $87.50 | $63,875 | $31,937 | $31,937 |
| GPT-6 Luna | $20 | $10 | $7,300 | $3,650 | $3,650 |
The saving scales with the model tier, which produces a counter-intuitive conclusion: batch on an expensive model often costs less than synchronous calls on a cheap one. GPT-6 Astra in batch is $1,000 a night; GPT-6 Sol at list is $400. The expensive model stays expensive — but the gap between tiers narrows by half, which changes which tier you should use for the job.
The discount is real, and it is unusable for anything a human is waiting on. Batch fails for:
The test is simple: if the result is still useful tomorrow morning, it belongs in batch. If it is not, it does not.
| Workload | Typical volume | Why it fits |
|---|---|---|
| Nightly enrichment | 10K–1M records | Results needed tomorrow, not now |
| Classification backfill | Any historical set | One-off, no user waiting |
| Embedding refresh | Corpus-sized | Runs on a schedule |
| Evaluation runs | Hundreds to thousands | Offline by definition |
| Report generation | Daily or weekly | Deadline is the morning |
| Synthetic data creation | Large, bursty | No latency requirement at all |
| Content moderation sweeps | Retrospective | Batch by nature |
1. Make requests idempotent. Attach your own request ID to every line so a retried job does not double-write results. Batch jobs fail in the middle, not at the start.
2. Split by failure domain. A single 500,000-line job that fails at line 400,000 is a bad afternoon. Chunk into 10,000-line jobs so a failure costs one chunk, not the night.
3. Budget for the tail. Most batch results return in minutes to hours, but the contract is 24 hours. Do not schedule a downstream job that depends on batch output to start one hour after submission.
4. Track cost per chunk. Batch bills per token like everything else; a chunk that silently grows its prompt size will show up as a cost anomaly, not a latency one.
5. Keep a synchronous fallback. When a batch job misses its window, the fallback is either a delayed report or a synchronous retry for the affected records — decide which before you need it.
Both discounts exist on the same request, but the safe planning assumption is the simpler one: batch halves the list rate. Build the forecast on that number, and treat any cache saving as upside. Teams that budget for stacked discounts tend to discover the interaction the hard way, in a month where the invoice is 30% above plan.
50% on both input and output tokens for OpenAI, Anthropic, Google and xAI. DeepSeek offers no batch API but discounts off-peak requests by 50% instead.
Most results return within hours, but the contractual window is 24 hours. Plan downstream jobs around the window, not the average.
No. Batch returns complete results at the end of processing, which is why it cannot serve interactive interfaces.
Yes on OpenAI, Anthropic, Google and xAI — every model in this dataset from those four providers supports it. DeepSeek supports none.
Model your own nightly job in the free LLM cost calculator — it applies the batch discount per model, and flags the ones that do not offer it.