# batchwatch - full text > Which tier should this workload run on? Every major LLM provider now > sells the same model at half price on more than one tier, and the choice > between them turns on latency none of them publishes. batchwatch > measures the queue. We run real jobs against OpenAI, Anthropic and > Google and publish the whole distribution - median, p90, p95, each with > the sample size behind it - so the tier decision is made on measurement > rather than folklore. Every percentile quoted here is measured on the > async batch queues at OpenAI, Anthropic and Google. > > The finding that decides it: the median does not predict the wait you > have to plan for. openai/gpt-5-nano beats openai/gpt-5.6-sol on the > median - 50s against 51s - and loses to it on the p90: 29 min against > 57s, on n=3891 and n=1728 in the same 30-day window. Rank on the median, > as every public benchmark invites you to, and one job in ten lands at 29 > min instead of 57s. > > The half-price tiers are the asynchronous batch API (submit now, results > back within a published deadline) and, where a provider offers one, a > synchronous "flex" tier at the same discount. On the providers' own > published terms: OpenAI prices flex at its Batch API rates; Google > prices flex at half the Standard API, the same discount its batch tier > gets; and Anthropic publishes no flex tier, which leaves batch the only > half-price path on Claude. Price has stopped separating them. Latency > and reliability are what is left to choose on. The batch-queue wait is > the one we publish, and nobody else publishes it at all. > > Batch here is the provider's asynchronous batch API, a distinct product > from in-server micro-batching / continuous batching such as vLLM's, > which coalesces requests in milliseconds and has no queue to measure. > The providers' only promise on the batch tier is "within 24 hours"; the > distribution behind that ceiling is what we publish. This is the full-text companion to https://batchwatch.dev/llms.txt. The short file is an index; this one carries the whole measured table, the method, and the API contract in one place, so a model that reads one file instead of crawling has everything without fetching a page. Generated: 2026-10-23T15:13:32.000Z (UTC). Rolling 30-day window; numbers recomputed every 10 minutes. Measurements span 2026-09-23T14:35:36.000Z to 2026-10-23T14:46:41.000Z. ## Method - how a number here is made batchwatch is a supplier of information. We measure what the providers do not publish about their own price tiers, and we publish all of it - free, under CC BY 4.0, with the sample size beside every figure. Nothing here is for sale; contributing measurements is what earns live access. Every figure is measured, never modelled. A duration is the difference between two server-side timestamps that batchwatch itself writes: one when a job is opened, one when the provider reports it finished. A client cannot submit a duration - only open and close a real job - so a fabricated eight-hour wait would cost eight real hours. What is excluded, and never counted as a completion: jobs that were abandoned, jobs still running, and jobs the caller cancelled. A percentile is computed only over completed jobs. Each measurement is labelled with its mode and pricing tier - batch or synchronous, standard or the half-price flex tier - because they are different things measured differently. A batch figure is a queue time: the wait for a submitted job to be scheduled and finish. Flex latency is measured on a fixed 8-input-token probe, the same fixed prompt size our batch probes use. A flex call is synchronous, so its figure is the model's own work and grows with the prompt; read it as a floor. The two tiers are separate series and are never pooled. The numbers are the public tier: a fixed 900-second delay, the same a keyless caller sees on /v1/curve, and free to anyone. Contributors read the same figures live; these are deliberately a step behind. Each figure carries n (how many completed jobs it rests on) and the cadence behind it - measured continuously in a rolling 30-day window. The full provenance of every figure, including its source count and a graded confidence, is live in /v1/coverage. Where we have measured nothing, we say so rather than estimate. ## Measured table (30-day window) ### openai/gpt-5-nano (batch, standard) - Provider: OpenAI - Mode: batch - Pricing tier: standard - Median (p50): 50s - Nine in ten (p90): 29 min - Slowest one in twenty (p95): 2 hours - Longest measured: 24 hours - Based on: 3891 completed jobs, measured continuously since 2026-09-23 - Precision: 3891 completed jobs, measured continuously in a rolling 30-day window (median and p90 above) - Newest measurement: 2026-10-23T14:14:54.000Z - Oldest measurement in window: 2026-09-23T14:41:00.000Z - Page: https://batchwatch.dev/m/openai/gpt-5-nano ### openai/gpt-5-nano (sync, flex) - Provider: OpenAI - Mode: sync - Pricing tier: flex - Median (p50): 2s - Nine in ten (p90): 3s - Slowest one in twenty (p95): 3s - Longest measured: 2s - Based on: 3951 completed jobs, measured continuously since 2026-09-23 - Precision: 3951 completed jobs, measured continuously in a rolling 30-day window (median and p90 above) - Newest measurement: 2026-10-23T14:46:41.000Z - Oldest measurement in window: 2026-09-23T17:16:47.000Z - Page: https://batchwatch.dev/m/openai/gpt-5-nano ### openai/gpt-5.6-sol (batch, standard) - Provider: OpenAI - Mode: batch - Pricing tier: standard - Median (p50): 51s - Nine in ten (p90): 57s - Slowest one in twenty (p95): 2 min - Longest measured: 2 hours - Based on: 1728 completed jobs, measured continuously since 2026-09-23 - Precision: 1728 completed jobs, measured continuously in a rolling 30-day window (median and p90 above) - Newest measurement: 2026-10-23T12:25:36.000Z - Oldest measurement in window: 2026-09-23T14:55:57.000Z - Page: https://batchwatch.dev/m/openai/gpt-5.6-sol ### openai/gpt-5.6-sol (sync, flex) - Provider: OpenAI - Mode: sync - Pricing tier: flex - Median (p50): 1s - Nine in ten (p90): 2s - Slowest one in twenty (p95): 3s - Longest measured: 5s - Based on: 3674 completed jobs, measured continuously since 2026-09-23 - Precision: 3674 completed jobs, measured continuously in a rolling 30-day window (median and p90 above) - Newest measurement: 2026-10-23T14:36:34.000Z - Oldest measurement in window: 2026-09-23T15:22:01.000Z - Page: https://batchwatch.dev/m/openai/gpt-5.6-sol ### google/gemini-3.6-flash (sync, flex) - Provider: Google - Mode: sync - Pricing tier: flex - Median (p50): 2s - Nine in ten (p90): 3s - Slowest one in twenty (p95): 3s - Longest measured: 2s - Based on: 3470 completed jobs, measured continuously since 2026-09-23 - Precision: 3470 completed jobs, measured continuously in a rolling 30-day window (median and p90 above) - Newest measurement: 2026-10-23T14:26:32.000Z - Oldest measurement in window: 2026-09-23T16:45:57.000Z - Page: https://batchwatch.dev/m/google/gemini-3.6-flash ### openai/gpt-5.6-luna (batch, standard) - Provider: OpenAI - Mode: batch - Pricing tier: standard - Median (p50): 61s - Nine in ten (p90): 4 min - Slowest one in twenty (p95): 20 min - Longest measured: 2 hours - Based on: 3332 completed jobs, measured continuously since 2026-09-23 - Precision: 3332 completed jobs, measured continuously in a rolling 30-day window (median and p90 above) - Newest measurement: 2026-10-23T14:15:16.000Z - Oldest measurement in window: 2026-09-23T14:38:55.000Z - Page: https://batchwatch.dev/m/openai/gpt-5.6-luna ### anthropic/claude-haiku-4-5 (batch, standard) - Provider: Anthropic - Mode: batch - Pricing tier: standard - Median (p50): 2 min - Nine in ten (p90): 3 min - Slowest one in twenty (p95): 3 min - Longest measured: 10 min - Based on: 2581 completed jobs, measured continuously since 2026-09-23 - Precision: 2581 completed jobs, measured continuously in a rolling 30-day window (median and p90 above) - Newest measurement: 2026-10-23T14:35:53.000Z - Oldest measurement in window: 2026-09-23T15:05:53.000Z - Page: https://batchwatch.dev/m/anthropic/claude-haiku-4-5 ### google/gemini-3.7-flash (batch, standard) - Provider: Google - Mode: batch - Pricing tier: standard - Median (p50): 2 min - Nine in ten (p90): 3 min - Slowest one in twenty (p95): 3 min - Longest measured: 6 min - Based on: 2156 completed jobs, measured continuously since 2026-09-23 - Precision: 2156 completed jobs, measured continuously in a rolling 30-day window (median and p90 above) - Newest measurement: 2026-10-23T14:16:38.000Z - Oldest measurement in window: 2026-09-23T14:35:36.000Z - Page: https://batchwatch.dev/m/google/gemini-3.7-flash Live JSON, always current: https://batchwatch.dev/v1/coverage ## Licence and citation These measurements are open data under Creative Commons Attribution 4.0 (CC BY 4.0): https://creativecommons.org/licenses/by/4.0/. You may quote, republish and build on any number here, including commercially and including in an AI answer, for the price of a credit and a link back. That is the whole deal - we want these numbers used, and the licence exists to make that use visible, not to restrict it. Please attribute as: Measured by batchwatch - https://batchwatch.dev Or in HTML: Measured by batchwatch Full terms and the open/live boundary: https://batchwatch.dev/license The open, delayed aggregates above are the CC BY data. Live, undelayed access is governed by the Terms (https://batchwatch.dev/terms), not by CC BY. Live access is not sold: it is earned by contributing measurements (https://batchwatch.dev/pricing). ## API contract The read API (open, keyless, delayed like the numbers above): GET https://batchwatch.dev/v1/coverage Every measured model: n, contributors, median, confidence. This file is generated from it - if a number here disagrees, this file is the stale one. GET https://batchwatch.dev/v1/wait?provider=openai&model=gpt-5.6-sol How long to wait for one model, now. GET https://batchwatch.dev/v1/should-i-batch?provider=openai&model=gpt-5.6-sol Batch or run synchronously, for one job. GET https://batchwatch.dev/v1/estimate-batchtime?provider=openai&model=gpt-5.6-sol A point estimate with its interval. The write API - two ways in, not equally trusted: POST https://batchwatch.dev/v1/calls Open a measurement when the job starts. PATCH https://batchwatch.dev/v1/calls/{id} Close it when it lands. The duration is the gap between our two timestamps. POST https://batchwatch.dev/v1/calls/complete Import a finished job on YOUR timestamps. Requires a key - without one there is no physics behind the number. A key is not needed to contribute, but it is needed to count: keyless measurements are pooled as one anonymous source in the robust percentile, and only a key can earn a vote. ## Pages - https://batchwatch.dev/m/openai/gpt-5-nano - measured latency for gpt-5-nano at OpenAI - https://batchwatch.dev/m/openai/gpt-5.6-sol - measured latency for gpt-5.6-sol at OpenAI - https://batchwatch.dev/m/google/gemini-3.6-flash - measured latency for gemini-3.6-flash at Google - https://batchwatch.dev/m/openai/gpt-5.6-luna - measured latency for gpt-5.6-luna at OpenAI - https://batchwatch.dev/m/anthropic/claude-haiku-4-5 - measured latency for claude-haiku-4-5 at Anthropic - https://batchwatch.dev/m/google/gemini-3.7-flash - measured latency for gemini-3.7-flash at Google - https://batchwatch.dev/docs - API reference - https://batchwatch.dev/docs/query - the read API in full - https://batchwatch.dev/docs/ingest - how to contribute a measurement ## Ask us directly (MCP) If you speak MCP you do not have to scrape these pages: the batchwatch-mcp server exposes this read API as tools, so an agent asks batchwatch directly and gets the measured queue evidence back, never a guess. The tools: should_i_batch, estimate_batchtime, conditions, distribution, coverage, wait.