Skip to content
AI

Claude Sonnet 5.5 Hidden Costs: What Changed on Your Bill Since Sonnet 5 (2026)

POSTED ON UPDATED ON 13 min read MixRoute

Claude Sonnet 5.5 Hidden Costs: What Changed on Your Bill Since Sonnet 5 (2026)
Claude Sonnet 5.5 Hidden Costs: What Changed on Your Bill Since Sonnet 5 (2026)

Claude Sonnet 5.5 lists at the same $2 per million input tokens and $10 per million output tokens as Sonnet 5, so the rate card only moved on cache reads, which fell from $0.20 to $0.10 on October 7, 2026. What moves your bill is token volume. The tokenizer counts about 30% more tokens than Sonnet 4.6 for the same text, adaptive thinking runs by default and bills at the output rate, and Sonnet 5.5 recalibrated what each effort level means. Read usage.output_tokens_details.thinking_tokens on live calls, set effort on every request, and stop sending thinking: {"type": "disabled"}, which Sonnet 5.5 rejects with a 400 error.

The rate card is not the invoice

Sonnet 5.5 costs a third less than Sonnet 4.6 on input and output, and costs the same as Sonnet 5 except on cache reads. Anthropic’s pricing page lists the three models like this as of October 19, 2026:

ModelInput per 1M tokensOutput per 1M tokensCache read per 1M tokens
Claude Sonnet 5.5$2$10$0.10
Claude Sonnet 5$2$10$0.20
Claude Sonnet 4.6$3$15$0.30

The bill is rate times tokens, and Sonnet 5.5 changes how many tokens the same workload spends. A lower rate on a larger token count is how a team saves per token and still pays more per task. The number to track is cost per task.

What changed from Sonnet 5 to Sonnet 5.5

Sonnet 5.5 keeps Sonnet 5’s price and tokenizer, halves the cache-read price, and changes five API behaviors that can break code written for Sonnet 5. Sonnet 5 (claude-sonnet-5, released June 30, 2026) is still available as a legacy model, and Sonnet 5.5 (claude-sonnet-5-5) was released on September 28, 2026.

Sonnet 5Sonnet 5.5
Input / output per 1M tokens$2 / $10$2 / $10
Cache read per 1M tokens$0.20$0.10 (cut from $0.20 on Oct 7, 2026)
TokenizerNewer tokenizerSame as Sonnet 5
Turn thinking offthinking: {"type": "disabled"}thinking: {"type": "between_tools"} at high effort or below; disabled returns 400
Forced tool_choice (any or tool)AcceptedReturns 400
Minimum cacheable prompt1,024 tokens512 tokens
Effort levelsOriginal calibrationRecalibrated, so the same level thinks a different amount
Anthropic's What's new in Claude Sonnet 5.5 page listing five breaking changes for code running on Claude Sonnet 5, starting with turning off up-front thinking with between_tools
Anthropic lists five breaking changes for code moving from Sonnet 5 to Sonnet 5.5, led by the between_tools switch and the forced tool use error. Source: Claude Platform docs, captured 2026-10-19.

Anthropic’s launch post says Sonnet 5.5 typically needs far fewer tokens than Sonnet 5 for the same work and costs up to 30% less per task in its own testing. That is a vendor test on vendor tasks. If you copy your Sonnet 5 effort setting into Sonnet 5.5 unchanged, you get a different amount of thinking than before, and the per-task cost moves with it. Anthropic’s advice is to rerun your effort sweep on your own evals instead of carrying the setting over.

Change one: the same text now counts as more tokens

Sonnet 5.5 counts about 30% more tokens than Sonnet 4.6 for the same text, because it uses the newer tokenizer that Claude 4.7 and later models share. Anthropic says the exact increase depends on your content and workload shape. Moving from Sonnet 5 to Sonnet 5.5 changes nothing here, since both use the same tokenizer.

Nothing about your prompt changed. A 1,000-token prompt on Sonnet 4.6 lands closer to 1,300 tokens on Sonnet 5.5, on the input you send and on any text the model returns. Your rate held and your token count did not.

Two side effects follow:

  • Context budgets get tighter. Anthropic’s models overview puts 1M tokens at roughly 555k words on the current tokenizer, against about 750k words on earlier models. A document you sized to fit with headroom now takes more of the window.
  • Cost projections built on Sonnet 4.6 counts are low. Recount your real prompts with Anthropic’s token counting endpoint on Sonnet 5.5 and rebuild the forecast from those numbers.

To review the token unit behind this cost, see what a token means on an AI API bill.

Change two: adaptive thinking is on by default, and you cannot see it

A Sonnet 5.5 request with no thinking field runs with adaptive thinking, and that thinking bills as output tokens even though the response shows none of it. On Sonnet 4.6, the same request ran without thinking, so a migration that changed only the model ID added a cost line nobody opted into.

Three facts from Anthropic’s docs combine to make it expensive:

  • Thinking tokens bill as output tokens. Output costs $10 per million on Sonnet 5.5, five times the $2 input rate.
  • The default effort is high. A classification, extraction or formatting call that needs no deliberation still runs at the default unless you set effort yourself.
  • The thinking text is omitted by default. The response comes back with an empty thinking field, but you are billed for the full reasoning the model generated.

What it does to a single call

Take a classification call whose visible answer is about 200 tokens on Sonnet 4.6. With no thinking, you pay for roughly 200 output tokens. The same answer counts about 260 tokens on Sonnet 5.5, and if the model reasons for 1,500 tokens first, you pay for about 1,760.

Billed output tokensWhat you see
Sonnet 4.6 (no thinking)~200The full answer
Sonnet 5.5 (adaptive, high)~1,760 (260 answer + 1,500 assumed thinking)The same answer, empty thinking field

That is about 8.8 times the output tokens for the same visible answer. The 1,500 is an assumption; your workload sets the real number, and the next field shows it.

The exact field to check

Anthropic reports the billed reasoning tokens on every response:

Code
usage.output_tokens_details.thinking_tokens

The value counts the raw reasoning the model generated, never exceeds output_tokens, and output_tokens stays the total you are billed for. When you stream, the breakdown appears only on the final message_delta event. Log it for your last 100 production calls and you know how much of your output bill is reasoning.

The max_tokens trap that comes with it

Thinking counts toward max_tokens, together with the response text. A cap you sized for a Sonnet 4.6 answer can run out during the reasoning, and the response then ends with stop_reason: "max_tokens" and a truncated or missing text block. You pay for the thinking and get a cut-off answer. Raise max_tokens when the truncated requests needed the reasoning, and lower the effort when they were over-thought.

The fix

Set effort explicitly on every call instead of inheriting high. Anthropic suggests starting at high unless the work is agentic or latency-sensitive, at medium for well-specified agentic coding, and at medium or low for chat and other latency-sensitive calls. Artificial Analysis’s benchmark data shows how much the setting matters: its Low-effort variant of Sonnet 5.5 is the cheapest of the five, and prices across the variants differ by up to 16 times on its test tasks.

Code
# High-volume, low-judgment work: turn the deliberation down
classify = client.messages.create(
    model="claude-sonnet-5-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-5",
    max_tokens=16000,
    thinking={"type": "adaptive"},
    output_config={"effort": "high"},
    messages=[...],
)

If you want no up-front thinking at all, send thinking: {"type": "between_tools"} at low, medium or high effort. Without tools, the response contains only text. At xhigh or max, between_tools returns a 400 error, so use adaptive thinking there.

One more cost sits in the effort setting. Changing the top-level effort between requests starts the prompt cache over, so a long conversation that relies on cache hits should hold effort constant. Sonnet 5.5 also supports a per-message effort change that keeps the cache, but not together with between_tools. For cache pricing and hit-rate mechanics, see prompt caching and cached input costs.

Change three: the September price step never happened

Sonnet 5’s $2/$10 price is permanent, and Sonnet 5.5 launched at the same rate. Anthropic launched Sonnet 5 on June 30, 2026 with $2/$10 as introductory pricing through August 31, then made it the standard price on August 10 and confirmed that the increase to $3/$15 on September 1 would not occur. Your rate stays at $2/$10, and no reforecast at $3/$15 is needed.

Timeline of Claude Sonnet pricing in 2026: Sonnet 5 launches at $2/$10 on June 30, becomes standard on August 10, the September 1 step to $3/$15 does not occur, Sonnet 5.5 launches September 28, and its cache reads fall to $0.10 on October 7
The only list-price change since Sonnet 5 is the October 7 cache-read cut; the September step to $3/$15 never took effect.

The one price that did move is the cache read. A 50,000-token prompt prefix read from cache costs $0.005 per hit on Sonnet 5.5 ($0.10 per million), against $0.01 on Sonnet 5 and $0.015 on Sonnet 4.6. Cache writes did not change: $2.50 per million for the 5-minute cache and $4 for the 1-hour cache. Some pricing guides still quote $0.20 for Sonnet 5.5 cache reads.

Anthropic release note: prompt cache reads on Claude Sonnet 5.5 lowered from $0.20 to $0.10 per million tokens, 0.05x the base input price
Anthropic's October 7 release note cuts Sonnet 5.5 cache reads from $0.20 to $0.10 per million tokens and leaves cache writes unchanged. Source: Claude Platform release notes, captured 2026-10-19.

What it adds up to

Picture a team running 10,000 classification calls a day, 30 days a month. Each call sends about 1,000 input tokens on Sonnet 4.6 and returns a 200-token answer. On Sonnet 5.5, the same text counts about 1,300 input tokens and 260 answer tokens. The only thing that varies in the table is how many thinking tokens each call spends.

SetupMonthly costvs Sonnet 4.6
Sonnet 4.6, no thinking, $3/$15$1,800baseline
Sonnet 5.5, 0 thinking tokens per call, $2/$10$1,5600.87x
Sonnet 5.5, 500 thinking tokens per call$3,0601.7x
Sonnet 5.5, 1,500 thinking tokens per call$6,0603.4x

Sonnet 4.6: 300M input tokens at $3 plus 60M output tokens at $15. Sonnet 5.5: 390M input tokens at $2, plus 78M answer tokens and 150M or 450M thinking tokens at $10. The thinking counts are assumptions, not measurements, and Sonnet 5.5’s recalibrated effort levels may land elsewhere on your workload. The pattern holds: with little thinking the new model is cheaper, and with heavy thinking the same drop-in migration can cost several times more.

Bar chart of monthly cost for the same workload: $1,800 on Sonnet 4.6, $1,560 on Sonnet 5.5 with no thinking, $3,060 with 500 thinking tokens per call and $6,060 with 1,500
The same Sonnet 5.5 workload costs $1,560 or $6,060 a month depending only on how many thinking tokens each call spends.

The changes that return 400 errors

Sonnet 5.5 returns a 400 error on four request shapes that Sonnet 4.6 accepts, and two of them also worked on Sonnet 5. The cost changes above are silent; these fail loudly, so you find them fast.

RequestSonnet 4.6Sonnet 5Sonnet 5.5
thinking: {"type": "enabled", "budget_tokens": N}Accepted (deprecated)400400
thinking: {"type": "disabled"}AcceptedAccepted400, use between_tools
Non-default temperature, top_p or top_kAccepted400400
tool_choice of type any or toolAcceptedAccepted400, use auto

The two thinking errors read like this on Sonnet 5.5. A manual thinking budget fails with "thinking.type.enabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior. Switch to thinking: {"type": "adaptive"} and steer depth with effort. Sending disabled fails with a message telling you to send between_tools instead.

Decision chart mapping five failing Sonnet 5.5 requests to fixes: manual thinking budgets, thinking disabled, between_tools at xhigh or max, forced tool_choice, and non-default sampling parameters
Each Sonnet 5.5 400 error maps to one change: adaptive thinking, between_tools, auto tool_choice, or removing the sampling parameter.

For forced tool use, keep tool_choice on auto and set strict: true on the tool, then say in the prompt when the tool applies. Sonnet 5.5 also ties each thinking block to the model and the conversation: replaying a block after you edited earlier history can return a 400 error, so keep conversations append-only. Priority Tier is not available on Sonnet 5 or Sonnet 5.5 either. Context is 1M tokens and max output is 128K tokens, at the standard per-token rate with no long-context surcharge.

What to do before you trust the bill

Work through these in order, and rerun them whenever you change the model ID:

  1. Recount your real prompts on Sonnet 5.5 with token counting. Do not reuse Sonnet 4.6 counts.
  2. Read thinking_tokens on a sample of live calls to see your true reasoning spend.
  3. Set effort explicitly per call, and rerun your effort sweep if you came from Sonnet 5.
  4. Resize max_tokens so thinking plus the response fits without truncating.
  5. Hold effort constant inside cached conversations, or use per-message effort.
  6. Fix the 400s: move disabled to between_tools, drop manual budgets and non-default sampling values, and replace forced tool_choice with auto.
  7. Budget at $2/$10, with cache reads at $0.10.

For the broader cost-control path, see reduce LLM API costs without losing quality.

Where a gateway fits

A gateway helps when different tasks deserve different models, because the switch is one string. A classification job may not need Sonnet-class reasoning at any effort. Anthropic lists Claude Haiku 5.5 at $0.10 input and $0.50 output per million tokens for prompts up to 100,000 tokens, though it also thinks by default, at medium effort. Whether it is good enough for your labels is a test to run on your own data, with cost per task as the score.

MixRoute lists Claude Sonnet 5.5 in its model catalog as claude-sonnet-5-5, with the 1M context window and 128K max output, alongside claude-haiku-5-5, among 250+ models through a single endpoint with no markup. The Anthropic SDK works by pointing base_url at https://api.mixroute.ai and using your MixRoute key; OpenAI SDK clients use https://api.mixroute.ai/v1. See MixRoute pricing for top-up tiers. Check each model’s price on its catalog page before you budget. Start building on MixRoute.

Code
from anthropic import Anthropic

client = Anthropic(
    api_key="YOUR_MIXROUTE_KEY",
    base_url="https://api.mixroute.ai",
)

resp = client.messages.create(
    model="claude-sonnet-5-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Classify this ticket: ..."}],
)

FAQ

Why did my Claude bill go up after switching to Sonnet 5.5? Usually token volume, not price. Sonnet 5.5 costs the same per token as Sonnet 5, but its tokenizer counts about 30% more tokens than Sonnet 4.6 for the same text, and adaptive thinking runs by default and bills at the output rate. Check usage.output_tokens_details.thinking_tokens to see your reasoning spend, then set effort per call.

Is Claude Sonnet 5.5 more expensive than Sonnet 4.6? It depends on thinking. The rate card is lower: $2/$10 per million tokens against $3/$15. Per task it can go either way. In the example above, a call with no thinking costs 0.87x of Sonnet 4.6 and a call with 1,500 thinking tokens costs 3.4x. Measure your own workload at the effort you will ship.

What is adaptive thinking and why does it cost more? Adaptive thinking lets the model decide how much to reason before it answers, steered by the effort setting. On Sonnet 5.5 it is on by default at high effort. The reasoning tokens bill at the output rate, five times the input rate, and the thinking field comes back empty by default, so you pay for reasoning you cannot read. Lower the effort on calls that need no deliberation.

How do I turn off thinking on Claude Sonnet 5.5? Send thinking: {"type": "between_tools"} at low, medium or high effort. thinking: {"type": "disabled"} works on Sonnet 5 but returns a 400 error on Sonnet 5.5. If your calls use tools, the short progress updates the model writes between tool calls still come back as thinking blocks. For partial savings, keep adaptive thinking and lower the effort.

Did the Claude Sonnet 5 price increase to $3/$15 happen? No. Anthropic made the $2/$10 rate the standard price on August 10, 2026 and confirmed the increase scheduled for September 1 would not occur. Sonnet 5.5 launched at the same $2/$10 on September 28. Budget at $2/$10, and note that Sonnet 5.5 cache reads dropped to $0.10 per million tokens on October 7.

What breaks when I migrate from Sonnet 5 to Sonnet 5.5? Five things can return errors or change behavior: thinking: {"type": "disabled"}, forced tool_choice, thinking blocks replayed after an edit to earlier history, the older computer_20251124 tool on the Claude API and Google Cloud, and advisor-tool pairings that Sonnet 5.5 does not accept. Text between tool calls also moves into thinking blocks, which silences an interface that streams it until you set a display value.

How much cheaper are cache reads on Sonnet 5.5? They cost half as much as on Sonnet 5: $0.10 per million tokens, down from $0.20, which is 5% of the $2 input price. Cache writes are unchanged at $2.50 for 5 minutes and $4 for 1 hour. The minimum cacheable prompt also dropped from 1,024 tokens to 512, so shorter prefixes can now be cached.

Scan to share
Scan to share
AI How to Pay for AI APIs With PYUSD (PayPal USD) MixRoute 11 min read AI How to Pay for AI APIs With Bitcoin, On Chain or Over Lightning MixRoute 10 min read AI How to Pay for AI APIs With ETH (And When You Should Not) MixRoute 12 min read