Skip to content

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:

text
"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:

text
adaptive thinking is not supported on this model

Models Affected ​

Model FamilyExamplesThinking type to use
Newer (4.7+)claude-opus-5-5, claude-sonnet-5-5, claude-opus-4-8adaptive
Older (4.5 and earlier)claude-haiku-4-5enabled

Why It Happens ​

  1. Model Upgrades. You upgraded your model ID in your code, but the previous configuration (e.g., budget_tokens) is now invalid.
  2. Library Defaults. Some SDKs or middleware automatically inject or preserve the thinking object from your previous requests, even if you switch models.
  3. 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:

json
{
  "model": "claude-sonnet-5-5",
  "max_tokens": 1024,
  "thinking": {
    "type": "enabled",
    "budget_tokens": 2048
  },
  "messages": [{"role": "user", "content": "Explain quantum computing."}]
}

Fixed Request:

json
{
  "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:

json
{
  "model": "claude-haiku-4-5",
  "max_tokens": 1024,
  "thinking": {
    "type": "adaptive"
  },
  "messages": [{"role": "user", "content": "Explain quantum computing."}]
}

Fixed Request:

json
{
  "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.

Got a problem? Contact support or join our group.