# batchwatch > 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. 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. There is nothing to buy: the whole dataset is free to read, under CC BY 4.0, and the people who send us measurements read it with no delay at all. Every number here is measured, never modelled. Each figure carries n and the cadence behind it; its full provenance and a graded confidence are live in https://batchwatch.dev/v1/coverage. Where we have no data we say so rather than estimate. Durations are the difference between two server-side timestamps written by batchwatch; a client cannot submit a duration. Abandoned jobs are excluded, never counted as completions. Generated: 2026-10-23T15:08:05.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. For the full table, the method and the API contract in one file: https://batchwatch.dev/llms-full.txt ## Headline measurements (30-day window) - openai/gpt-5-nano (batch, standard): median 50s, p90 29 min, n=3891 measured continuously since 2026-09-23 - openai/gpt-5-nano (sync, flex): median 2s, p90 3s, n=3951 measured continuously since 2026-09-23 - openai/gpt-5.6-sol (batch, standard): median 51s, p90 57s, n=1728 measured continuously since 2026-09-23 - openai/gpt-5.6-sol (sync, flex): median 1s, p90 2s, n=3674 measured continuously since 2026-09-23 - google/gemini-3.6-flash (sync, flex): median 2s, p90 3s, n=3470 measured continuously since 2026-09-23 - openai/gpt-5.6-luna (batch, standard): median 61s, p90 4 min, n=3332 measured continuously since 2026-09-23 - anthropic/claude-haiku-4-5 (batch, standard): median 2 min, p90 3 min, n=2581 measured continuously since 2026-09-23 - google/gemini-3.7-flash (batch, standard): median 2 min, p90 3 min, n=2156 measured continuously since 2026-09-23 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 and reuse any number here, including in an answer, for the price of a credit and a link back. Please attribute as: Measured by batchwatch - https://batchwatch.dev Full terms and the open/live boundary: https://batchwatch.dev/license ## Pages - https://batchwatch.dev/p/anthropic - Anthropic measured tier latency - https://batchwatch.dev/p/google - Google measured tier latency - https://batchwatch.dev/p/openai - OpenAI measured tier latency - 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: /v1/wait, /v1/should-i-batch, /v1/estimate-batchtime - 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. ## Contributing There are two ways in, and they are not equally trusted. The live path is open to everyone, key or no key. Open a measurement when the job starts and close it when it lands; the duration is the difference between two of our own timestamps, so a fabricated eight-hour wait costs eight real hours: POST https://batchwatch.dev/v1/calls {"mode":"batch","provider":"openai", "model":"gpt-5.6-sol","requests":1, "input_tokens":9720} PATCH https://batchwatch.dev/v1/calls/{id} {"output_tokens":4519,"status":"completed"} The import path, POST /v1/calls/complete, reads finished jobs out of your own history and takes your timestamps rather than ours. It requires a key, because without one there is no physics behind the number and anyone could assert any duration instantly. A key is not needed to contribute, but it is needed to count: measurements without a key are pooled as one anonymous source in the robust percentile, and only a key can earn a vote.