Models for batch processing: when the bill is the requirement
Classify 100,000 documents and the same job runs $7.60 on Gemini 3 Flash, $21 on Grok Composer 2.5 Fast and $56 on Claude Haiku 4.5 Stable. The multiplier is not the price.
One job, seven prices
Take a concrete batch: 100,000 documents, 800 input tokens and 120 output tokens each. That is 80 million input tokens and 12 million output tokens — a job whose cost is entirely a function of two per-token rates.
At consumer rates (official price × multiplier): Gemini 3 Flash, 0.1× of $0.50/$3, costs $4.00 + $3.60 = $7.60. GPT 5.6 Luna, 0.3× of $0.2/$1.2, costs $4.80 + $4.32 = $9.12. Gemini 3.7 Flash, 0.1× of $0.75/$3.75, costs $6.00 + $4.50 = $10.50. GPT 5.4 Mini, 0.1× of $0.75/$4.5, costs $6.00 + $5.40 = $11.40.
Further up: Grok Composer 2.5 Fast, 0.05× of $3/$15, costs $12.00 + $9.00 = $21.00. Claude Sonnet 5, 0.1× of $3/$15, costs $24.00 + $18.00 = $42.00. Claude Haiku 4.5 Stable, 0.4× of $1/$5, costs $32.00 + $24.00 = $56.00. Same work, a 7.4× spread from cheapest to dearest.
export TOKEN_SHARE_KEY="<your-pool-api-key>"
# Estimate: docs x tokens x (consumer rate per million).
# gemini-3-flash consumer rates: 0.1x of $0.50/M in and $3/M out.
awk 'BEGIN {
docs = 100000; in_tok = 800; out_tok = 120
printf "input $%.2f\n", docs * in_tok / 1000000 * 0.050
printf "output $%.2f\n", docs * out_tok / 1000000 * 0.300
printf "total $%.2f\n", docs * in_tok / 1000000 * 0.050 + docs * out_tok / 1000000 * 0.300
}'
# Verify the shape on one real document before multiplying by 100,000.
curl -sS https://token-share.app/v1/chat/completions \
-H "Authorization: Bearer $TOKEN_SHARE_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3-flash",
"messages": [
{"role": "system", "content": "Classify the document. Reply with one label and one sentence."},
{"role": "user", "content": "<one real document here>"}
]
}' | jq '.usage'The lowest multiplier is not the lowest price
Grok Composer 2.5 Fast carries the lowest multiplier in the catalog at 0.05×, and in the batch above it costs $21 — nearly three times what Gemini 3 Flash costs at 0.1×. The multiplier is a discount on the official rate, and Composer's official rate is $3/$15 against Gemini 3 Flash's $0.50/$3.
The same trap runs the other way. Claude Haiku 4.5 Stable is the smallest Claude in the catalog, and at 0.4× on a $1/$5 official rate it comes to $0.40/M input — more than Claude Sonnet 5's $0.30/M at 0.1×. On this batch the "small" model costs $56 and the larger one $42.
So the number to compare is never the multiplier and never the official rate on its own. It is the product: official rate × multiplier, applied to input and output separately, then weighted by your job's actual ratio between the two.
Your input/output ratio changes the ranking
The batch above is roughly 87% input by token count, so input rates dominate. Invert it — a generation job that reads 100 tokens and writes 1,500 — and output rates take over. For 100,000 items that is 10 million input and 150 million output tokens.
On that inverted shape Gemini 3 Flash costs $0.50 + $45.00 = $45.50, GPT 5.6 Luna costs $0.60 + $54.00 = $54.60 and Gemini 3.7 Flash costs $0.75 + $56.25 = $57.00. Luna keeps a narrower gap to Flash here than on the classification batch, because its official output rate is 6× its input rate while the ranking on an output-dominated job turns on the output side alone.
Work out your own ratio before reading any ranking, including this one. Two numbers — average input tokens and average output tokens per item — turn every model in the catalog into a single comparable figure, and they are the only two numbers a price table cannot guess for you.
Cost is not the only thing that scales
A batch has a fixed per-item prompt, and that prefix is sent 100,000 times. Where it genuinely repeats, prompt caching bills it as a cache read on later requests rather than as fresh input, which is a change to the largest term in the classification example.
Quality failures scale too, and they scale worse than money. A model that mislabels 3% of items produces 3,000 wrong rows, and finding them costs more than the difference between $7.60 and $42. Run 200 items through two candidates against a labelled sample, count errors, and only then compare totals.
Route shape matters at volume only in that it decides what your worker code looks like: Gemini and Grok ids on /v1/chat/completions, OpenAI ids on /v1/responses, Claude ids on /v1/messages. Within one shape, testing another id is a model-field change, so the comparison above costs a few dollars to reproduce on your own data.