29 October 2026 · Site Methodology & Pricing Notes · 6 min read
Our Batch API explainer has one line in its FAQ that's been sitting there unchecked for months: "providers usually give a completion target such as within 24 hours." Usually. I'd never actually pulled all three providers' current docs on the same day and compared the exact numbers side by side. So today I did. The discount turned out to be the boring, reassuring part. The deadline is where it gets interesting.
Checked straight from each provider's current pricing and batch docs, 2026-10-29: OpenAI's Batch API gives "a 50% cost discount compared to synchronous APIs." Anthropic's Message Batches API reduces "costs by 50 percent." Google's Gemini Batch Mode is "priced at 50% of the standard interactive API cost." Three competitors, three independent pricing teams, and all three landed on the exact same number, applied the same way to both input and output tokens.
| Provider | Standard → Batch example | Discount |
|---|---|---|
| OpenAI | Same per-token rate, halved | 50% |
| Anthropic | Same per-token rate, halved | 50% |
| Gemini 2.5 Pro | $1.25 → $0.625 in / $10.00 → $5.00 out per 1M | 50% |
Our Batch API savings calculator already assumes a flat 50% by default. That assumption holds up. No correction needed there.
This is the part that doesn't hold up. All three providers talk about a roughly one-day turnaround, and I assumed that meant the same contractual number everywhere. It doesn't.
OpenAI: the completion window parameter "can only be set to 24h," and "each batch completes within 24 hours." Hit that mark and the batch moves to an expired state -- firm, single number, no ambiguity in the docs.
Anthropic: "Batches expire if processing does not complete within 24 hours." Same number, same hard cutoff.
Gemini: "The target turnaround time is 24 hours, but in majority of cases, it is much quicker." Read only that sentence and you'd assume Gemini matches the other two. But the actual state-machine definition, a few paragraphs over in the same documentation, says something different: JOB_STATE_EXPIRED triggers only after the job "has been running or pending for more than 48 hours." Twenty-four hours is the marketing target. Forty-eight is the number that actually governs when Google will call a job dead.
Nobody builds retry logic around a provider's marketing copy on purpose. But if you've only ever skimmed the headline sentence of each provider's batch docs -- which is exactly what I'd done before today -- "24 hours" is the number that sticks, for all three. Build a pipeline that cancels and resubmits any batch job still open after 24 hours, and on OpenAI and Anthropic you're safe: a job still open at hour 25 really is stuck. On Gemini, you'd be cancelling and resubmitting jobs that are still inside their real allowance, possibly duplicating work and burning a second 50%-discounted run on top of a first one that was never actually going to fail.
On the billing side, there's actually good news and it's consistent across providers. OpenAI is explicit that when a batch expires, "you will be charged for tokens consumed from any completed requests" -- meaning anything that didn't finish isn't billed at all. Anthropic's batch reference says the same thing from the other direction: an expired request status means "you will not be billed for these requests." Both charge you for exactly what ran and nothing for what didn't. Gemini's docs don't state a billing rule for expired or incomplete requests either way, which isn't a red flag by itself, but it's a gap worth knowing about before you assume Gemini definitely matches the other two there too.
I added a footnote to the batch explainer flagging that "24 hours" is a target for Gemini, not a hard cap, and that the real enforced limit is 48. Beyond that one page, the actual habit I'm changing is bigger: when three competitors use the same round number in their marketing copy, I now treat that as three separate numbers to verify, not one number confirmed three times. They agreed on the discount. They didn't agree on the deadline, and the only way to know that was to stop trusting the headline sentence and go find the state-machine definition underneath it.
New to batch pricing in general? Start with the free API-cost guides.
Deploy it yourself: DigitalOcean — $200 free credit ↗ · Hostinger VPS ↗
Checked directly against developers.openai.com/api/docs/guides/batch, platform.claude.com/docs/en/build-with-claude/batch-processing, and ai.google.dev/gemini-api/docs/batch-mode, 2026-10-29. Reference figures, not live quotes -- confirm current terms on each provider's own docs before relying on a deadline for production retry logic.