1:1 mentoring with Big Tech AI engineers
Back to blog
By AgenticPrep Team11 min read

Which Claude Model? Haiku 5.5 vs Sonnet 5.5 vs Opus 5.5 vs Fable 5.1

Prices, defaults and breaking changes for the four current Claude models, and a worked bill for one workload, routed and unrouted.

claudemodel-selectionllm-costrouting
Key idea

Start agents on Opus 5.5, climb to Fable 5.1 only when evals at higher effort still fall short, and push every high-volume narrow step down to Haiku 5.5, at 40 times less per input token; Sonnet 5.5 is the faster middle. Then price the workload, not the token: caching, Haiku's 100K step and the tokenizer move the bill more than the list price.

Each step up the lineup costs 2 to 20 times more per token
CURRENT MODELS, LIST PRICE, 2026-10-21 Haiku 5.5 $0.10 / $0.50 per M tokens, in / out cache hit $0.01 effort default: medium route, classify, extract Sonnet 5.5 $2 / $10 per M tokens, in / out cache hit $0.10 effort default: high speed plus intelligence Opus 5.5 $4 / $20 per M tokens, in / out cache hit $0.20 effort default: medium start here for agents Fable 5.1 $10 / $50 per M tokens, in / out cache hit $0.25 effort default: high hardest reasoning ×20 ×2 ×2.5 All four: 1M context, 128K output, thinking on by default, the same newer tokenizer

Haiku 5.5 prices hold for prompts up to 100,000 tokens; above that every rate is five times higher (step 02). Teal marks the model Anthropic's docs say to start with.

The lineup on one screen

Model$/M in / outPick it for
Haiku 5.5
claude-haiku-5-5
$0.10 / $0.50route, classify, extract
Sonnet 5.5
claude-sonnet-5-5
$2 / $10speed plus intelligence
Opus 5.5
claude-opus-5-5
$4 / $20start here for agents
Fable 5.1
claude-fable-5-1
$10 / $50hardest reasoning

List prices from the pricing page and the models overview, read on 2026-10-21. Sonnet 5.5 shipped on 2026-09-28, Haiku 5.5 on 2026-10-07.

What they share matters as much: a 1M-token context, 128K output tokens, text and image input, a June 2026 knowledge cutoff, and the same rate limits per tier for Haiku, Sonnet and Opus 5.5. So the choice is price, latency and how hard the task is, not which model can physically fit the job. Anthropic's own guidance is to start with Opus 5.5 for most workloads; the request basics are in Messages API and the Claude API tutorial.

Three prices people misread

ModelCache hit, $/MOf input
Haiku 5.5$0.010.1x
Sonnet 5.5$0.100.05x
Opus 5.5$0.200.05x
Fable 5.1$0.250.025x

Cache hits are not a flat 0.1x any more. Opus 5.5 and Sonnet 5.5 read cached tokens at 0.05x, Fable 5.1 at 0.025x, and Haiku 5.5 at 0.1x. Writes still cost 1.25x input for the 5-minute cache and 2x for the 1-hour one, so a big cached prefix is cheapest, relative to its own input price, on the models people assume are expensive. The mechanics are in Prompt Caching.

Haiku 5.5 99K prompt
  • 99,000 in × $0.10, 600 out × $0.50
  • $0.0102 per call
Haiku 5.5 120K prompt
  • 120,000 in × $0.50, 600 out × $2.50
  • $0.0615 per call: 6.0x for 21% more prompt
Sonnet 5.5 120K, flat price
  • 120,000 in × $2, 600 out × $10
  • $0.2460: still 4.0x Haiku's long price

Rule of thumb: keep Haiku 5.5 prompts under 100,000 tokens, counting cache reads and writes; the step applies to the whole request.

The step is per request and counts every input token, cached or not. The Batch API halves both sides on all four models (Haiku 5.5: $0.05 / $0.25), and the discounts stack with caching. Opus 5.5 also has a fast mode at $8 / $40 for latency-bound work.

~30%more tokens for the same text on 4.7+ models than on Sonnet 4.6 and earlier
7.7xcheaper: the same ticket on Haiku 5.5 than on Haiku 4.5, after the tokenizer
19%cheaper on Sonnet 5.5 than Sonnet 4.5, not the 33% the list price suggests

Derived from the step 03 ticket: the old models see the same text as about 1/1.3 as many tokens. Recount with count_tokens on your own prompts; the increase depends on the content.

Worked example: one support inbox, four bills

Volume
200,000 tickets a month, about 4.6 a minute, so a 5-minute cache stays warm and writes are a rounding error.
Prefix
8,000 tokens of system prompt, tools and policy, a cache hit on every call.
Per ticket
2,000 fresh input tokens (the ticket and history) and 600 output tokens, thinking included.
ModelPer ticketPer month
Haiku 5.5$0.00058$116.00
Sonnet 5.5$0.01080$2,160.00
Opus 5.5$0.02160$4,320.00
Fable 5.1$0.05200$10,400.00

Opus 5.5 per ticket is (8,000 × $0.20 + 2,000 × $4 + 600 × $20) / 1M = $0.0216, or $4,320.00 a month. Output dominates every row: 600 tokens are 56% of the Opus bill, which is why effort (how much the model thinks) is a bigger lever than the input price. Effort and its per-request controls are in Agent Cost Control.

All four use the same tokenizer, so the token counts are comparable across rows. Your counts will differ: measure prefix, ticket and output on a real sample.

The routing pattern: small model sorts, big model reasons

The small model sorts every ticket; only the hard share pays Opus prices
Ticket 200,000 / month Router: Haiku 5.5 effort low, one label $49 / month routine 70%: Haiku 5.5 $81 / month hard 30%: Opus 5.5 $1,296 / month Reply $1,426 / month $1,426 a month routed, against $4,320 with Opus 5.5 on every ticket

The 70% routine share is an assumption: measure yours from a labelled sample before you trust the total.

PathTokensPer month
Router, every ticket2,000 cached + 2,000 in + 50 out on Haiku 5.5$49.00
Routine, 140,000answered on Haiku 5.5$81.20
Hard, 60,000answered on Opus 5.5$1,296.00
Total33% of all-Opus$1,426.20

The router costs $49 a month and the hard 30% still costs 91% of the routed bill, so the escalation share is the number to watch: every 10 points of tickets moved from routine to hard adds $420.40 a month. Sending the hard share to Sonnet 5.5 instead would cost $778.20; whether that holds quality is an eval question, not a pricing one.

import json
import anthropic

client = anthropic.Anthropic()
ROUTER = "Label the ticket routine or hard. Hard: refunds, legal, outages."
TIER = {"type": "object", "additionalProperties": False, "required": ["tier"],
        "properties": {"tier": {"type": "string", "enum": ["routine", "hard"]}}}

def route(ticket: str) -> str:
    r = client.messages.create(
        model="claude-haiku-5-5", max_tokens=1024, system=ROUTER,
        cache_control={"type": "ephemeral"},
        output_config={"effort": "low",
                       "format": {"type": "json_schema", "schema": TIER}},
        messages=[{"role": "user", "content": ticket}])
    if r.stop_reason != "end_turn":
        return "hard"  # refusal or cut off: escalate, never guess
    text = next(b.text for b in r.content if b.type == "text")
    return json.loads(text)["tier"]

The router reads blocks by type (a thinking block can come first), branches on stop_reason, and escalates when unsure, since a wrong "routine" costs a bad reply while a wrong "hard" costs $0.0210. Haiku 5.5 runs safety classifiers with no server-side fallback, so handle refusal. In production the router prompt carries a few thousand tokens of examples: under 512 tokens nothing is cached. Thresholds, cascades and failover are in Model Routing.

Ran against a mocked API with anthropic 1.17.0, the current Python SDK; no live key was used.

Effort, thinking and the breaking changes

ModelEffortForced tools
Haiku 5.5medium, thinking on by defaultaccepted, skips thinking
Sonnet 5.5high, thinking on by default400 error
Opus 5.5medium, thinking always on400 error
Fable 5.1high, thinking always on400 error

Forced tool use (tool_choice of any or a named tool) returns an error on Sonnet 5.5, Opus 5.5 and Fable 5.1. Haiku 5.5 accepts it but skips thinking. Use auto with a prompt and strict: true tools, or structured outputs as in the router above. On all four, temperature, top_p and top_k at non-default values, budget_tokens and assistant prefill return a 400. Steer depth with output_config.effort; how it trades quality for tokens is in Adaptive Thinking and Effort.

Switching models mid-conversation

Haiku 5.5 drops thinking blocks from Opus 5.5, Sonnet 5.5 and Fable 5.1 without an error, while Opus and Sonnet 5.5 read Haiku 5.5's on the Claude API. Escalate a conversation up the lineup, not down, or send the cheaper model a fresh request with the facts it needs.

If you are still on a 4.x model

ModelStatusMove to
Sonnet 4.5Deprecated; retirement date 2026-11-30claude-sonnet-5-5
Haiku 4.5Active; no retirement date announced (its 2026-10-15 floor has passed)claude-haiku-5-5

Status as of 2026-10-26, from the model deprecations page. Requests to a retired model fail; Anthropic gives at least 60 days' notice.

  1. Swap the IDNo date suffix on the 5.5 models.
  2. Recount tokensAbout 30% more for the same text; revisit max_tokens and budgets.
  3. Remove what errorsSampling parameters, budget_tokens, prefill; forced tools on Sonnet 5.5.
  4. Read blocks by typeThinking is on by default and can come first.
  5. Re-run your evalsThen re-price with the new counts.

Haiku 4.5 to 5.5 has two quieter changes: the minimum cacheable prompt drops from 4,096 tokens to 512, and Priority Tier is not supported on Haiku 5.5, so plan capacity separately if you had a commitment. When the API stops being the cheapest option at your volume is in Self-Host vs API.

A decision you can defend

Haiku 5.5 $0.10 / $0.50
  • One label, one field, one short answer
  • High volume, latency first
  • Prompts under 100,000 tokens
Opus 5.5 $4 / $20
  • Agents, coding, multi-step tool use
  • The default until an eval says otherwise
  • Sonnet 5.5 when the same eval passes faster
Fable 5.1 $10 / $50
  • Long-horizon, demanding reasoning
  • Only after Opus 5.5 at higher effort falls short

Rule of thumb: pick the model per step, not per product, and let a measured eval move each step up or down.

The order that keeps this honest: write the eval set first, run it on Opus 5.5, try the cheaper model on each high-volume step, and only climb to Fable 5.1 for the steps that still fail. Price every candidate with your own token counts. Cost and latency as one budget is in Cost vs Latency.

Common mistakes
  • Comparing per-token prices across tokenizers: a 4.5 model's count understates the same text on a 5.5 model by about 30%.
  • Assuming every cache hit is 0.1x: Opus and Sonnet 5.5 are 0.05x, Fable 5.1 0.025x.
  • Letting a Haiku 5.5 prompt drift past 100,000 tokens: the whole request is billed at five times the rate.
  • Porting tool_choice: {"type": "any"} to Sonnet 5.5 or Opus 5.5: it is now a 400.
Interview angle

“Our support bot runs Opus on every ticket and costs too much. What do you do?” Measure first: tokens per ticket and the output share (here 56% of the bill). Then put a Haiku 5.5 router in front with an escalate-when-unsure rule, keep the hard share on Opus, and gate the change on an eval. With a 70% routine share the bill drops from $4,320 to $1,426. Name the risk: a mis-routed hard ticket, so track escalations and complaint rate.

Check yourself
Your Haiku 5.5 extractor receives 95,000-token documents, and you add a 10,000-token cached instruction prefix. What happens to the price?

The prompt is now 105,000 tokens, over the 100,000 step, and cache reads count toward it. Every rate on that request becomes five times higher. Split the document or trim the prefix.

Moving from Sonnet 4.5 ($3 / $15) to Sonnet 5.5 ($2 / $10) looks like a 33% saving. Why is it smaller?

Sonnet 5.5 uses the newer tokenizer, about 30% more tokens for the same text. On this post's ticket the real saving is about 19%.

In the routed design, would you rather mis-route 5% of hard tickets as routine or 5% of routine as hard?

Routine as hard: it costs $0.0210 a ticket. A hard ticket answered by the small model costs a bad reply and possibly a customer. Bias the router toward escalation.

Recap
  • Haiku 5.5 $0.10 / $0.50, Sonnet 5.5 $2 / $10, Opus 5.5 $4 / $20, Fable 5.1 $10 / $50 per million tokens.
  • Cache hits are 0.1x on Haiku 5.5, 0.05x on Sonnet and Opus 5.5, 0.025x on Fable 5.1; batch halves everything.
  • Haiku 5.5 prompts over 100,000 tokens cost five times more; the new tokenizer adds about 30% tokens.
  • Route: Haiku 5.5 sorts, Opus 5.5 reasons; in the worked example $4,320 became $1,426 a month.
  • Sonnet 4.5's retirement date is 2026-11-30; forced tool_choice errors on Sonnet 5.5, Opus 5.5 and Fable 5.1.

Next: Model Routing — classifiers, cascades and failover, so the router in step 04 survives production.

Enjoyed this post? The full curriculum has 149 sections, system design problems, and AI-reviewed practice runs.

See the full guide