Claude Opus 5.5 (September 22, 2026) costs $4/$20 per million tokens, down from Opus 5’s $5/$25. Claude Sonnet 5.5 (September 28, 2026) keeps Sonnet 5’s $2/$10.
Neither is a drop-in swap. Anthropic lists four breaking API changes for Opus 5.5 and five for Sonnet 5.5, and each one fails loudly with an HTTP 400. One more change fails silently: streaming UIs go quiet between tool calls.
Definitions
- Effort - the
output_config.effortsetting (lowtomax) that controls how much the model thinks. between_tools- Sonnet 5.5’s lowest thinking setting: no thinking up front, short progress notes between tool calls.- Forced tool use -
tool_choiceset toanyor to a namedtool, which makes the model call a tool instead of replying. - Adaptive thinking - the model decides per request how much to think; you steer it with effort, not a token budget.
strict: true- a tool setting that makes the model’s tool input match the tool’s JSON schema exactly.- Structured outputs - a request mode that constrains the reply itself to a JSON schema.
- Advisor tool - a beta tool that lets the model consult a second model during a turn.
- Append-only history - never editing or deleting earlier turns; new instructions go at the end.
- MTok - one million tokens.
What shipped
| Claude Opus 5.5 | Claude Sonnet 5.5 | |
|---|---|---|
| Released | 2026-09-22 | 2026-09-28 |
| API ID | claude-opus-5-5 | claude-sonnet-5-5 |
| Price (input / output per MTok) | $4 / $20 | $2 / $10 |
| Cache reads per MTok | $0.20 | $0.20 |
| Context / max output | 1M / 128K | 1M / 128K |
| Thinking | Adaptive, always on | Adaptive; between_tools to turn off |
| Default effort | medium | high |
| Minimum cacheable prompt | 512 tokens | 512 tokens |
| Reliable knowledge cutoff | June 2026 | June 2026 |
Anthropic’s launch claims: Opus 5.5 “generates output more than 30% faster than Opus 5” and “costs 40% less to run than Opus 5” at default settings on typical workloads. Sonnet 5.5 “runs 30%+ faster” and “costs up to 30% less for most work”. These are per-task claims from the launch pages. The per-token saving is only on Opus: 20% on input and output, and cache reads drop from $0.50 to $0.20 (60%).
What breaks: the 400s
Anthropic counts “thinking can’t be disabled” as one change; the table splits it into its two request shapes.
| Old request | Opus 5.5 | Sonnet 5.5 | Fix |
|---|---|---|---|
thinking: {"type": "disabled"} | 400 | 400 (message points to between_tools) | Opus: omit thinking and lower effort. Sonnet: send {"type": "between_tools"} at high effort or below |
thinking: {"type": "enabled", "budget_tokens": N} | 400 | 400 | Adaptive thinking plus an effort level |
tool_choice any or tool | 400 | 400 | auto plus strict: true, or structured outputs; say in the prompt when the tool applies |
computer_20251124 tool (Claude API, Google Cloud) | 400 | 400 | {"type": "computer_toolset_20260801"}; Amazon Bedrock still accepts the old tool |
| Replaying a thinking block after editing earlier history | 400 on accounts created on or after 2026-08-31 | Same | Keep history append-only; to change instructions, append a new system message instead of editing earlier turns |
| Advisor tool with an Opus 4.8, Opus 4.7 or Sonnet 5 advisor | - | 400 | Opus 5.5, Opus 5, a Fable or Mythos model, or Sonnet 5.5 itself |
The exact error for forced tool use, identical on both models:
tool_choice: type "tool" and "any" are not supported for this model.
On Sonnet 5.5, between_tools has sharp edges of its own. It takes no other field (display, budget_tokens or block_binding alongside it returns a 400), it returns a 400 at xhigh and max, and it prevents changing effort on individual messages. To vary effort per turn, use adaptive thinking instead.
What breaks silently: progress text
On both models, the notes the model writes between tool calls arrive as thinking blocks, not text blocks. At the default display: "omitted" their text is empty, so a UI that streams those notes to users goes quiet mid-turn with no error. Two fixes:
- Adaptive thinking: set
thinking.displayto"updates"(beta,thinking-display-updates-2026-08-18header) to get a short summary of each note. - Sonnet 5.5 only:
between_toolsreturns the notes with their summary text and needs nodisplayfield.
A related trap on both models: a response can now start with a thinking block, whether you use adaptive thinking or between_tools. Code that reads content[0] as the answer breaks. Select blocks by type.
Migration checklist
Opus 5 to Opus 5.5:
- Change the model ID to
claude-opus-5-5. - Remove
thinking: disabledandbudget_tokens; seteffortexplicitly, because the default fell fromhightomedium. - Replace forced
tool_choicewithautoplusstrict: true. - Move
computer_20251124tocomputer_toolset_20260801on the Claude API and Google Cloud. - Set
thinking.displayif users see text between tool calls. - Keep conversations append-only.
Sonnet 5 to Sonnet 5.5:
- Change the model ID to
claude-sonnet-5-5. - Replace
thinking: disabledwithbetween_tools, athigheffort or below. - Replace forced
tool_choicewithautoplusstrict: true. - Move
computer_20251124to the toolset on the Claude API and Google Cloud. - Swap any Opus 4.8, Opus 4.7 or Sonnet 5 advisor.
- Set
thinking.displayif users see text between tool calls (not needed withbetween_tools). - Re-run your effort sweep: the levels are recalibrated even though the default is still
high.
Refusals
Both models run safety classifiers. A decline is HTTP 200 with stop_reason: "refusal" and a stop_details category. Server-side fallback (a beta option that re-runs a declined request on another model) covers only some categories:
| Opus 5.5 | Sonnet 5.5 | |
|---|---|---|
| Categories | cyber, plus new bio and reasoning_extraction | cyber, bio, frontier_llm, reasoning_extraction, general_harms |
| Retried by server-side fallback | Not reasoning_extraction | Only cyber and frontier_llm (requests that could help develop competing AI models) |
The practical risk is reasoning_extraction: any prompt that asks the model to write its reasoning into the response can now be refused, and fallback won’t rescue it. See why “show your reasoning” gets refused and the wider refusal-as-contract pattern.
Prompts, not just requests
The API changes are half the migration. The other half is prompt text written for older models: “minimize tool calls”, “include your reasoning”, “don’t think”. Claude 5.5 prompt audit: the bad lines weren’t there covers which lines the 5.5 guides retire and what Claude Code’s /doctor prompt-audit actually found on a real repo. Run the audit twice, since one pass can miss findings; “minimize tool calls” is the line to delete first.
Bottom line
Opus 5.5 is the cheaper Opus, and Sonnet 5.5 is the faster Sonnet at the same price. Both punish request code that disables thinking or forces tools, and both change the shape of streamed responses. Update the request code first, then the prompts. For the tier decision itself, start from why most agents default to the wrong Claude tier, and see how effort and thinking settings work for the lever that replaces disabled thinking.