← Back to all comparisons

Compare asynchronous LLM batch contracts and fixed-job economics

LLM Batch APIs Compared — OpenAI, Anthropic, Gemini, and More

Batch APIs are asynchronous contracts, not automatic discounts or unlimited queues. Compare upload and result format, eligible endpoint and model, request and queue limits, completion or expiry, cancellation, result ordering, failures, and usage reconciliation for the exact job. A cost result is Unavailable when rates, usage, or request-result identity do not join. Verified 2026-09-02.

Verified 2026-09-02 — source

Compare asynchronous batch formats, eligibility, limits, completion, cancellation, result identity, and fixed-job economics. Qualitative demand: dedicated cross-provider batch API comparisons were reviewed 2026-09-02; exact US monthly volume is unavailable.

Evidence boards · verified 2026-09-02

Intent answer: Batch APIs are asynchronous contracts, not automatic discounts or unlimited queues. Compare upload and result format, eligible endpoint and model, request and queue limits, completion or expiry, cancellation, result ordering, failures, and usage reconciliation for the exact job. A cost result is Unavailable when rates, usage, or request-result identity do not join. Verified 2026-09-02.

Demand evidence: Qualitative demand: dedicated cross-provider batch API comparisons were reviewed 2026-09-02; exact US monthly volume is unavailable.

Scope boundary: Compare asynchronous batch formats, eligibility, limits, completion, cancellation, result identity, and fixed-job economics. Exact provider, seller, serving host, account/tier, endpoint, model/snapshot, region, feature, and evidence identity are required; unresolved joins render Unavailable.

Batch-contract normalizer

Deterministic formula / rule: batch eligible = exact provider/host/model/endpoint + accepted payload + limits + completion/expiry + result identity; undocumented fields stay unavailable.

Boundary: Owns asynchronous cross-provider contracts; syntax, provider rates, and generic adoption strategy remain with their owners.

Frozen scenarioExact identity and evidence fieldsResultState
JSONL uploadroute=/compare/llm-batch-api; owner=batch-api; provider/seller/host/account/tier/endpoint/model/snapshot/region/feature/request=batch-api; scenario=JSONL upload; provider/host/model/endpoint; submission/result format; request/byte/token/queue limits; completion/expiry; cancellation; ordering; prerequisite; source/date; observed versus documented versus assumed inputs are labeled; artifact/schema/tool/job/result hashes and verification date=2026-09-02Unavailable — frozen batch-api fixture requires an exact source, identity, and result receiptUNTESTED — module 1 rule is reproducible but no production observation is claimed
inline request listroute=/compare/llm-batch-api; owner=batch-api; provider/seller/host/account/tier/endpoint/model/snapshot/region/feature/request=batch-api; scenario=inline request list; provider/host/model/endpoint; submission/result format; request/byte/token/queue limits; completion/expiry; cancellation; ordering; prerequisite; source/date; observed versus documented versus assumed inputs are labeled; artifact/schema/tool/job/result hashes and verification date=2026-09-02Unavailable — frozen batch-api fixture requires an exact source, identity, and result receiptUNTESTED — module 1 rule is reproducible but no production observation is claimed
file-backed jobroute=/compare/llm-batch-api; owner=batch-api; provider/seller/host/account/tier/endpoint/model/snapshot/region/feature/request=batch-api; scenario=file-backed job; provider/host/model/endpoint; submission/result format; request/byte/token/queue limits; completion/expiry; cancellation; ordering; prerequisite; source/date; observed versus documented versus assumed inputs are labeled; artifact/schema/tool/job/result hashes and verification date=2026-09-02Unavailable — frozen batch-api fixture requires an exact source, identity, and result receiptUNTESTED — module 1 rule is reproducible but no production observation is claimed
unsupported endpointroute=/compare/llm-batch-api; owner=batch-api; provider/seller/host/account/tier/endpoint/model/snapshot/region/feature/request=batch-api; scenario=unsupported endpoint; provider/host/model/endpoint; submission/result format; request/byte/token/queue limits; completion/expiry; cancellation; ordering; prerequisite; source/date; observed versus documented versus assumed inputs are labeled; artifact/schema/tool/job/result hashes and verification date=2026-09-02Unavailable — exact batch-api evidence join is not closed for “unsupported endpoint”FAIL CLOSED — manual, probe, or source evidence required
oversized jobroute=/compare/llm-batch-api; owner=batch-api; provider/seller/host/account/tier/endpoint/model/snapshot/region/feature/request=batch-api; scenario=oversized job; provider/host/model/endpoint; submission/result format; request/byte/token/queue limits; completion/expiry; cancellation; ordering; prerequisite; source/date; observed versus documented versus assumed inputs are labeled; artifact/schema/tool/job/result hashes and verification date=2026-09-02Unavailable — frozen batch-api fixture requires an exact source, identity, and result receiptUNTESTED — module 1 rule is reproducible but no production observation is claimed
duplicate custom-IDroute=/compare/llm-batch-api; owner=batch-api; provider/seller/host/account/tier/endpoint/model/snapshot/region/feature/request=batch-api; scenario=duplicate custom-ID; provider/host/model/endpoint; submission/result format; request/byte/token/queue limits; completion/expiry; cancellation; ordering; prerequisite; source/date; observed versus documented versus assumed inputs are labeled; artifact/schema/tool/job/result hashes and verification date=2026-09-02Unavailable — exact batch-api evidence join is not closed for “duplicate custom-ID”FAIL CLOSED — manual, probe, or source evidence required

First-party citation: OpenAI Batch API guide. Verified 2026-09-02; missing or conflicting joins fail closed.

Fixed batch-job eligibility and cost receipt

Deterministic formula / rule: total = Σ(input units × input rate + output units × output rate) for each eligible request; batch total is shown only with documented batch rates.

Boundary: Owns the six frozen jobs and fixed-job arithmetic, not cheapest-provider or arbitrary forecast claims.

Frozen scenarioExact identity and evidence fieldsResultState
10K short classificationsroute=/compare/llm-batch-api; owner=batch-api; provider/seller/host/account/tier/endpoint/model/snapshot/region/feature/request=batch-api; scenario=10K short classifications; units; request/input/output shape; endpoint/model eligibility; standard/batch rate versions; formula; sync/batch total or Unavailable; turnaround; observed versus documented versus assumed inputs are labeled; artifact/schema/tool/job/result hashes and verification date=2026-09-02Unavailable — frozen batch-api fixture requires an exact source, identity, and result receiptUNTESTED — module 2 rule is reproducible but no production observation is claimed
1K long summariesroute=/compare/llm-batch-api; owner=batch-api; provider/seller/host/account/tier/endpoint/model/snapshot/region/feature/request=batch-api; scenario=1K long summaries; units; request/input/output shape; endpoint/model eligibility; standard/batch rate versions; formula; sync/batch total or Unavailable; turnaround; observed versus documented versus assumed inputs are labeled; artifact/schema/tool/job/result hashes and verification date=2026-09-02Unavailable — frozen batch-api fixture requires an exact source, identity, and result receiptUNTESTED — module 2 rule is reproducible but no production observation is claimed
500 structured extractionsroute=/compare/llm-batch-api; owner=batch-api; provider/seller/host/account/tier/endpoint/model/snapshot/region/feature/request=batch-api; scenario=500 structured extractions; units; request/input/output shape; endpoint/model eligibility; standard/batch rate versions; formula; sync/batch total or Unavailable; turnaround; observed versus documented versus assumed inputs are labeled; artifact/schema/tool/job/result hashes and verification date=2026-09-02Unavailable — frozen batch-api fixture requires an exact source, identity, and result receiptUNTESTED — module 2 rule is reproducible but no production observation is claimed
100 image requestsroute=/compare/llm-batch-api; owner=batch-api; provider/seller/host/account/tier/endpoint/model/snapshot/region/feature/request=batch-api; scenario=100 image requests; units; request/input/output shape; endpoint/model eligibility; standard/batch rate versions; formula; sync/batch total or Unavailable; turnaround; observed versus documented versus assumed inputs are labeled; artifact/schema/tool/job/result hashes and verification date=2026-09-02Unavailable — frozen batch-api fixture requires an exact source, identity, and result receiptUNTESTED — module 2 rule is reproducible but no production observation is claimed
100 five-tool requestsroute=/compare/llm-batch-api; owner=batch-api; provider/seller/host/account/tier/endpoint/model/snapshot/region/feature/request=batch-api; scenario=100 five-tool requests; units; request/input/output shape; endpoint/model eligibility; standard/batch rate versions; formula; sync/batch total or Unavailable; turnaround; observed versus documented versus assumed inputs are labeled; artifact/schema/tool/job/result hashes and verification date=2026-09-02Unavailable — frozen batch-api fixture requires an exact source, identity, and result receiptUNTESTED — module 2 rule is reproducible but no production observation is claimed
mixed-model jobroute=/compare/llm-batch-api; owner=batch-api; provider/seller/host/account/tier/endpoint/model/snapshot/region/feature/request=batch-api; scenario=mixed-model job; units; request/input/output shape; endpoint/model eligibility; standard/batch rate versions; formula; sync/batch total or Unavailable; turnaround; observed versus documented versus assumed inputs are labeled; artifact/schema/tool/job/result hashes and verification date=2026-09-02Unavailable — frozen batch-api fixture requires an exact source, identity, and result receiptUNTESTED — module 2 rule is reproducible but no production observation is claimed

First-party citation: Google Gemini batch API. Verified 2026-09-02; missing or conflicting joins fail closed.

Completion, failure, and reconciliation board

Deterministic formula / rule: reconciled = submitted IDs joined exactly once to result and usage state; missing, duplicate, or unbilled rows => hold/rebuild.

Boundary: Owns result-set integrity; billing and reliability claims require a closed joined receipt.

Frozen scenarioExact identity and evidence fieldsResultState
all-successroute=/compare/llm-batch-api; owner=batch-api; provider/seller/host/account/tier/endpoint/model/snapshot/region/feature/request=batch-api; scenario=all-success; submitted/completed/failed/expired/cancelled counts; request-result identity; retry eligibility; duplicate protection; usage/billing state; action; observed versus documented versus assumed inputs are labeled; artifact/schema/tool/job/result hashes and verification date=2026-09-02Unavailable — frozen batch-api fixture requires an exact source, identity, and result receiptUNTESTED — module 3 rule is reproducible but no production observation is claimed
mixed validation errorsroute=/compare/llm-batch-api; owner=batch-api; provider/seller/host/account/tier/endpoint/model/snapshot/region/feature/request=batch-api; scenario=mixed validation errors; submitted/completed/failed/expired/cancelled counts; request-result identity; retry eligibility; duplicate protection; usage/billing state; action; observed versus documented versus assumed inputs are labeled; artifact/schema/tool/job/result hashes and verification date=2026-09-02Unavailable — frozen batch-api fixture requires an exact source, identity, and result receiptUNTESTED — module 3 rule is reproducible but no production observation is claimed
provider failuresroute=/compare/llm-batch-api; owner=batch-api; provider/seller/host/account/tier/endpoint/model/snapshot/region/feature/request=batch-api; scenario=provider failures; submitted/completed/failed/expired/cancelled counts; request-result identity; retry eligibility; duplicate protection; usage/billing state; action; observed versus documented versus assumed inputs are labeled; artifact/schema/tool/job/result hashes and verification date=2026-09-02Unavailable — exact batch-api evidence join is not closed for “provider failures”FAIL CLOSED — manual, probe, or source evidence required
expired jobroute=/compare/llm-batch-api; owner=batch-api; provider/seller/host/account/tier/endpoint/model/snapshot/region/feature/request=batch-api; scenario=expired job; submitted/completed/failed/expired/cancelled counts; request-result identity; retry eligibility; duplicate protection; usage/billing state; action; observed versus documented versus assumed inputs are labeled; artifact/schema/tool/job/result hashes and verification date=2026-09-02Unavailable — exact batch-api evidence join is not closed for “expired job”FAIL CLOSED — manual, probe, or source evidence required
cancelled jobroute=/compare/llm-batch-api; owner=batch-api; provider/seller/host/account/tier/endpoint/model/snapshot/region/feature/request=batch-api; scenario=cancelled job; submitted/completed/failed/expired/cancelled counts; request-result identity; retry eligibility; duplicate protection; usage/billing state; action; observed versus documented versus assumed inputs are labeled; artifact/schema/tool/job/result hashes and verification date=2026-09-02Unavailable — exact batch-api evidence join is not closed for “cancelled job”FAIL CLOSED — manual, probe, or source evidence required
missing resultroute=/compare/llm-batch-api; owner=batch-api; provider/seller/host/account/tier/endpoint/model/snapshot/region/feature/request=batch-api; scenario=missing result; submitted/completed/failed/expired/cancelled counts; request-result identity; retry eligibility; duplicate protection; usage/billing state; action; observed versus documented versus assumed inputs are labeled; artifact/schema/tool/job/result hashes and verification date=2026-09-02Unavailable — exact batch-api evidence join is not closed for “missing result”FAIL CLOSED — manual, probe, or source evidence required
duplicate IDroute=/compare/llm-batch-api; owner=batch-api; provider/seller/host/account/tier/endpoint/model/snapshot/region/feature/request=batch-api; scenario=duplicate ID; submitted/completed/failed/expired/cancelled counts; request-result identity; retry eligibility; duplicate protection; usage/billing state; action; observed versus documented versus assumed inputs are labeled; artifact/schema/tool/job/result hashes and verification date=2026-09-02Unavailable — exact batch-api evidence join is not closed for “duplicate ID”FAIL CLOSED — manual, probe, or source evidence required
missing usageroute=/compare/llm-batch-api; owner=batch-api; provider/seller/host/account/tier/endpoint/model/snapshot/region/feature/request=batch-api; scenario=missing usage; submitted/completed/failed/expired/cancelled counts; request-result identity; retry eligibility; duplicate protection; usage/billing state; action; observed versus documented versus assumed inputs are labeled; artifact/schema/tool/job/result hashes and verification date=2026-09-02Unavailable — exact batch-api evidence join is not closed for “missing usage”FAIL CLOSED — manual, probe, or source evidence required

First-party citation: Anthropic Message Batches API. Verified 2026-09-02; missing or conflicting joins fail closed.

Method and limitations: this board exposes deterministic rules, first-party citations, and dated evidence identities. It does not invent volume, coverage, entitlement, retention, residency, quota, capacity, feature support, quality, price, reliability, or legal conclusions. Run the batch-api evidence flow →