Last verified: 2026-07-28

Disabling thinking on Opus 5 returns HTTP 400

A Claude API error and how to fix it — what triggers it, why it changed, and the working fix.

Claude API
POST /v1/messages
{
  "model": "claude-opus-5",
  "thinking": { "type": "disabled" },
  "effort": "xhigh"
}

→ HTTP 400 (invalid_request_error)
Fix:

On claude-opus-5, thinking: {"type": "disabled"} is only accepted at effort high or below. Either drop the effort level to high, medium, or low and keep thinking disabled, or keep xhigh/max and remove the thinking block entirely (Opus 5 has thinking on by default, so omitting it is usually what you want).

Why this changed

This is a change from Opus 4.8, where disabling thinking at any effort level was legal. That is what makes it easy to hit: a request body that worked yesterday can fail today purely from swapping the model string to claude-opus-5, with no other edit. If you migrated a working Opus 4.8 call and it started 400ing, this is almost certainly why.

Shipped 2026-07-24 with Claude Opus 5 · changelog · effort-levels guide

Still stuck?

See the full cross-platform troubleshooting index, the Claude Cowork hub, or the command reference. Paste your error into the search box on the index to find related fixes.