The Message Batches API halves both input and output token prices. The catch: results land asynchronously, within 24 hours. Here's the actual math on when that trade pays off.
| Model | Real-time input / 1M | Batch input / 1M | Batch output / 1M |
|---|---|---|---|
| Claude Opus 4.8 | $5.00 | $2.50 | $12.50 |
| Claude Sonnet 5 | $3.00 | $1.50 | $7.50 |
| Claude Haiku 4.5 | $1.00 | $0.50 | $2.50 |
Batch pricing is a flat 50% off the standard real-time rate for both input and output tokens, same discount ratio on every model. Prices as of 2026-07 — confirm current numbers at platform.claude.com/docs/en/about-claude/pricing.
You submit a set of requests as one batch job instead of individual API calls. Anthropic processes them asynchronously — most batches finish in well under an hour, but the SLA is up to 24 hours, and there's no guarantee of a fixed turnaround. You poll for completion (or use a webhook) and pull results once the job is done. There's no synchronous response — this only works for workloads that don't need an answer in the same request/response cycle.
Say you're classifying 50,000 support tickets a night — roughly 500 input tokens and 50 output tokens each on Sonnet 5:
| Approach | Cost for 50K tickets |
|---|---|
| Real-time API calls | $150.00 |
| Batch API | $75.00 |
Exactly 50% cheaper — the ratio holds regardless of volume since it's a flat rate cut, not a volume discount. At this scale that's $75/night, or roughly $27K/year, saved just by accepting async delivery.
Use batch for anything that doesn't need a human waiting on the other end: classification sweeps, bulk summarization, dataset labeling, nightly report generation, backfilling embeddings-adjacent text tasks, or any pipeline job that already runs on a schedule. If the workload is already async in your system (a cron job, a queue worker), batch is close to a free 50% cut with no downside.
Skip batch for anything interactive — chat, coding agents, live customer-facing requests — where a user or another process is blocked waiting on the response. A 24-hour SLA (even if actual turnaround is usually much faster) makes batch unusable for real-time UX. Batch also can't be combined with true streaming responses, since the whole point is decoupling the request from an immediate response.
Batch and prompt caching address different costs and can stack: caching cuts the price of a repeated prefix, batching cuts the price of the whole call. A high-volume, prefix-heavy batch job (e.g. the same long system prompt across 50,000 classification calls) gets both discounts at once for the biggest combined savings.
Use the full calculator to price out real-time costs for your workload, then halve the input and output totals to estimate the batch equivalent. See also: Claude Code cost and subscription vs API pricing if you're comparing against interactive usage instead.