Claude Opus 5.5 API: What Changed and What Breaks

Claude Opus 5.5 (claude-opus-5-5, released September 22, 2026) costs $4 per million input tokens and $20 per million output tokens, down from $5 and $25 on Opus 4.8, and it rejects requests that older Opus models accept. Thinking can no longer be disabled, a forced tool_choice returns a 400, and the older computer use tool is refused on the Claude API. The default effort is now medium. If you are moving from Opus 4.8, change the model ID, drop the thinking field, set effort yourself, and read response blocks by type. Details are in Anthropic’s launch post and its What’s new page.
Which requests return a 400 on Opus 5.5
Four things that Opus 4.8 accepts now fail on Opus 5.5 with an HTTP 400 invalid_request_error: turning thinking off, forcing a tool call, declaring the older computer use tool, and replaying thinking blocks after the conversation history changed. Two more rows in the table below were already errors on Opus 4.8, so code that runs there today passes them.

| Request setting | Opus 4.8 | Opus 5.5 | Send instead |
|---|---|---|---|
thinking: {"type": "disabled"} | Accepted; thinking is off unless you ask for it | 400 | Omit thinking and set output_config.effort |
thinking: {"type": "enabled", "budget_tokens": N} | 400 | 400 | thinking: {"type": "adaptive"} plus effort |
tool_choice of any or tool | Accepted | 400, also on token counting | auto with strict: true, or structured outputs |
Non-default temperature, top_p or top_k | 400 | 400 | Omit them |
| Assistant prefill | 400 | 400 | Structured outputs or a system prompt instruction |
computer_20251124 tool | Accepted | 400 on the Claude API and Google Cloud; still works on Amazon Bedrock | computer_toolset_20260801, no beta header |
These are the messages the API returns for the first three failures, as listed on Anthropic’s What’s new page:
"thinking.type.disabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.
tool_choice: type "tool" and "any" are not supported for this model.
'claude-opus-5-5' does not support tool types: computer_20251124.The fourth change does not show up in a test request. Every thinking block records which model wrote it. Opus 5.5 reads blocks from Opus 5, from earlier Opus, Sonnet and Haiku models, and, on the Claude API and Google Cloud, from Sonnet 5.5 and Haiku 5.5, but not from Fable or Mythos models. On the Claude API, only Fable 5.1 and Mythos 5.1 read Opus 5.5’s blocks. A router or fallback that moves a conversation to any other model therefore runs the later turns without the earlier reasoning, and the request still succeeds.
The 400 comes from editing history. On accounts created on or after August 31, 2026 (00:00 UTC), a request that replays a thinking block after the system prompt, the tools or an earlier message has changed returns an error. An agent that rewrites its system prompt on every step hits this as soon as it replays a thinking block. Keep the conversation append-only, and send changed instructions as mid-conversation system messages instead of edits. Because an unexpected 400 is not a transient failure, do not put it behind a retry loop; LLM API error codes covers which statuses are worth retrying.
Changes that fail without an error
Five changes leave every request succeeding while your product behaves differently, so a dashboard that watches error rates will not catch them.
- Progress text goes quiet. The short notes the model writes between tool calls arrive as
thinkingblocks, nottextblocks, and their text is empty at the defaultthinking.displayof"omitted". An app that streams those notes to users shows nothing between tool calls. Setdisplayto"updates"(beta, headerthinking-display-updates-2026-08-18) to get the notes while reasoning stays hidden, or to"summarized"to get both. Render each non-empty thinking block ahead of thetool_useblock it precedes. - Responses start with thinking blocks. Code that reads
content[0].text, or treats the first streamed block as text, breaks. Select blocks by theirtype. - Thinking blocks must come back untouched. In a tool-use loop, pass each assistant message back as received, including blocks whose
thinkingfield is empty. The API rejects edited, reordered or partly dropped blocks with a 400. max_tokensnow covers thinking. It is a hard limit on thinking plus response text, and thinking tokens are billed as output even when their text is not returned. Atxhighormaxeffort, Anthropic suggests starting at 64k.- Refusals are a normal response. A declined request returns HTTP 200 with
stop_reason: "refusal"and astop_detailscategory. Opus 5.5 adds a biology classifier next to the cybersecurity one. Handle the stop reason and set up fallback, either thefallbacksparameter (beta) or your own retry. Server-side fallback does not retry areasoning_extractionrefusal.

Migrate a request from Opus 4.8
Five edits move a working Opus 4.8 request to Opus 5.5. Each one has a visible result, and Anthropic’s migration guide lists the full checklist for every starting model.
- Change the model to
claude-opus-5-5. The ID has no date suffix, and the request now targets Opus 5.5. - Delete any
thinkingfield that disables thinking, and addoutput_configwith an effort level. The 400 on thinking disappears. - Replace a forced
tool_choicewithauto, setstrict: trueon the tool, and say in the prompt when the tool applies. Every object in a strict tool’s schema needsadditionalProperties: false. - Read the reply by block type instead of position, and render thinking blocks if your UI shows progress. Replies that start with a thinking block no longer break the parser, and progress text returns between tool calls.
- Raise
max_tokensfor any workload that used to run without thinking, then compare cost and latency at your chosen effort. Replies are no longer cut off because thinking used up the limit.
import anthropic
client = anthropic.Anthropic()
tool = {
"name": "get_weather",
"description": "Get the current weather for a city",
"input_schema": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
"additionalProperties": False,
},
"strict": True,
}
response = client.messages.create(
model="claude-opus-5-5",
max_tokens=16000,
output_config={"effort": "medium"},
tools=[tool],
tool_choice={"type": "auto"},
messages=[
{
"role": "user",
"content": "What's the weather in Paris? Use the get_weather tool.",
}
],
)
for block in response.content:
if block.type == "text":
print(block.text)
With auto the model decides whether to call the tool, so test how often it answers in text on your own prompts before you ship. Forcing the tool on Opus 4.8 guaranteed a tool call, and auto does not.
Claude Opus 5.5 pricing: $4 input, $20 output
Opus 5.5 lists at $4 per million input tokens and $20 per million output tokens, 20% below Opus 4.8’s $5 and $25, and cache reads fall from $0.50 to $0.20. The table compares Anthropic’s list prices per million tokens.
| Opus 4.8 | Opus 5.5 | |
|---|---|---|
| Input | $5 | $4 |
| Output | $25 | $20 |
| Cache read | $0.50 | $0.20 |
| Cache write, 5 minutes | $6.25 | $5 |
| Cache write, 1 hour | $10 | $8 |
| Batch input / output | $2.50 / $12.50 | $2 / $10 |
| Fast mode input / output | $10 / $50 | $8 / $40 |

Anthropic says Opus 5.5 costs 40% less than Opus 5 on typical workloads at default settings, because it also uses fewer tokens per task. Opus 5 had the same $5 and $25 price as Opus 4.8, so that saving is measured against a different baseline than the table above. For long agent loops that re-read the same prefix, the cache-read cut matters most; the prompt caching guide shows how to keep that prefix stable.
The cheaper output rate has one catch. Opus 5.5 always thinks, and thinking tokens bill as output. At $20 against $25, output can grow 25% before the same request costs more on output than it did on Opus 4.8. Take a pipeline that returned 2,000 output tokens per call with thinking off on Opus 4.8, which cost $0.05 in output. On Opus 5.5, $0.05 buys 2,500 tokens, so more than 500 tokens of thinking per call erases the saving. This is an illustration from list prices, not a measured bill. Lowering effort shrinks the thinking.

Context window, output limit and effort levels
Opus 5.5 keeps the 1M-token context window and the 128K synchronous output limit of recent Opus models, and effort has five levels with medium as the default. The specs below come from Anthropic’s Opus 5.5 model page.
| Spec | Claude Opus 5.5 |
|---|---|
| Claude API model ID | claude-opus-5-5 (Amazon Bedrock: anthropic.claude-opus-5-5) |
| Context window | 1M tokens, the default, no beta header |
| Max output | 128K tokens; 300K on the Batch API with the output-300k-2026-03-24 beta header |
| Thinking | Adaptive, always on |
| Default effort | medium |
| Minimum cacheable prompt | 512 tokens |
| Knowledge cutoff | June 2026 |
| Retirement | Not sooner than September 22, 2027 |
Effort takes low, medium, high, xhigh or max in output_config.effort, and sending medium behaves exactly like omitting it. Opus 4.8 and Opus 5 defaulted to high, so a request that never set effort now runs one level lower. Anthropic’s effort guide says to run a fresh sweep on your own evals instead of carrying a setting over from an earlier model, and to leave a large max_tokens at the higher levels. Per-message effort changes, in beta, let you change the level mid-conversation without invalidating the prompt cache.
Fast mode: up to 2.5x output speed at $8 and $40
Fast mode on Opus 5.5 runs the same model at up to 2.5x the output tokens per second for $8 per million input tokens and $40 per million output tokens, which is $2 and $10 below fast mode on Opus 4.8 and Opus 5. Add "speed": "fast" to the request. Opus 5.5 needs no beta header and no access request, while fast mode on Opus 5 and Opus 4.8 is still a research preview that does.
The gain is output speed, not time to first token. A long agent run that streams a lot of text finishes sooner, and a chat reply that waits mostly on the first token barely changes. Fast mode pricing applies across the whole context window, including requests over 200k input tokens, and caching and data residency multipliers stack on top. It works on the Claude API and on Claude in Microsoft Foundry for Azure-hosted deployments. It is not available on Amazon Bedrock, Claude Platform on AWS or Google Cloud, and not with the Batch API. See Anthropic’s fast mode page for rate limits.
What changed since Opus 4.8
Opus 4.8 launched on May 28, 2026 at $5 and $25. Two releases followed: Opus 5 on July 24, 2026, with thinking on by default at the same $5 and $25, and Opus 5.5 on September 22, 2026 at $4 and $20. Opus 4.8 is now listed as a legacy model, still callable, and Anthropic’s models overview says to start with Opus 5.5 for most workloads.

Beyond the breaking changes above, four differences affect a planned move:
- Prompts of 512 tokens or more can now create cache entries, down from 1,024 tokens on Opus 4.8, with no code change.
- Priority Tier is not supported on Opus 5.5, while Opus 4.8 keeps it. A team with a Priority Tier commitment needs a separate capacity plan.
- Task budgets (beta) tell the model how many tokens it has for a whole agentic loop.
- The model reads dense charts, diagrams and screenshots more precisely, so vision workarounds built for older models may be unnecessary.
The earlier version of this page, written for Opus 4.8’s launch, argued against rewiring a stack for each release. That holds for the model ID, but Opus 5.5 is the release where request fields change too. For benchmarks, cost per task and when Fable 5.1 or an open-weight model is the better pick, see GLM-5.3 vs Opus 5.5 vs Fable 5.1.
Call Claude Opus 5.5 through MixRoute
MixRoute lists Claude Opus 5.5 as claude-opus-5-5 with a 1M context window, 128K max output, and the same rates Anthropic lists: $4 input, $20 output, $0.20 cache read and $5 cache creation per million tokens. The endpoint decides which client you keep. Anthropic SDK users point base_url at https://api.mixroute.ai (no /v1) and keep client.messages.create. OpenAI SDK users point at https://api.mixroute.ai/v1 and use chat completions.
import anthropic
client = anthropic.Anthropic(
api_key="YOUR_MIXROUTE_KEY",
base_url="https://api.mixroute.ai",
)
response = client.messages.create(
model="claude-opus-5-5",
max_tokens=4096,
messages=[{"role": "user", "content": "Summarize this changelog."}],
)
for block in response.content:
if block.type == "text":
print(block.text)
Between Opus versions on one MixRoute key, the model string is the line that changes. claude-opus-4-8 stays in the catalog at $5 and $25, so you can keep it as a rollback while you test. The request edits in the sections above are Anthropic’s rules for Opus 5.5 and need their own tests. MixRoute’s Opus 5.5 page lists one rate and no fast-mode rate, so if speed: "fast" matters to your plan, ask MixRoute before you build on it. Rates and the full catalog are on the models page.
FAQ
How much does Claude Opus 5.5 cost? $4 per million input tokens and $20 per million output tokens, against $5 and $25 for Opus 4.8 and Opus 5. Cache reads are $0.20, 5-minute cache writes $5 and 1-hour writes $8, and the Batch API takes 50% off input and output. Fast mode is priced separately at $8 and $40. Output includes thinking tokens, so the bill depends on the effort level you set.
What is the model ID for Claude Opus 5.5? claude-opus-5-5 on the Claude API, Google Cloud, Microsoft Foundry, Claude Platform on AWS and MixRoute. On Amazon Bedrock it is anthropic.claude-opus-5-5. The ID has no date suffix, the same scheme as claude-opus-5, so there is no snapshot string to pin.
Why does my Opus 4.8 code return a 400 on Opus 5.5? Most often the request disables thinking or forces a tool with tool_choice. Read the error message: it names the rejected setting, such as "thinking.type.disabled" or tool_choice: type "tool" and "any". If neither appears, check for a computer_20251124 tool, a non-default temperature, or a thinking block replayed after you edited the system prompt.
Can I turn off thinking on Claude Opus 5.5? No. Adaptive thinking is always on, and thinking: {"type": "disabled"} returns a 400 at every effort level. Sending {"type": "adaptive"} is the same as omitting the field. To get less thinking, set a lower effort. Anthropic’s Opus 5 notes allowed disabling at high or below, so code written for Opus 5 can break here too.
Can I still set temperature on Opus 5.5? Only to its default value. Any other temperature, top_p or top_k returns a 400, and the Python SDK raises a TypeError because it does not define them. This has applied since Opus 4.7, so Opus 4.8 code already passes. Guide behavior with prompting, and do not expect temperature = 0 to give identical outputs.
What is the context window of Claude Opus 5.5? 1M tokens by default, with no beta header, and up to 128K output tokens per synchronous request. The Batch API raises output to 300K with the output-300k-2026-03-24 beta header. A context-window beta header left over from an older model has no effect, so you can remove it. Knowledge is reliable through June 2026.
Is Claude Opus 5.5 better than Opus 4.8? By Anthropic’s numbers yes, though no table compares them directly. Anthropic calls Opus 5 a step-change improvement over Opus 4.8, and its launch table puts Opus 5.5 at 66.4% on Terminal-Bench 4.0 at xhigh effort against 52.3% for Opus 5. The tbench.ai leaderboard lists 64.8% for Opus 5.5 at max effort, with a margin of 3.1 points. Test your own prompts at the effort you plan to use.
Can I use Claude Opus 5.5 through MixRoute? Yes. MixRoute lists claude-opus-5-5 at $4 input and $20 output per million tokens, on both the Anthropic-style /v1/messages endpoint and the OpenAI-compatible /v1/chat/completions endpoint. Create one key, set the matching base URL, and change the model string. The page lists no fast-mode rate, so confirm speed: "fast" with MixRoute before relying on it.