DEV Community

Cover image for Claude Haiku 5.5 vs Haiku 4.5: What Changed and the Breaking Changes to Fix First
Hassann
Hassann

Posted on Originally published at apidog.com

Claude Haiku 5.5 vs Haiku 4.5: What Changed and the Breaking Changes to Fix First

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.

Try Apidog today

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." }
  ]
}
Enter fullscreen mode Exit fullscreen mode

Use effort as your new control:

  • Use low or medium where you previously used a small thinking budget.
  • Use high, xhigh, or max only when the task needs more reasoning.
  • You can disable thinking with thinking: { "type": "disabled" }, but only at high effort or below. Disabling it at xhigh or max returns 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: 1
  • top_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." }
  ]
}
Enter fullscreen mode Exit fullscreen mode

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." }
  ]
}
Enter fullscreen mode Exit fullscreen mode

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-24
  • fine-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." }
  ]
}
Enter fullscreen mode Exit fullscreen mode

Update your agent loop too:

  1. Dispatch each tool_use block using its name and toolset_name.
  2. Do not dispatch based on input.action.
  3. Include toolset_name when 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." }
  ]
}
Enter fullscreen mode Exit fullscreen mode

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 thinking block includes an empty thinking field and a signature. Haiku 4.5 returned summarized thinking. If you log or display it, set:
  {
    "thinking": {
      "type": "adaptive",
      "display": "summarized"
    }
  }
Enter fullscreen mode Exit fullscreen mode
  • 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 small max_tokens value can produce stop_reason: "max_tokens" before the model returns text.

  • Forced tool_choice skips thinking. tool_choice: { "type": "any" } or a named tool still works, but the response starts with a tool call and has no thinking block. Use tool_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, and general_harms. These can return stop_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
Enter fullscreen mode Exit fullscreen mode

Apidog request setup

Create these requests:

  1. Baseline

    Save your existing Haiku 4.5 request body and assert status 200.

  2. Old body, new model

    Change only the model value to claude-haiku-5-5. Assert status 400. Keep a separate failing request for every breaking change your application uses.

  3. Migrated

    Save the corrected Haiku 5.5 request. Assert:

    • Status is 200
    • stop_reason is not refusal
    • stop_reason is not max_tokens
    • A text block exists by checking content[*].type === "text"

Store ANTHROPIC_API_KEY as an environment variable and reference it in the x-api-key header:

{{ANTHROPIC_API_KEY}}
Enter fullscreen mode Exit fullscreen mode

Also include:

anthropic-version: 2023-06-01
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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)