If your code still calls claude-sonnet-4-5, it has an expiry date: November 30, 2026. On that day Anthropic retires the model, and requests to it start failing. The recommended replacement, Claude Sonnet 5.5, is cheaper per token — but a straight model-id swap will break your integration in at least half a dozen ways. This checklist gets you from 4.5 to 5.5 without a production incident.
The dates that matter#
Anthropic moved claude-sonnet-4-5-20250929 to deprecated on September 30, 2026, with retirement set for November 30, 2026. The named replacement is claude-sonnet-5-5, which went generally available on September 28, 2026. That is roughly two months of notice — consistent with Anthropic's usual 60-day deprecation policy.
One date caveat: these are Anthropic's own-platform dates. Amazon Bedrock and Google Cloud set their own retirement schedules, so if you call Sonnet 4.5 through either of those, check their model tables separately. And don't plan to finish on November 29 — providers routinely reduce capacity for deprecated models before the hard date, so treat early November as your real deadline.
What changes in price#
The good news first: the migration is a price cut, not a hike.
| Claude Sonnet 4.5 | Claude Sonnet 5.5 (Anthropic list) | Sonnet 5.5 on Tokens | |
|---|---|---|---|
| Input / 1M tokens | $3.00 | $2.00 | $2.20 |
| Output / 1M tokens | $15.00 | $10.00 | $11.00 |
| Status | Retires Nov 30, 2026 | Current | In the catalog |
Per-token prices drop by a third. But the bill story is more complicated, because Sonnet 5.5 changes how many tokens you burn per request — read the next section before you celebrate.
The breaking changes (what returns a 400)#
Sonnet 5.5 rejects request patterns that Sonnet 4.5 accepted. These are hard errors, not deprecations — your code gets a 400 and the request fails.
- Thinking budgets are gone.
thinking: {"type": "enabled", "budget_tokens": N}is rejected. Usethinking: {"type": "adaptive"}with an effort level (low,medium,high) instead. Set the effort explicitly — the recalibrated levels won't match your old budget's behavior. thinking: {"type": "disabled"}is rejected. The replacement for "don't think" is{"type": "between_tools"}, which only allows thinking between tool calls. Note it isn't accepted atxhigh/maxeffort.- Sampling parameters are locked. Non-default
temperature,top_p, andtop_kreturn a 400. Remove them from your requests. - Prefill is gone. A conversation can no longer end with an assistant message. If your code forced JSON by prefilling an opening brace, switch to structured outputs or a tool with fixed fields.
- Forced tool use is gone.
tool_choice: {"type": "any"}or{"type": "tool"}returns a 400.autoandnonestill work — for schema-valid input, keepautoand mark the toolstrict: true. - Old computer-use tool rejected. The
computer_20251124tool returns a 400; usecomputer_toolset_20260801instead.
The silent changes (no error, different behavior)#
These won't crash your code, but they'll surprise you — and your bill.
- Thinking is on by default. On Sonnet 4.5, no
thinkingfield meant no thinking. On 5.5, a request with nothinkingfield runs adaptive thinking — and that thinking bills as output tokens. If your workload was tuned for zero thinking cost, set it explicitly. - ~30% more tokens per text. The same text produces roughly 30% more tokens than on Sonnet 4.5, so the per-token price cut is partly offset. Measure, don't assume.
- Response shape changed. A response may now begin with a
thinkingblock, and notes between tool calls can arrive inside thinking blocks with empty visible text. Code that readscontent[0].textblindly is brittle — iterate the blocks and check types. - Thinking blocks are bound to the conversation. Tool-use loops must send thinking blocks back unchanged; editing the system prompt, tools, or an earlier message before a signed block can return a 400 on newer accounts.
- Caching got cheaper to start. The minimum cacheable prompt drops from 1,024 to 512 tokens — long agent sessions replaying context get cheaper per turn.
The migration checklist#
Work through this in order; each step is small, and the whole thing is an afternoon.
- Inventory every 4.5 reference. Search for
sonnet-4-5,claude-sonnet-4-5, and dated variants likeclaude-sonnet-4-5-20250929across code, configs, evals, and fallback chains. Include the places you forgot: cron jobs, notebooks, and vendor dashboards. - Swap the thinking parameters. Replace
budget_tokenswithadaptive+ an explicit effort level, anddisabledwithbetween_tools. Start atmediumeffort — Anthropic's recommended starting point. - Strip sampling parameters. Remove any non-default
temperature,top_p, ortop_k. - Fix prefill and tool_choice. Replace assistant-message prefills with structured outputs; replace forced tool use with
auto+strict. - Harden response parsing. Iterate content blocks by type instead of reading
content[0].text, and pass thinking blocks back unchanged in multi-turn loops. - Re-run your evals. Effort levels are recalibrated — your old settings won't behave the same way. Compare quality, tokens used, and latency on a sample of real tasks before and after.
- Re-measure cost per task. The per-token price is lower, but ~30% more tokens per text and default-on thinking move the total. Compute cost per successful task, not per token.
- Canary, then cut over. Route a slice of traffic first and watch error rates — the 400s above show up immediately in logs. Keep the 4.5 route as a fallback until the canary is clean.
A minimal request that works on Sonnet 5.5#
from anthropic import Anthropic
client = Anthropic(api_key="tok_live_...", base_url="https://tokens.bd")
response = client.messages.create(
model="anthropic/claude-sonnet-5-5",
max_tokens=16000,
thinking={"type": "between_tools"}, # replaces {"type": "disabled"}
# effort: set explicitly via output_config; API default is high
tool_choice={"type": "auto"},
messages=[{"role": "user", "content": "Refactor this function."}],
)
for block in response.content: # never read content[0].text blindly
if block.type == "text":
print(block.text)The swap itself is one model id. Everything around it — thinking, sampling, tool choice, parsing — is the actual migration.
Test the migration on Tokens#
Tokens carries anthropic/claude-sonnet-5-5 in the model catalog at $2.20/$11.00 per million input/output tokens, on the Anthropic-compatible endpoint — so the migration above is literally a base URL and model-id change, no new SDK. Give the canary its own API key with a monthly spend cap and usage alerts, so an unexpected thinking-token spike warns you instead of billing you. If you pay in taka, top up with invoice like any other model — no international card involved. The docs cover setup for Claude Code, which points its sonnet alias at Sonnet 5.5 from v2.1.284 onward.
Migration FAQ#
What happens to Sonnet 4.5 requests after November 30, 2026? They fail. Retirement means the model stops serving on Anthropic's platform — plan as if the endpoint disappears, because it does.
Is Sonnet 5.5 actually cheaper for my workload? Per token, yes — a third less. Per task, it depends: the same text costs ~30% more tokens, and adaptive thinking now runs (and bills) by default. Re-run the math in our reasoning effort guide with your own thinking-token share.
Can I just change the model id and nothing else? No. At minimum, audit thinking parameters, sampling parameters, prefill usage, and forced tool choice — each returns a 400 on Sonnet 5.5. The checklist above covers the full set.
Do I need to change anything if I only use Claude Code?
Mostly no — Claude Code v2.1.284 and later points its sonnet alias at Sonnet 5.5 with medium effort by default. But re-run your own evals: effort levels are recalibrated, so the same workload may behave differently.
What about Sonnet 4.5 on Bedrock or Google Cloud? Different clocks. Both set their own retirement schedules, independent of Anthropic's November 30 date. Check their model tables directly rather than assuming you're covered.
Prices and dates checked 8 October 2026. Anthropic's deprecations page is the authority for retirement dates; the model catalog for prices on Tokens.
Sources: Anthropic model lifecycle via endoflife.ai · Sonnet 5.5 breaking changes, digitalmatters · Sonnet 5.5 vs Opus 5.5 benchmarks and migration notes · Tokens model catalog

