What each model accepts
Every cell is an observed API response (2026-11-10, API version 2026-10-21 unless stated). "rejected" means HTTP 400.
Thinking and effort
| Model | adaptive |
enabled + budget_tokens |
disabled |
Effort levels |
|---|---|---|---|---|
claude-fable-5-2 |
yes | rejected | rejected | low, medium, high, xhigh, max |
claude-haiku-5-5 |
yes | rejected | allowed (not at xhigh/max) | low, medium, high, xhigh, max |
claude-sonnet-5-5 |
yes | rejected | rejected — use between_tools |
low, medium, high, xhigh, max |
claude-opus-5-5 |
yes | rejected | rejected | low, medium, high, xhigh, max |
claude-fable-5-1 |
yes | rejected | rejected | low, medium, high, xhigh, max |
claude-opus-5 |
yes | rejected | allowed (not at xhigh/max) | low, medium, high, xhigh, max |
claude-sonnet-5 |
yes | rejected | allowed | low, medium, high, xhigh, max |
claude-fable-5 |
yes | rejected | rejected | low, medium, high, xhigh, max |
claude-opus-4-8 |
yes | rejected | allowed | low, medium, high, xhigh, max |
claude-opus-4-7 |
yes | rejected | allowed | low, medium, high, xhigh, max |
claude-sonnet-4-6 |
yes | yes (deprecated) | allowed | low, medium, high, max |
claude-opus-4-6 |
yes | yes (deprecated) | allowed | low, medium, high, max |
claude-opus-4-5-20251101 |
rejected | yes (required for thinking) | allowed | low, medium, high |
claude-haiku-4-5-20251001 |
rejected | yes (required for thinking) | allowed | no effort parameter |
claude-sonnet-4-5-20250929 |
rejected | yes (required for thinking) | allowed | no effort parameter |
Request features
| Model | Forced tool_choice (any/tool) |
Assistant prefill | temperature/top_p/top_k (2026-10-21) |
Same (2023-06-01) | role: "system" in messages |
|---|---|---|---|---|---|
claude-fable-5-2 |
rejected | rejected | rejected | rejected | yes |
claude-haiku-5-5 |
yes | rejected | rejected | rejected | yes |
claude-sonnet-5-5 |
rejected | rejected | rejected | rejected | yes |
claude-opus-5-5 |
rejected | rejected | rejected | rejected | yes |
claude-fable-5-1 |
rejected | rejected | rejected | rejected | yes |
claude-opus-5 |
yes | rejected | rejected | rejected | yes |
claude-sonnet-5 |
yes | rejected | rejected | rejected | yes |
claude-fable-5 |
yes | rejected | rejected | rejected | yes |
claude-opus-4-8 |
yes | rejected | rejected | rejected | yes |
claude-opus-4-7 |
yes | rejected | rejected | rejected | rejected |
claude-sonnet-4-6 |
yes | rejected | rejected | yes | rejected |
claude-opus-4-6 |
yes | rejected | rejected | yes | rejected |
claude-opus-4-5-20251101 |
yes | yes | rejected | yes | rejected |
claude-haiku-4-5-20251001 |
yes | yes | rejected | yes | rejected |
claude-sonnet-4-5-20250929 |
yes | yes | rejected | yes | rejected |
Beta and platform features
| Model | Task budget | Compaction | Fast mode | inference_geo |
web_search_20260209 |
|---|---|---|---|---|---|
claude-fable-5-2 |
yes | yes | ga | yes | yes |
claude-haiku-5-5 |
yes | yes | unsupported | yes | yes |
claude-sonnet-5-5 |
yes | yes | unsupported | yes | yes |
claude-opus-5-5 |
yes | yes | ga | yes | yes |
claude-fable-5-1 |
yes | yes | unsupported | yes | yes |
claude-opus-5 |
yes | yes | beta header required | yes | yes |
claude-sonnet-5 |
yes | yes | unsupported | yes | yes |
claude-fable-5 |
yes | yes | unsupported | yes | yes |
claude-opus-4-8 |
yes | yes | beta header required | yes | yes |
claude-opus-4-7 |
yes | yes | unsupported | yes | yes |
claude-sonnet-4-6 |
no | yes | unsupported | yes | yes |
claude-opus-4-6 |
no | yes | beta header required | yes | yes |
claude-opus-4-5-20251101 |
no | no | unsupported | no | yes |
claude-haiku-4-5-20251001 |
no | no | unsupported | no | no — use web_search_20250305 |
claude-sonnet-4-5-20250929 |
no | no | unsupported | no | yes |
Beta flags (exact strings)
Send them in betas on the beta endpoint (client.beta.messages), or as the anthropic-beta header.
| Feature | Flag | Request field |
|---|---|---|
| Task budget | task-budgets-2026-03-13 |
output_config.task_budget |
| Compaction | compact-2026-01-12 |
context_management.edits → compact_20260112 |
| Context editing | context-management-2025-06-27 |
context_management.edits → clear_tool_uses_20250919, clear_thinking_20251015 |
| Server-side fallbacks | server-side-fallback-2026-07-01 |
fallbacks: "default" |
| Fast mode on Opus 5 / 4.8 / 4.6 | fast-mode-2026-02-01 |
speed: "fast" (no flag needed on claude-opus-5-5, claude-fable-5-2) |
| Thinking progress updates | thinking-display-updates-2026-08-18 |
thinking.display: "updates" |
| MCP connector | mcp-client-2025-11-20 |
mcp_servers + an mcp_toolset entry in tools |
Fast mode also needs account access: without it the API answers 429 (a fast-mode rate limit of 0), not 400.
Accepted by every probed model: structured outputs (output_config.format), tool_choice auto and none, strict tools, top-level cache_control, stop_sequences, token counting, citations, context editing (beta), server-side fallbacks (beta), the memory, bash and text-editor client tools, tool search.
Exact error texts
thinking_disabled: "thinking.type.disabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.thinking_budget: "thinking.type.enabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.thinking_between_tools: "thinking.type.between_tools" is not supported for this model.temperature: temperature: Extra inputs are not permittedtop_p: top_p: Extra inputs are not permittedtop_k: top_k: Extra inputs are not permittedtool_any: tool_choice: type "tool" and "any" are not supported for this model.prefill: This model does not support assistant message prefill. The conversation must end with a user message.max_tokens_over_cap: max_tokens: N > N, which is the maximum allowed number of output tokens forlegacy_temperature:temperatureis deprecated for this model.legacy_top_p:top_pis deprecated for this model.disabled_at_xhigh: output_config.effort 'xhigh' is not supported when thinking is disabled on this model. Use effort 'high' or below, or enable thinking.speed_fast: '' does not support thespeedparameter. This feature is only available on supported models.thinking_disabled: To turn thinking off on this model, send "thinking": {"type": "between_tools"} instead of {"type": "disabled"}. The model does not think before responding. The short updates it writes between tool calls come back as thinking blocks.speed_fast: To use thespeedparameter with '', send theanthropic-beta: fast-mode-N-02-01header.mid_system: role 'system' is not supported on this modeleffort_xhigh: This model does not support effort level 'xhigh'. Supported levels: high, low, max, medium.task_budget: This model does not support user-configurable task budgets.thinking_adaptive: adaptive thinking is not supported on this modeleffort_xhigh: This model does not support effort level 'xhigh'. Supported levels: high, low, medium.effort_max: This model does not support effort level 'max'. Supported levels: high, low, medium.inference_geo_us: '' does not support inference_geo.compaction: '' does not support the 'compact_N' context management strategy.effort_low: This model does not support the effort parameter.web_search_2026: '' does not support programmatic tool calling. The following tools haveallowed_callersthat require it: web_search. Explicitly setallowed_callers=["direct"]on these tools, or use a model that supports programmatic tool calling.web_fetch_2026: '' does not support programmatic tool calling. The following tools haveallowed_callersthat require it: web_fetch. Explicitly setallowed_callers=["direct"]on these tools, or use a model that supports programmatic tool calling.