Claude API 400 "thinking.type.enabled" not supported — Thinking Configuration Fixes
Requests to /v1/messages may fail with an HTTP 400 invalid_request_error when your provided thinking object configuration is incompatible with the selected model.
Short answer
Newer models (Claude 4.7 and later) require thinking.type: "adaptive" and do not support budget_tokens. Older models (Claude 4.5 and earlier) support only thinking.type: "enabled" with budget_tokens, and reject adaptive. Adjust your thinking object to match the model family you are calling.
Last verified: 2026-11-14 (source: Anthropic API errors).
Symptoms and What the Error Means
The API returns one of two distinct errors depending on which way the incompatibility occurs.
If you send manual extended thinking to a newer model:
"thinking.type.enabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.If you send adaptive thinking to an older model:
adaptive thinking is not supported on this modelModels Affected
| Model Family | Examples | Thinking type to use |
|---|---|---|
| Newer (4.7+) | claude-opus-5-5, claude-sonnet-5-5, claude-opus-4-8 | adaptive |
| Older (4.5 and earlier) | claude-haiku-4-5 | enabled |
Why It Happens
- Model Upgrades. You upgraded your
modelID in your code, but the previous configuration (e.g.,budget_tokens) is now invalid. - Library Defaults. Some SDKs or middleware automatically inject or preserve the
thinkingobject from your previous requests, even if you switch models. - Configuration Reuse. You are using a single, unified configuration object for multiple models across your infrastructure.
Fix 1: Updating Newer Models (4.7+)
When using models like claude-opus-5-5 or claude-sonnet-5-5, remove the budget_tokens field and switch to adaptive mode.
Failing Request:
{
"model": "claude-sonnet-5-5",
"max_tokens": 1024,
"thinking": {
"type": "enabled",
"budget_tokens": 2048
},
"messages": [{"role": "user", "content": "Explain quantum computing."}]
}Fixed Request:
{
"model": "claude-sonnet-5-5",
"max_tokens": 1024,
"thinking": {
"type": "adaptive"
},
"output_config": {
"effort": "high"
},
"messages": [{"role": "user", "content": "Explain quantum computing."}]
}Fix 2: Updating Older Models (4.5 and earlier)
When using older models like claude-haiku-4-5, ensure you use enabled and specify a budget_tokens value.
Failing Request:
{
"model": "claude-haiku-4-5",
"max_tokens": 1024,
"thinking": {
"type": "adaptive"
},
"messages": [{"role": "user", "content": "Explain quantum computing."}]
}Fixed Request:
{
"model": "claude-haiku-4-5",
"max_tokens": 1024,
"thinking": {
"type": "enabled",
"budget_tokens": 2048
},
"messages": [{"role": "user", "content": "Explain quantum computing."}]
}Through a gateway
When calling Claude through a gateway like byesu, these 400 errors originate from the upstream API validation. The error is passed through directly to your client. If your SDK or proxy automatically injects parameters into your request body, ensure you inspect the final payload sent to the gateway to confirm the thinking object matches the model's requirements. The fix remains the same regardless of whether you are calling the upstream API directly or through a gateway.
FAQ
Why do I get "thinking.type.enabled" is not supported for this model?
You are sending manual extended thinking (thinking.type: "enabled") to a newer Claude model (4.7 or later) that only supports adaptive thinking. Remove the budget_tokens field, set thinking.type to "adaptive", and use output_config.effort to control depth.
Why do I get "adaptive thinking is not supported on this model"?
You are sending adaptive thinking (thinking.type: "adaptive") to an older Claude model (4.5 or earlier) that only supports manual extended thinking. Change the configuration to thinking.type: "enabled" and provide a budget_tokens value.
Which Claude models support adaptive thinking?
Claude models 4.7 and later, such as claude-opus-5-5 and claude-sonnet-5-5, use adaptive thinking. Models 4.5 and earlier, such as claude-haiku-4-5, require manual extended thinking.
Can I use budget_tokens with adaptive thinking?
No. The budget_tokens parameter is specific to manual extended thinking and is not valid when thinking.type is set to "adaptive". Effort is controlled exclusively via output_config.effort.
