All three major LLM providers offer 50% off their standard rates through batch APIs. Submit your requests asynchronously, accept up to a 24-hour return window, and pay half price. The trade is the same everywhere. Whether it's worth taking depends entirely on your workload.
What every batch API offers
The terms are nearly identical across OpenAI, Anthropic, and Google: 50% off input and output tokens, results delivered within 24 hours, async polling to retrieve completed jobs. Most batches complete in 1 to 6 hours in practice.
| Provider | Model | Standard in / out (/M tokens) | Batch in / out (/M tokens) |
|---|---|---|---|
| OpenAI | GPT-5.4 | $2.50 / $15.00 | $1.25 / $7.50 |
| Anthropic | Claude Haiku 4.5 | $1.00 / $5.00 | $0.50 / $2.50 |
| Anthropic | Claude Sonnet 5 | $3.00 / $15.00 | $1.50 / $7.50 |
| Gemini 3 Flash | $0.50 / $3.00 | $0.25 / $1.50 | |
| Gemini 3.1 Pro | $2.00 / $12.00 | $1.00 / $6.00 |
OpenAI also applies the 50% batch discount to smaller tiers (GPT-5.4 Mini, Nano) and to o-series models. Anthropic's Message Batches API supports claude-fable-5, claude-opus-5, claude-sonnet-5, and claude-haiku-4-5. One notable capability: batch mode unlocks up to 300K output tokens per request on select Anthropic models, well above the 128K synchronous cap, which matters for jobs that generate long outputs per item.
The break-even question
Batch API is not a default win. Two checks determine whether the tradeoff makes sense:
Does your user need a response in under 10 seconds? If yes, batch is wrong regardless of cost. Once a batch job is submitted, there's no fast-path for individual items inside it.
Do you process enough volume to feel the savings? At 20 API calls per day, saving 50% on a $0.01 request means $0.10 per day, or $3 per month. The overhead of managing batch state (polling for completion, handling per-item failures, reconciling partial results) costs more than that in developer time. At 1,000 or more calls per day, the arithmetic looks different.
The 50% discount is permanent as long as you accept async delivery. There's no volume tier to unlock.
Three workload examples
Document classifier at 1,000 docs/day
A compliance team uploads contracts each morning. Documents average 5,000 tokens; the classifier returns 100 tokens per document (a category label with reasoning). Results are needed before afternoon review, not before the upload is acknowledged.
Model: Claude Haiku 4.5
| Daily cost | Monthly cost | |
|---|---|---|
| Real-time (sync) | 5M in × $1.00/M + 0.1M out × $5.00/M = $5.50 | $165.00 |
| Batch API | 5M in × $0.50/M + 0.1M out × $2.50/M = $2.75 | $82.50 |
Savings: $82.50/month. The change is a single JSONL file submission replacing sequential API calls. The classification logic itself stays identical.
Eval run at 500 test prompts per week
A solo dev runs 500 prompts through a new model every Friday to catch regressions before a release. Prompts average 2,000 tokens; expected outputs average 500 tokens.
Model: GPT-5.4
| Per run | Monthly (4 runs) | |
|---|---|---|
| Real-time (sync) | 1M in × $2.50/M + 0.25M out × $15.00/M = $6.25 | $25.00 |
| Batch API | 1M in × $1.25/M + 0.25M out × $7.50/M = $3.13 | $12.50 |
Savings: $12.50/month. Eval pipelines are the clearest case: submit Friday morning, check results by afternoon. The 24-hour window is irrelevant when your entire review cycle runs over several days. The Node.js CI eval pipeline setup covers how to structure this kind of test harness.
Content tagger at 10,000 items/day
An e-commerce builder auto-tags product descriptions during a nightly import. Average input: 500 tokens; average output: 50 tokens (structured tag JSON).
Model: Gemini 3 Flash
| Daily cost | Monthly cost | |
|---|---|---|
| Real-time (sync) | 5M in × $0.50/M + 0.5M out × $3.00/M = $4.00 | $120.00 |
| Batch API | 5M in × $0.25/M + 0.5M out × $1.50/M = $2.00 | $60.00 |
Savings: $60.00/month. At 10,000 items processed nightly, the pipeline is already dictated by the scheduler. The batch discount is free: you'd be queuing requests to stay within rate limits anyway.
Stacking with prompt caching
Batch and prompt caching are additive on Anthropic models. If your batch jobs share a large static system prompt (instructions, output schema, few-shot examples), adding cache_control to that block brings cached reads down to 10% of the base input rate.
On Claude Haiku 4.5: a 2,000-token static instruction block costs $0.0020 per request at standard input rates. As a cached read, that drops to $0.0002. At 1,000 batch requests daily, caching that prefix saves $1.80 per day on top of the batch discount, adding up to $54/month. The exact conditions under which caching pays off, including the TTL math and traffic-shape requirements, are covered in the prompt caching break-even analysis.
OpenAI does not expose explicit cache control on batch jobs; caching is automatic and does not stack with the batch discount in a way you can configure independently.
Subscription vs API
For solopreneurs paying for a Claude or ChatGPT subscription, it helps to be clear about what that actually covers.
| Provider | Cheapest batch tier | Consumer subscription | What the subscription covers |
|---|---|---|---|
| Anthropic | $0.50 / $2.50 /M (Haiku batch) | Claude Pro $20/mo, Max $100-200/mo{target="_blank" rel="noopener"} | Your personal claude.ai and Claude Code sessions only; your app's API calls are billed separately |
| OpenAI | From $1.25 / $7.50 /M (GPT-5.4 batch) | ChatGPT Plus $20/mo, Pro $200/mo{target="_blank" rel="noopener"} | Your personal ChatGPT access; API balance is a separate account |
| $0.25 / $1.50 /M (Gemini 3 Flash batch) | Gemini Advanced ~$20/mo{target="_blank" rel="noopener"} (Google One) | Personal Gemini access; AI Studio API quota is separate |
None of these subscriptions fund your batch pipeline. API tokens are always billed from your API balance, regardless of which consumer plan you hold. The practical break-even on subscriptions: Claude Max at $100-200/month makes sense if your Claude Code sessions alone would exceed that in API charges. For the batch jobs themselves, the math is always API-direct.
When to skip batch API
Interactive and chat features. Any response a user is actively waiting for needs real-time delivery. Batch has no fast-path override for individual items once submitted.
Streaming required. Batch results arrive as completed documents. There is no token-by-token streaming from a batch job result.
Low volume. Below about 500 requests per day, absolute savings at most tiers fall under $5/month. Managing batch job state, polling, and per-item retry logic costs more than that in engineering time at small scale.
Preview or unsupported models. Newer or provider-specific preview models may not support the batch endpoint. Verify before restructuring your pipeline around it.
The decision checklist
Use batch API when all four of these apply:
- Your workload is async by nature (nightly job, scheduled pipeline, background processing)
- You process 500 or more requests per run or per day
- Each request is independent (no item needs results from another item to complete)
- Results within 24 hours is acceptable
At those conditions, 50% off compounds steadily. The LLMTest proxy logs actual vs batch cost per call automatically, so you can verify real savings match the arithmetic after your first batch run. For how batch fits into a full production cost model across workload types, the LLM cost per feature breakdown covers four patterns including extraction and summarization where the batch discount has the highest relative impact.
To test batch throughput and compare costs across providers for your specific workload, start with LLMTest.