What AI API pricing doesn't tell you
You are about to build on an LLM API, so you check the pricing page. Every provider gives you the same thing: a table of dollars per million tokens, cheapest model at the bottom, flagship at the top. It is the first number you look at, and it feels like the number that decides your bill.
It is not. The price per token tells you what a token costs, not what an answer costs, and definitely not whether the cheap model gives you an answer you can ship. Those are different questions, and the pricing table cannot answer either one. Two real runs show the gap.
The sticker prices, for reference
Here is roughly what the current API lineups cost, in dollars per million tokens, so the rest of this has a baseline.
| Provider | Model | Input ($/M) | Output ($/M) | Batch input/output [1] | Cache read [2] |
|---|---|---|---|---|---|
| OpenAI | GPT-4.1 Nano | 0.10 | 0.40 | 0.05 / 0.20 | 0.025 |
| OpenAI | GPT-4o Mini | 0.15 | 0.60 | 0.075 / 0.30 | 0.075 |
| OpenAI | GPT-5.1 | 1.25 | 10.00 | 0.625 / 5.00 | 0.125 |
| OpenAI | GPT-4o | 2.50 | 10.00 | 1.25 / 5.00 | 1.25 |
| Anthropic | Claude Haiku 4.5 | 1.00 | 5.00 | 0.50 / 2.50 | 0.10 |
| Anthropic | Claude Sonnet 5 | 2.00 | 10.00 | 1.00 / 5.00 | 0.20 |
| Anthropic | Claude Opus 4.5 | 5.00 | 25.00 | 2.50 / 12.50 | 0.50 |
| Together | DeepSeek V4 Flash | 0.14 | 0.28 | batch tier | 0.03 |
| Grok | Grok 4.7 | 2.00 | 6.00 | n/a | 0.50 |
Standard per-token prices across current API models, cheapest to dearest within each provider. Verified against the OpenAI, Anthropic, Together, and Grok pricing pages, October 2026. The spread from the cheapest model to the flagship is roughly 100-fold.
[1] Batch (asynchronous jobs, results returned within a window) is billed at exactly half the standard input and output rate on OpenAI and Anthropic. Together offers a batch tier on its serverless models. Grok accepts batch requests but gives no discount on Grok 4.7, so there is no batch saving to show. [2] Cache read bills tokens you resend (a reused system prompt or document) at a fraction of the standard input rate, typically around a tenth and as little as a fortieth on some models. Writing to the cache costs slightly more than standard input.
Notice the table already needs two footnotes to be honest, and those footnotes move the bill more than the headline numbers do. A model that looks twice as expensive per token can be the cheaper one in practice if your workload reuses a long system prompt (cache) or runs offline (batch). The standard per-token price is the sticker, not the bill. And even that is still only half the question, because the spread is wide enough that model choice looks like a pure cost lever, where you pick the cheapest row and pay the least. That is the conclusion the table invites, and it is wrong often enough to matter. A token price only becomes a bill once you know how many tokens a real task takes and whether the answer is good enough to use, and neither of those is on the page.
Run one, where the cheapest model wins and the dear one wastes your money
Take a real task. A customer writes in about a double charge, and your support assistant has to reply under your refund policy.
The task (the request plus the policy the reply must follow)
A customer emails: “I was double-charged for my subscription this month. I see two charges of $29 on my card dated the 3rd. Please refund one and confirm it won’t happen again.”
Policy: verify the duplicate charge, refund the extra charge within 3-5 business days, apologise, and explain the cause was a known billing-retry glitch now fixed. Keep it concise and warm.
Five models answered, each scored against a gold-standard reply, with the cost of that answer recorded alongside the score.
| Model | Quality (0-100) | Cost per reply |
|---|---|---|
| DeepSeek V4 Flash | 92 | $0.00012 |
| Claude Haiku 4.5 | 82 | $0.00094 |
| GPT-4o Mini | 81 | $0.00011 |
| GPT-4.1 Nano | 77 | $0.00005 |
| GPT-4o | 72 | $0.00290 |
Cheapest models at the top of the quality ranking, the most expensive model at the bottom.
Read the cost column against the quality column. DeepSeek V4 Flash scored highest at 92, for about a hundredth of a cent. GPT-4o, the most expensive model in the group at roughly 25 times the cost of GPT-4o Mini, scored lowest at 72. On this task the pricing table pointed you exactly the wrong way. Pay more and you got a worse answer, because a warm, concise refund reply does not need a flagship model, and the flagship’s extra length and formality counted against it.
If this were the only task you ran, the lesson would be “buy cheap.” That is the wrong lesson too.
Run two, where the same five models flip and the cheap ones fail
Change the task. Same five models, a different job, one that needs the model to reason rather than write.
The task (a billing question with a right answer)
A customer on the $49/mo Team plan (up to 10 users) has 8 users. They ask: we’re adding 5 people next month and 4 more the month after, when must we upgrade, and what’s our total over 3 months if we upgrade only when forced? Plans: Team $49 (up to 10), Business $99 (up to 30).
The correct answer: adding 5 takes them to 13, past Team’s limit of 10, so they are forced onto Business in month one. Three months on Business is $297.
Scored the same way, against that correct answer, the result inverts completely.
| Model | Quality (0-100) | Cost per reply | Got it right? |
|---|---|---|---|
| GPT-4o | 95 | $0.00566 | Yes, $297 |
| Claude Haiku 4.5 | 25 | $0.00129 | No, wrong timing |
| GPT-4o Mini | 22 | $0.00023 | No, wrong timing |
| GPT-4.1 Nano | 22 | $0.00025 | No, phantom month |
The most expensive model is now the only one that gets it right. The cheap models that won the first task all fail this one.
GPT-4o, the model that scored worst and wasted your money on the support reply, is the only one of the group that answers this correctly. The cheap models that topped the first table all get the math wrong here. GPT-4o Mini and Claude Haiku both miscount the upgrade timing; GPT-4.1 Nano invents an extra month at the old price. Each would have told your customer the wrong total. On this task the cheap row on the pricing page is not a saving, it is a wrong answer you would have shipped.
(DeepSeek is absent from this table because it took over a minute to respond and its score did not complete, which is its own kind of answer about fitness for a live task.)
Same five models, two tasks: cost does not predict quality
The same five models, ordered cheapest to most expensive. Green is the easy task, blue is the hard one. Neither price nor one task’s result predicts the other.
The number the pricing page can’t show you
Put the two runs together and the point is hard to miss. The same five models, ranked by the same pricing table, inverted between two perfectly ordinary tasks. On one, the cheapest was best and the priciest was waste. On the other, the cheapest failed and only the priciest was safe to ship.
What actually decides the right model is cost per acceptable answer, meaning the cheapest model that still clears the quality bar your task sets. That is a number you can only get by running your own task across the models and scoring the results, because it depends on your prompt, your data, and how hard your task actually is. The support reply and the billing question came out opposite, and nothing on any pricing page would have told you that in advance.
Find the cheapest model that still passes your bar
Run your own task across models and see cost and quality side by side, so you pay for the cheapest one that is actually good enough. Scored comparisons start on Pro.
And the answer does not stay put
Even once you have measured and picked the cheapest model that clears your bar, that answer has a shelf life. Providers change these models and their prices constantly. In a single recent stretch, OpenAI cut one model’s price by 80 percent, trimmed another, and launched a flagship at more than double the rate of the one it replaced. Any of those moves can change which model is your cheapest acceptable option, and none of them arrives as a notification.
So the real work behind “which model is cheapest” is not reading a table once. It is measuring the models on your own task to find the cheapest one that is actually good enough, and then re-checking it on a schedule so a price cut or a quiet model update does not leave you overpaying, or shipping worse answers, without knowing. The pricing page is where you start. It is nowhere near where the decision ends.
How to run that measurement, and read cost against quality on your own prompts, is covered in how to evaluate LLM output. Keeping the answer current as the models move is how to monitor LLM quality over time.