Claude Sonnet 5 Hidden Costs: What Actually Changed on Your Bill (2026)
7月 18, 2026 · 11 分で読了
Claude Sonnet 5 is a drop-in replacement for Sonnet 4.6 on the rate card, but not on the invoice. Three changes push your bill up with zero code changes on your side: a new tokenizer that counts about 30% more tokens for the same text, adaptive thinking that is now on by default and bills at output rates, and introductory pricing that expires on September 1, 2026. None of them throw an error. All of them cost money.
This guide walks each one, shows the exact field to check your real numbers, and points out the three changes that will actually break your code.
The rate card is not the invoice
Claude Sonnet 5’s headline pricing is $2 per million input tokens and $10 per million output tokens at the introductory rate, the same $3/$15 as Sonnet 4.6 once the intro period ends. So the rate looks flat or better.
The rate is not the bill. The bill is rate times tokens, and Sonnet 5 changes how many tokens you spend on the identical workload, in two separate ways, before you touch a line of code. Comparing models on the rate card is how teams get surprised in production. The number that matters is cost per task, and on Sonnet 5 the cost per task moved even though the rate did not.
Change one: the same text now counts as more tokens
Sonnet 5 ships a new tokenizer. Per Anthropic’s own migration docs, it produces approximately 30% more tokens for the same text, with the exact increase depending on your content.
Nothing about your prompt changed. The model simply counts it as more tokens. A 1,000 token prompt under Sonnet 4.6 lands closer to 1,300 tokens under Sonnet 5, on both the input you send and any text the model returns. Your rate held. Your token count did not.
Two second order effects come with it:
Your cache breakpoints can shift. If you cache a prompt prefix, the byte positions your breakpoints assumed under the old tokenizer may not line up the same way, quietly lowering your hit rate. Recheck them.
Your context budgets get tighter. A prompt you sized to fit a context window with headroom now tokenizes larger and can run closer to the edge, or over it. Re-measure against the new counts instead of trusting your old margins.
The fix is not a shorter prompt. It is measurement. Run your real prompts through token counting on Sonnet 5 and rebuild your cost projections on the actual numbers, not the ones you had for 4.6.
Change two: adaptive thinking is on by default, and you cannot see it
This is the expensive one, and it is the one almost nobody catches, because it is invisible by design.
On Sonnet 4.6, a request with no thinking field ran without thinking. On Sonnet 5, per Anthropic’s docs, adaptive thinking is on by default. The same request now reasons before it answers unless you explicitly pass thinking: {type: "disabled"}. You did not ask for it. It is on.
Here is why that hits your bill, in three parts.
Thinking tokens bill as output tokens. Output is the expensive side of the meter, 5x the input rate on every Claude model. Every reasoning token the model generates before answering is billed at the output rate.
The default effort level is high. Anthropic’s adaptive thinking docs state that at the default effort level, which is high, Claude almost always thinks. So on a classification, extraction, or formatting call, work that needs zero deliberation, the model reasons anyway and bills you for it.
You cannot see what you paid for. On the newest models including Sonnet 5, the thinking display defaults to "omitted". The response comes back with an empty thinking field. You are billed for the full reasoning process and shown none of it.
Put together, that is a feature you did not enable, billed at your most expensive rate, that returns nothing you can read.
What it does to a single call
Take a classification call that answers in about 200 tokens. On Sonnet 4.6 with no thinking, you are billed for roughly 200 output tokens. On Sonnet 5 at the default high effort, the model might reason for 1,500 tokens first, then answer.
| Billed output tokens | What you see | |
|---|---|---|
| Sonnet 4.6 (no thinking) | ~200 | the full answer |
| Sonnet 5 (adaptive, high) | ~1,760 | the same answer, empty thinking field |
That is roughly 8.8x the output tokens for the same visible answer. The 1,500 is illustrative, your real number depends on the workload, but the direction is not in question and the field below tells you your actual figure.
The exact field to check
Anthropic exposes what you spent on reasoning. Read this on any response:
usage.output_tokens_details.thinking_tokens
It reports the billed reasoning tokens, the ones that are not in the visible response. Run it across your last 100 production calls and you will see exactly how much of your output bill is reasoning you never asked for. This is the single most useful thing to do after migrating, and it takes about a minute.
The max_tokens trap that comes with it
Thinking tokens count toward max_tokens. That cap now covers thinking plus response text, together.
A max_tokens limit you tuned for Sonnet 4.6, sized to your expected answer length, can now be consumed by reasoning before the answer even begins. The result is a response that pays for a long internal reasoning pass and then truncates mid sentence with stop_reason: "max_tokens". You get billed for the thinking and cut off on the output.
The fix
Do not turn thinking off wholesale, since on genuinely hard tasks it earns its cost. Set effort explicitly on every call instead of inheriting the high default.
# High-volume, low-judgment work: turn the deliberation down
classify = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
thinking={"type": "adaptive"},
output_config={"effort": "low"},
messages=[...],
)
# Genuine reasoning work: let it think
refactor = client.messages.create(
model="claude-sonnet-5",
max_tokens=16000,
thinking={"type": "adaptive"},
output_config={"effort": "high"},
messages=[...],
)
Low effort for classification, extraction, and formatting. High for work that actually benefits from reasoning. The default made that decision for you, and it made it toward the expensive end.
Change three: the price step on September 1
Claude Sonnet 5’s $2/$10 pricing is introductory. It runs through August 31, 2026. On September 1, standard pricing of $3/$15 per million tokens takes effect, a 50% increase on both sides.
If you are budgeting a workload into the autumn on July’s numbers, your forecast is already wrong. Worse, the intro discount is the thing currently masking the tokenizer increase from change one. A team that migrated at $2/$10 and saw a roughly flat bill because the lower rate offset the higher token count will watch that offset disappear on September 1, while the token count stays inflated.
Here is the compound picture on an illustrative high-volume classification workload, 10,000 calls a day, roughly 1,000 input and 200 response tokens each, with adaptive thinking left at the default:
| Setup | Monthly cost | vs 4.6 |
|---|---|---|
| Sonnet 4.6, no thinking, $3/$15 | ~$1,800 | baseline |
| Sonnet 5, adaptive default, intro $2/$10 | ~$6,060 | 3.4x |
| Sonnet 5, adaptive default, standard $3/$15 | ~$9,090 | 5.0x |
Illustrative, assuming about 1,500 thinking tokens per call. The point is not the exact multiple, it is that the same workload can cost several times more after a migration that looked like a drop-in. Set effort to low on this kind of call and most of that gap closes.
The three changes that will actually break your code
Everything above costs money silently. These three throw errors, so you will find them fast, but know them before you migrate.
| Change | Behavior on Sonnet 5 |
|---|---|
| Manual extended thinking | thinking: {type: "enabled"} returns a 400 error. Use {type: "adaptive"} with the effort parameter. |
| Sampling parameters | Setting temperature, top_p, or top_k to non-default values returns a 400 error. |
| No Priority Tier | Priority Tier is not available on Sonnet 5. |
Two more specs worth noting, since they change how you size requests: the context window is now 1M tokens by default, and max output is 128k tokens.
What to actually do before you trust the bill
A short migration checklist, in order:
- Recount your real prompts on Sonnet 5 with token counting. Do not reuse 4.6 counts.
- Read
thinking_tokenson a sample of live calls to see your true reasoning spend. - Set effort explicitly per call. Low for high-volume, low-judgment work. High for real reasoning.
- Resize max_tokens so thinking plus response fits without truncating.
- Recheck cache breakpoints, which may have shifted under the new tokenizer.
- Fix the 400s: remove manual thinking and non-default sampling params.
- Reforecast for September 1 at $3/$15, not the intro rate.
Where a gateway fits
Two themes run through every change above: cost per task is the real unit, and the right model for a task is not always the frontier one running at high effort. A classification job does not need Sonnet 5 reasoning at all. It needs a cheap model returning structured output, and paying frontier output rates plus invisible thinking tokens for it is the exact waste this whole guide is about.
That is the case for routing per task rather than hardcoding one model. Send bulk extraction to a cheap model, send the work that earns reasoning to Sonnet 5 with effort set deliberately, and measure the delivered cost of each. Doing that across providers normally means separate accounts, keys, and SDKs. An AI API gateway collapses it into one OpenAI compatible endpoint, so switching the model on a task is a string change and you can compare real cost per task in one place.
MixRoute is built for this shape of work: one OpenAI compatible API across 200+ models, automatic failover when a provider drops, and zero markup on provider pricing. Smart routing, which picks the model best suited to each request on quality, cost, and latency, is coming. Either way, the habit that protects you is the same one this guide keeps returning to: watch tokens per task, not the rate card.
FAQ
Why did my Claude bill go up after switching to Sonnet 5? Two silent changes. The new tokenizer counts about 30% more tokens for the same text, and adaptive thinking is on by default, adding reasoning tokens billed at the output rate. Neither throws an error. Check usage.output_tokens_details.thinking_tokens to see your reasoning spend, and re-measure your prompts on the new tokenizer.
Is Claude Sonnet 5 more expensive than Sonnet 4.6? The rate is the same at $3/$15 standard, and lower at the $2/$10 introductory rate through August 31, 2026. But the effective cost per task is higher, because the new tokenizer counts more tokens and adaptive thinking adds output-billed reasoning. Same rate, more tokens, higher bill.
What is adaptive thinking and why does it cost more? Adaptive thinking lets the model decide when to reason before answering. On Sonnet 5 it is on by default at high effort, so the model almost always thinks. Those thinking tokens bill at the output rate, 5x input, and the thinking field returns empty by default, so you pay for reasoning you cannot see. Set the effort parameter to low on tasks that do not need it.
How do I turn off thinking on Claude Sonnet 5? Pass thinking: {type: "disabled"} to turn it off entirely, or keep adaptive thinking and set effort to low or medium to reduce it on tasks that do not need deep reasoning. Setting effort per call is usually better than disabling thinking outright.
When does Claude Sonnet 5 pricing increase? Introductory pricing of $2/$10 per million tokens runs through August 31, 2026. Standard pricing of $3/$15 takes effect September 1, 2026, a 50% increase. Budget any workload running past that date on the standard rate.
What breaks when I migrate from Sonnet 4.6 to Sonnet 5? Three things return 400 errors: manual extended thinking (thinking: {type: "enabled"}), non-default sampling parameters (temperature, top_p, top_k), and there is no Priority Tier. Everything else is a silent cost change rather than a break.
The bottom line
Sonnet 5 is a real capability upgrade and, for many workloads, the right default. It is also not a free drop-in. The rate card says flat, the invoice says otherwise, and the gap is two silent token changes plus a September price step.
Recount your prompts. Read your thinking tokens. Set effort deliberately. Reforecast for September 1. And measure cost per task, not cost per token, because that is the only number that survives a tokenizer change, a thinking default, and a price increase all landing at once.
MixRoute gives you every major model behind one OpenAI compatible endpoint with automatic failover and zero markup, so routing the cheap work away from the expensive default is a string change. Start building on MixRoute