Claude Haiku 5.5 (claude-haiku-5-5, released October 7, 2026) costs 90% less than Haiku 4.5 for prompts up to 100K tokens: $0.10/$0.50 per million input/output tokens versus $1/$5. It also expands the context window from 200K to 1M tokens and scores higher on every launch benchmark that lists both models. However, five request shapes that worked on 4.5 now return HTTP 400 errors, while several other changes affect responses and costs without errors.
This guide covers the migration differences, before/after request bodies, silent behavior changes, and a practical Apidog test plan. For the complete specification, see What is Claude Haiku 5.5. If you still use the previous model, see the Claude Haiku 4.5 API guide.
Haiku 4.5 vs. Haiku 5.5 at a glance
| Claude Haiku 4.5 | Claude Haiku 5.5 | |
|---|---|---|
| Model ID (Claude API) | claude-haiku-4-5-20251001 |
claude-haiku-5-5 |
| Context / max output | 200K / 64K | 1M / 128K |
| Input / output per MTok | $1 / $5 | $0.10 / $0.50 up to 100K tokens; $0.50 / $2.50 over |
| Cache read / 5m write per MTok | $0.10 / $1.25 | $0.01 / $0.125 up to 100K; $0.05 / $0.625 over |
| Batch input / output per MTok | $0.50 / $2.50 | $0.05 / $0.25 up to 100K; $0.25 / $1.25 over |
| Thinking | Manual budget_tokens
|
Adaptive only, enabled by default |
| Effort levels | None |
low, medium (default), high, xhigh, max
|
| Minimum cacheable prompt | 4,096 tokens | 512 tokens |
| Tokenizer | Older | About 30% more tokens for the same text |
| Non-default sampling params / prefill | Accepted | HTTP 400 |
| Priority Tier | Supported | Not supported |
| Status | Active; retirement not sooner than Oct. 15, 2026 | Active; retirement not sooner than Oct. 7, 2027 |
Haiku 4.5 is not deprecated. The model deprecations page lists it as Active with no deprecation date, so you can migrate on your own schedule. Rate limits are the same for both models.
The five breaking changes
Each of the following request patterns returns HTTP 400 on Haiku 5.5 even though it works on Haiku 4.5. See Anthropic's Haiku 5.5 migration guide for the complete reference.
1. Replace manual thinking budgets
Haiku 5.5 supports adaptive thinking only. Requests with a fixed budget_tokens value are rejected.
// Before: Haiku 4.5
{
"model": "claude-haiku-4-5-20251001",
"max_tokens": 16000,
"thinking": { "type": "enabled", "budget_tokens": 8000 },
"messages": [
{ "role": "user", "content": "Classify this ticket." }
]
}
// After: Haiku 5.5
{
"model": "claude-haiku-5-5",
"max_tokens": 16000,
"thinking": { "type": "adaptive" },
"output_config": { "effort": "medium" },
"messages": [
{ "role": "user", "content": "Classify this ticket." }
]
}
Use effort as your new control:
- Use
lowormediumwhere you previously used a small thinking budget. - Use
high,xhigh, ormaxonly when the task needs more reasoning. - You can disable thinking with
thinking: { "type": "disabled" }, but only athigheffort or below. Disabling it atxhighormaxreturns HTTP 400.
2. Remove sampling parameters
Remove temperature, top_p, and top_k from Haiku 5.5 requests.
The only accepted explicit values are:
temperature: 1top_p: 0.99
Any other value returns HTTP 400. This includes top_p: 1, all top_k values, and sending temperature and top_p together.
// Before: Haiku 4.5
{
"model": "claude-haiku-4-5-20251001",
"max_tokens": 1024,
"temperature": 0.2,
"top_k": 40,
"messages": [
{ "role": "user", "content": "Extract the order ID." }
]
}
// After: Haiku 5.5
{
"model": "claude-haiku-5-5",
"max_tokens": 1024,
"messages": [
{ "role": "user", "content": "Extract the order ID." }
]
}
If you used low temperature to make output consistent, express the constraint in the prompt instead. For example: “Return exactly one order ID and no additional text.”
3. Remove assistant prefills
Haiku 5.5 rejects a final assistant message used as a prefill, including when thinking is disabled. Your messages array must end with a user turn.
// Before: Haiku 4.5
{
"model": "claude-haiku-4-5-20251001",
"max_tokens": 1024,
"messages": [
{ "role": "user", "content": "Return the sentiment as JSON." },
{ "role": "assistant", "content": "{\"sentiment\": \"" }
]
}
// After: Haiku 5.5
{
"model": "claude-haiku-5-5",
"max_tokens": 1024,
"system": "Reply with only a JSON object. No preamble.",
"messages": [
{ "role": "user", "content": "Return the sentiment as JSON." }
]
}
For strict output formats, use structured outputs or a tool with enum fields for classification.
4. Migrate computer use to the new toolset
For the Claude API and Google Cloud, Haiku 5.5 supports computer use through computer_toolset_20260801.
Also remove these beta headers:
computer-use-2025-01-24fine-grained-tool-streaming-2025-05-14
The fine-grained tool streaming header returns HTTP 400 when sent alongside a toolset.
// Before: Haiku 4.5
// Header: anthropic-beta: computer-use-2025-01-24
{
"model": "claude-haiku-4-5-20251001",
"max_tokens": 4096,
"tools": [
{
"type": "computer_20250124",
"name": "computer",
"display_width_px": 1280,
"display_height_px": 800
}
],
"messages": [
{ "role": "user", "content": "Open the settings page." }
]
}
// After: Haiku 5.5
// No beta header
{
"model": "claude-haiku-5-5",
"max_tokens": 4096,
"tools": [
{ "type": "computer_toolset_20260801" }
],
"messages": [
{ "role": "user", "content": "Open the settings page." }
]
}
Update your agent loop too:
- Dispatch each
tool_useblock using itsnameandtoolset_name. - Do not dispatch based on
input.action. - Include
toolset_namewhen sending tool results.
Haiku 5.5 also supports browser use through browser_toolset_20260801; Haiku 4.5 does not. See Claude Code computer use for more context.
5. Do not edit earlier turns before replaying thinking blocks
A Haiku 5.5 thinking block remains valid only when all earlier request content is unchanged. If you modify system, tools, or an earlier message and then replay the thinking block, the API returns HTTP 400.
Haiku 4.5 did not enforce this validation.
// Invalid: edited system + replayed thinking block = HTTP 400
{
"model": "claude-haiku-5-5",
"max_tokens": 4096,
"system": "You are a billing agent. Be brief.",
"messages": [
{ "role": "user", "content": "Why was I charged twice?" },
{
"role": "assistant",
"content": [
{
"type": "thinking",
"thinking": "",
"signature": "<from turn 1>"
},
{ "type": "text", "text": "Checking." }
]
},
{ "role": "user", "content": "Order 4412." }
]
}
// Valid: preserve earlier content and append the new instruction
{
"model": "claude-haiku-5-5",
"max_tokens": 4096,
"system": "You are a billing agent.",
"messages": [
{ "role": "user", "content": "Why was I charged twice?" },
{
"role": "assistant",
"content": [
{
"type": "thinking",
"thinking": "",
"signature": "<from turn 1>"
},
{ "type": "text", "text": "Checking." }
]
},
{ "role": "user", "content": "Order 4412. Be brief." }
]
}
For accounts created before August 31, 2026 at 00:00 UTC, this error appears only when requests set thinking.block_binding.prefix_mismatch_behavior.
Silent changes that will not throw an error
These behavior changes require application-level tests because the request can still return HTTP 200.
-
Thinking content is empty by default. Each
thinkingblock includes an emptythinkingfield and asignature. Haiku 4.5 returned summarized thinking. If you log or display it, set:
{
"thinking": {
"type": "adaptive",
"display": "summarized"
}
}
Responses can begin with thinking. Adaptive thinking is enabled even if you omit it. Select content blocks by
type, not by array index.The tokenizer uses about 30% more tokens. Recount your prompts and account for thinking tokens in
max_tokens. A smallmax_tokensvalue can producestop_reason: "max_tokens"before the model returns text.Forced
tool_choiceskips thinking.tool_choice: { "type": "any" }or a named tool still works, but the response starts with a tool call and has nothinkingblock. Usetool_choice: { "type": "auto" }and prompt the model to call the tool when appropriate if you want reasoning first.Safety refusals have no fallback. Haiku 5.5 uses safety classifiers for
cyber,frontier_llm,bio, andgeneral_harms. These can returnstop_reason: "refusal". There is no server-side fallback, and retries usually return the same refusal.Priority Tier is unavailable. If you have a Priority Tier commitment for Haiku 4.5, plan Haiku 5.5 capacity separately.
Thinking blocks are account-bound. A thinking block works only in the account that produced it or a linked account. Replaying stored conversations through another account does not preserve that reasoning.
Short prompts can now benefit from caching. The minimum cacheable prompt drops from 4,096 tokens to 512 tokens, so short system prompts that did not cache on Haiku 4.5 may cache on Haiku 5.5.
What got better
The following are Anthropic-reported numbers for Haiku 5.5 at maximum effort. Artificial Analysis independently ran GDPval-AA and AA-Briefcase.
| Benchmark | Haiku 4.5 | Haiku 5.5 |
|---|---|---|
| GDPval-AA v2.1 (Elo) | 735 | 1620 |
| AA-Briefcase v1.1 (Elo) | 614 | 1578 |
| OSWorld 2.1, offline subset | 15.7% | 72.4% |
| Humanity’s Last Exam, with tools | 18.7% | 57.4% |
| Terminal-Bench 4.0 | 0.0% | 39.2% |
| SWE-bench Multilingual | 67.4% | 83.7% |
| Chartography, no tools | 6.4% | 46.4% |
Haiku 4.5’s Terminal-Bench run used a fixed 63,999-token thinking budget. At default medium effort, Haiku 5.5 scored 1277 on GDPval-AA, still well above Haiku 4.5. Box reported scores 11 points higher than Haiku 4.5 at about half the latency.
See the full results in Claude Haiku 5.5 benchmarks.
Anthropic still positions Sonnet 5.5 and Opus 5.5 as better options for complex agentic coding. Haiku 5.5 targets classification, extraction, summarization, compaction, subagents, and browser use.
On cost, Anthropic says Haiku 5.5 is around 75% cheaper on average. This combines the 90% lower price below 100K tokens with the 50% lower price above that threshold, while accounting for the new tokenizer. The tool-use system prompt also decreased from 496 to 286 tokens with auto tool choice.
See worked cost examples in Claude Haiku 5.5 pricing.
Test the migration in Apidog
In Apidog, create a project with three saved requests targeting:
https://api.anthropic.com/v1/messages
Create these requests:
Baseline
Save your existing Haiku 4.5 request body and assert status200.Old body, new model
Change only themodelvalue toclaude-haiku-5-5. Assert status400. Keep a separate failing request for every breaking change your application uses.-
Migrated
Save the corrected Haiku 5.5 request. Assert:- Status is
200 -
stop_reasonis notrefusal -
stop_reasonis notmax_tokens - A text block exists by checking
content[*].type === "text"
- Status is
Store ANTHROPIC_API_KEY as an environment variable and reference it in the x-api-key header:
{{ANTHROPIC_API_KEY}}
Also include:
anthropic-version: 2023-06-01
Compare usage.input_tokens between the baseline and migrated requests to measure the tokenizer change using your real prompts.
Save the requests as a test scenario. That way, if a teammate reintroduces temperature, the test run fails before the change reaches production. For request setup details, see how to use the Claude Haiku 5.5 API.
If you work in Claude Code, run:
/claude-api migrate this project to claude-haiku-5-5
This applies the model ID and parameter fixes, then provides a checklist. Note that the haiku alias resolves to Haiku 5.5 only on the Anthropic API. See Claude Haiku 5.5 in Claude Code.
FAQ
Is Claude Haiku 4.5 deprecated?
No. It is listed as Active with no deprecation date, and its retirement is not sooner than October 15, 2026.
Why does my Haiku 4.5 request return HTTP 400 on Haiku 5.5?
Check for budget_tokens, temperature, top_p, top_k, an assistant prefill, computer_20250124, or edits to earlier turns before replaying a thinking block. These are the five breaking changes.
Is Haiku 5.5 cheaper than Haiku 4.5 for long prompts?
Yes. Above 100K tokens, Haiku 5.5 costs $0.50/$2.50 per million input/output tokens, half of Haiku 4.5’s $1/$5 pricing. Haiku 4.5 cannot accept prompts beyond 200K tokens.
Should I switch every workload to Haiku 5.5?
For classification, extraction, and subagent workloads, test it first and then migrate. Compare it with its closest rival in Haiku 5.5 vs GPT-6 Luna.
Next step
Save your Haiku 4.5 request beside its Haiku 5.5 equivalent, confirm the expected HTTP 400, fix each incompatible field, and move traffic only after the migrated request passes. Download Apidog to build the test pair.

Top comments (0)