Claude offers two fundamentally different ways to get work done: interactive requests (with or without streaming) that return an answer now, and asynchronous batch jobs that return answers later. They are billed very differently, and sorting your workloads into the right bucket is one of the highest-leverage FinOps moves available.
Streaming does not change your bill
A common misconception is that streaming — receiving the response token-by-token as server-sent events — carries a premium. It does not. Anthropic's pricing page lists one set of standard per-token rates, and streaming is simply a delivery mode for the same synchronous request. You pay for input tokens and output tokens at the model's list price either way. Streaming matters for cost only indirectly: it is the recommended path for requests that run longer than about 10 minutes, and it lets your application show progress instead of timing out and retrying (retries are where real money leaks).
Batch is a genuine 50% discount
Anthropic's Message Batches API charges 50% of standard prices on both input and output tokens. That is not a negotiated enterprise rate — it is the published list price for asynchronous processing:
| Model | Standard (in / out, per MTok) | Batch (in / out, per MTok) |
|---|---|---|
| Claude Opus 4.8 | $5.00 / $25.00 | $2.50 / $12.50 |
| Claude Sonnet 5 (intro through Aug 31, 2026) | $2.00 / $10.00 | $1.00 / $5.00 |
| Claude Sonnet 5 (from Sep 1, 2026) | $3.00 / $15.00 | $1.50 / $7.50 |
| Claude Haiku 4.5 | $1.00 / $5.00 | $0.50 / $2.50 |
The operational terms are generous. A batch holds up to 100,000 requests or 256 MB. Most batches finish in under an hour; anything unfinished at 24 hours expires, and expired requests are not billed. Only requests that succeed are billed at all. Results stay downloadable for 29 days.
Batch stacks with prompt caching, so a shared prefix across thousands of batched requests can be cached on top of the 50% discount. Because a batch may take longer than five minutes to process, use the 1-hour cache duration for shared context inside batches.
Which workloads belong in which mode
The dividing question is latency tolerance, not workload size.
Keep interactive (streaming): chat assistants, agent loops where each step depends on the last, anything a human is watching. These cannot wait, so they pay standard rates — optimize them with caching and model choice instead.
Move to batch: nightly document classification, evaluation runs, content moderation backfills, embedding-adjacent enrichment, report generation, bulk summarization. If the consumer of the output is a database rather than a person, batch is usually free money. A workload that costs $10,000/month interactive costs $5,000/month batched — same models, same prompts.
A few features don't fit inside batches: stream: true itself, fast mode, and max_tokens: 0 cache pre-warming are all rejected with validation errors. Vision, tool use, system prompts, and extended thinking all work.
A platform caveat
Anthropic's Message Batches API is available on the first-party Claude API and Claude Platform on AWS, but not on Amazon Bedrock, Google Vertex AI, or Microsoft Foundry. Bedrock and Vertex offer their own cloud-native batch mechanisms at 50% off on-demand pricing (S3-based on Bedrock; BigQuery/Cloud Storage-based on Vertex). See the platform-by-platform batch map for details and constraints.
Where to go next
Read the Batch API discount explainer for mechanics, and the caching ROI walkthrough for the discount that stacks on top. The feature matrix shows what each platform supports.