For provider-by-provider contract fields and reconciliation states, see the LLM batch API comparison; this page owns the generic cost lever and adoption boundary.

Batch API: Save 50% on LLM API Costs

Does batch api save money on LLM API costs?

Yes, for the right workload shape: 50% based on Published batch-API discounts across the 6 providers that offer one (providerProfiles.batchDiscountPct) — asynchronous jobs only, not the synchronous API. It does not apply universally — see the applicability and tradeoff sections below before using it.

Verified 2026-06-21

Batch 40 · server-rendered decision evidence · verified 2026-08-27

Batch API eligibility and realized-savings evidence

Frozen inputs, formulas, provenance, and decision boundaries are visible in the initial HTML. Unsupported evidence fails closed as Unavailable.

Delay-tolerance routing ledger

Formula / scoring rule: Batch eligible = async-safe + deadline met + provider support + payload accepted; online residual remains uncached counterfactual.

Provenance: Frozen classification, extraction, content, summarization, eval, chatbot, and agent fixtures.

Frozen fixture / runVisible inputsField-level resultDecision boundaryState
classification
batch40-batch-api-m1-r1
5M labels; deadline 24h; user-blocking=falseAsync share 80% scenario; provider completion SLA Unavailable — not guaranteed in fixtureDiscount math is blocked if deadline guarantee is absent.Unavailable — not guaranteed in fixture
chatbot
batch40-batch-api-m1-r2
30K conversations; user-blocking=true; p95 response SLO 2sEligible share 0%; online residual 100%.Never batch user-blocking traffic merely for discount.ROUTED ONLINE — deadline fails.
evaluation
batch40-batch-api-m1-r3
100K prompts; deadline 72h; no external dependencyBatch candidate; exact discount Unavailable — provider/model-specific rate is not joinedEligibility and savings are separate fields.Unavailable — provider/model-specific rate is not joined

Module citation: OpenAI Batch API documentation.

Batch job atomicity and operations ledger

Formula / scoring rule: Cost/unique accepted = batch invoice + retries + storage/egress / (completed − duplicates); failed rows stay in numerator.

Provenance: 1K, 100K, and 1M JSONL jobs with invalid rows, duplicate IDs, reorder, cancellation, and expiry fixtures.

Frozen fixture / runVisible inputsField-level resultDecision boundaryState
1K job
batch40-batch-api-m2-r1
1,000 submitted; 7 invalid; 12 duplicates; 981 acceptedUnique accepted = 981 before model result validation.Deduplicate and validate JSONL before claiming savings.CALCULATED — settlement closed.
100K partial
batch40-batch-api-m2-r2
100K submitted; 2,400 failed; 1,100 retry subset; 700 duplicateCompleted unique candidates = 95,900; storage/egress Unavailable — not pricedDo not report effective discount without all job charges.Unavailable — not priced
1M expiry
batch40-batch-api-m2-r3
1M submitted; cancellation at 18h; result ordering changedExpiry refund/charge Unavailable — provider policy for this fixture is absentCancellation is not equivalent to free work.Unavailable — provider policy for this fixture is absent

Module citation: OpenAI Batch API reference.

Migration payback and invoice reconciliation

Formula / scoring rule: Payback months = implementation cost / (online bill − batch bill − batch operations); realized delta requires matched invoices.

Provenance: User inputs: 12 engineering hours at $150/h, $80/month monitoring, 40% eligible spend.

Frozen fixture / runVisible inputsField-level resultDecision boundaryState
implementation
batch40-batch-api-m3-r1
12h × $150; monitoring $80/mo; eligible spend $2,000/moOne-time $1,800; recurring ops $80; provider savings Unavailable — batch discount not verifiedDo not invent payback period from a generic discount.Unavailable — batch discount not verified
online residual
batch40-batch-api-m3-r2
60% online; 40% candidate batch; retries 3%Residual bill is calculable from selected model; retry invoice Unavailable — not matchedCounterfactual must use same workload and model.Unavailable — not matched
realized invoice
batch40-batch-api-m3-r3
online invoice INV-40A; batch invoice INV-40B; 30-day windowAttributable delta Unavailable — invoice line-item join is incompleteAdvertised savings never substitute for realized savings.Unavailable — invoice line-item join is incomplete

Module citation: All AI Ask pricing registry.

Estimate your async batch payback

How it works

Providers price a batch job — a file of requests submitted together and collected once the whole job completes — below the price of calling the same model synchronously one request at a time. The discount is a flat percentage off every model in the lineup, published per provider, not negotiated per volume. It applies to the full request (input and output tokens both), stacking on top of any prompt-caching discount already in effect on the same call.

Where it applies

Only jobs that can tolerate asynchronous turnaround — batch jobs typically return within 24 hours, not synchronously. Live chat, agents, and anything user-facing in real time cannot use it.

Batch discount by provider

ProviderBatch discount
OpenAI50% off
Anthropic50% off
Google50% off
xAI
DeepSeek
Mistral50% off
Groq50% off
Cerebras
Qwen
Amazon50% off
Z.ai
Meta

The tradeoff

Batch pricing is a different API shape, not a toggle on the one you are already calling: you submit a file of requests and poll for a completed job, which means retry logic, partial-failure handling, and a result-collation step you did not need on the synchronous endpoint. If your workload already runs on a queue (nightly enrichment, bulk classification, offline eval), that cost is close to free. If it does not, building the batch submission and polling path can take longer to pay for itself than the discount saves in the first month, and a workload that is not truly asynchronous (a user waiting on the other end) cannot use it at any discount.

Worked example

For classification at volume (tiny input in, single-label output out) at 5,000,000 calls/month, GPT-5 Nano runs $165/month at list price and $165/month once verbosity is priced in. See the full ranked table for this workload →

FAQ

Which providers offer a batch discount?
The providers on this site with a non-null batchDiscountPct in our provider profiles — see the per-provider table below for the published rate on each.
Can I combine batch pricing with prompt caching?
Where a provider supports both, yes — they apply to different parts of the bill (call pattern vs. repeated prefix) and stack rather than override each other.

Other levers

Prompt cachingModel verbosityContext trimmingCost calculator →