fine-grained-tool-streaming-2025-05-14 with a toolset returns a 400
Returns 400
Applies to claude-sonnet-5-5, claude-haiku-5-5 on the Anthropic Messages API.
Anthropic's docs describe this error but don't quote the exact message, so we don't either.
How to fix it
Remove the header and set eager_input_streaming: true on each tool that needs streamed input.
Before
{
"betas": [
"fine-grained-tool-streaming-2025-05-14"
],
"max_tokens": 1024,
"messages": [
{
"content": "Summarize this ticket.",
"role": "user"
}
],
"model": "claude-sonnet-4-5-20250929",
"tools": [
{
"description": "Fetch an invoice",
"input_schema": {
"additionalProperties": false,
"properties": {
"id": {
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "get_invoice"
}
]
}After (Claude Sonnet 5.5)
{
"max_tokens": 1024,
"messages": [
{
"content": "Summarize this ticket.",
"role": "user"
}
],
"model": "claude-sonnet-5-5",
"tools": [
{
"description": "Fetch an invoice",
"input_schema": {
"additionalProperties": false,
"properties": {
"id": {
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "get_invoice"
}
]
}Official source
If you send the fine-grained-tool-streaming-2025-05-14 beta header, remove it when you move to the toolset. Alongside a toolset entry, it returns a 400 error.https://platform.claude.com/docs/en/models/sonnet-5-5/migration-guide#computer-use-toolset (last checked 2026-11-02)
Other changes for the same models
- temperature, top_p and top_k return an error on Claude Sonnet 5.5
- Assistant message prefill returns a 400 on Claude Sonnet 5.5
- tool_choice any or tool returns a 400 on Claude Sonnet 5.5
- thinking type enabled with budget_tokens returns a 400 on Claude Sonnet 5.5
- thinking type disabled returns a 400 on Claude Sonnet 5.5
- Top-level output_format returns a 400 on Claude Sonnet 5.5
- computer_20250124 isn’t accepted by Claude Sonnet 5.5 or Haiku 5.5
- Beta headers to remove when moving to Claude Sonnet 5.5
- Claude Sonnet 5.5 thinks by default when thinking is omitted
- thinking type enabled with budget_tokens returns a 400 on Claude Haiku 5.5
- Assistant message prefill returns a 400 on Claude Haiku 5.5
- temperature, top_p and top_k can return an error on Claude Haiku 5.5
- Forced tool_choice on Claude Haiku 5.5 skips thinking
FAQ
How do I fix this when moving to claude-sonnet-5-5, claude-haiku-5-5?
Remove the header and set eager_input_streaming: true on each tool that needs streamed input.
Where is this documented?
In Anthropic’s official docs: https://platform.claude.com/docs/en/models/sonnet-5-5/migration-guide#computer-use-toolset, last checked 2026-11-02.