toksum · migration report

5M classification calls a month on GPT-5.4. Batch it, or switch?

Data team · nightly document classification & extraction

toksum.dev Verified 2026-05-27 SAMPLE · FREE
Verdict GO — GPT-5.4 mini on Batch

Move to GPT-5.4 mini on the Batch API.

For a simple task, a small model beats batching a frontier one — without leaving OpenAI.

$280,500 saved per year · 85% lower · same OpenAI SDK
Volume 5,000,000 req/mo
Input 1,000 tok
Output 200 tok · label + JSON
Current model GPT-5.4 · synchronous

Every option, costed

OptionMonthlyAnnualSavings vs currentMigration effort
GPT-5.4 — synchronous $27,500 $330,000 — (baseline)
GPT-5.4 on Batch API $13,750 $165,000 $165,000/yr · 50% Batch pipeline; same model + SDK
GPT-5.4 mini on Batch $4,125 $49,500 $280,500/yr · 85% Same SDK + batch; validate accuracy
Claude Haiku 4.5 on Batch $5,000 $60,000 $270,000/yr · 82% SDK swap + prompt + batch
Gemini 2.5 Flash-Lite (sync) $900 $10,800 $319,200/yr · 96.7% SDK swap + eval
DeepSeek V4 Flash (sync) $980 $11,760 $318,240/yr · 96.4% SDK swap + eval; data-residency check

List-price arithmetic on the stated workload — a planning model, not a guaranteed invoice.

The reasoning behind the call

Start with where the $27,500/month actually goes. Each request bills 1,000 input tokens and 200 output tokens, so on the surface input looks like the bigger line item. It isn't. On GPT-5.4 the input runs 5,000M tokens × $2.50/M = $12,500, while the 1,000M output tokens × $15.00/M = $15,000 — output is the larger half despite being one-fifth the token count, because output is priced 6x input here. That single fact decides everything downstream: any lever that touches the per-output-token rate (a smaller model, or batch's 50% cut) moves the bill far more than shaving input would. The prompt is also a poor caching candidate — at 1,000 mostly-variable tokens per document there is no large reused prefix to amortize, so prompt caching is a rounding error on this workload and we leave it out of the comparison.

The cheapest valid move that carries zero quality risk is the Batch API on the model you already run. Same GPT-5.4 weights, same outputs, same OpenAI SDK — you just submit a JSONL of requests and collect a result file within 24 hours, for 50% off both directions. That halves the bill to $13,750/month ($165,000/year) with nothing to validate, because the model hasn't changed. For a nightly job that already tolerates a multi-hour window, the only real cost is rewriting the call path to be asynchronous. This is the floor: if you do nothing else, do this, and it sets the honest baseline you measure every riskier option against.

But for a task this simple — emit a label plus a small JSON object — frontier capability is overkill, and that's where the real money is. GPT-5.4 mini on Batch bills input at $0.375/M and output at $2.25/M: 5,000M × $0.375 = $1,875 plus 1,000M × $2.25 = $2,250, totaling $4,125/month, or $49,500/year. That's $280,500 saved annually, 85% off, and it stacks two independent levers — a 70% cheaper model and the 50% batch discount — without leaving OpenAI. No new auth, no tokenizer change, no second vendor in your data path; the diff is one model string and a batch wrapper. Compared to merely batching GPT-5.4, the mini move captures roughly $115,000/year more for essentially the same engineering effort, which is why it's the recommendation rather than the safe-but-smaller batch-only play.

The two ~96% options are real, and we're not hiding them: Gemini 2.5 Flash-Lite lands at $900/month ($10,800/year, 96.7% off) and DeepSeek V4 Flash at $980/month ($11,760/year, 96.4% off). On a spreadsheet they crush GPT-5.4 mini by roughly $38,000–$39,000/year. The reason they aren't the default is that the marginal saving is small in absolute terms while the marginal risk is not. Going from $49,500 to ~$11,000 saves about $38k/year — meaningful, but you're now standing up a new provider stack: different SDK and auth, a different request/response shape, a different tokenizer, and for DeepSeek a data-residency review on documents you may not be allowed to send offshore. That extra ~$38k is worth chasing only if you already operate one of these providers, your volume is climbing, or compliance clears it. Claude Haiku 4.5 on Batch ($5,000/month, $60,000/year, 82%) sits in between — competitively priced and batch-capable, but it's still a cross-provider port for slightly less saving than GPT-5.4 mini, so it wins only if you specifically prefer Claude for label quality.

The honest caveat is that none of these numbers mean anything until you've run the cheaper model against your own labelled data. We make no quality-equivalence claim, and we won't invent benchmark scores: a smaller model can quietly mislabel a class of documents that GPT-5.4 handled, and on a classification pipeline that error compounds. Do the arithmetic that the price table can't: if GPT-5.4 mini saves $280,500/year but raises your misclassification rate by even 2–3 points, and each bad label triggers downstream human review or a costly correction, that rework can erase the saving and then some. So treat the recommendation as conditional on one experiment — pull a held-out, human-labelled eval set, score GPT-5.4 mini (and Haiku, if you're curious) against it at your real production distribution, and only promote the winner once accuracy holds. Plug your own volume, token counts, and acceptable error tolerance into the migration ROI simulator to see exactly where the break-even moves. The arithmetic says GO on GPT-5.4 mini batched; your eval set casts the deciding vote.

Recommendation

Batching GPT-5.4 is the safe 50% win (same model, no quality risk). But for a simple classification task the bigger lever is a small model: GPT-5.4 mini on Batch saves 85% while keeping the OpenAI SDK. Gemini Flash-Lite and DeepSeek go ~96% but require a whole new provider stack — worth it only at higher volume or if you already run them.

Do this first — zero-risk

Ship GPT-5.4 on the Batch API first — same model, no accuracy debate, an immediate guaranteed 50% ($165,000/yr). Then validate GPT-5.4 mini on Batch in parallel to capture the rest.

Migration effort

Batch = upload a JSONL of requests, retrieve a result file within 24h, match by custom ID (50% off input + output). GPT-5.4 mini keeps your SDK/auth; cross-provider options add a tokenizer change, new auth, and a different request shape.

Before you switch

Validate label accuracy on a held-out labelled eval set before any cheaper model writes production labels — a model 85% cheaper that mislabels 3% more documents can cost more in downstream human review than it ever saves.