Claude Haiku 5.5: What’s New and How to Use It for Fast, Cheap AI Workflows Anthropic released Claude Haiku 5.5 on October 7, 2026, with list prices of $0.10 per million input tokens and $0.50 per million output tokens for prompts up to 100,000 tokens, a 90% cut from Haiku 4.5's $1.00/$5.00. The model adds a 1M-token context window, 128K max output, and adaptive thinking with an effort setting, and Anthropic reports benchmark gains including 72.4% on OSWorld 2.1's offline subset (up from 15.7%) and 39.2% on Terminal-Bench 4.0 (up from 0.0%). Anthropic says the newer tokenizer counts the same text as roughly 30% more tokens, putting the average saving at around 75%, and three changes break Haiku 4.5 code: sending temperature, top_p or top_k, assistant prefill, and manual budget_tokens thinking all return errors. Claude Haiku 5.5: What’s New and How to Use It for Fast, Cheap AI Workflows Claude Haiku 5.5 cuts list prices by 90% and adds adaptive thinking and a 1M token context window. Learn what broke from Haiku 4.5, and build classification, extraction, and sub-agent workflows in Python using the new API. Anthropic released Claude Haiku 5.5 https://www.anthropic.com/claude-haiku-5-5 on October 7, 2026, and calls it its cheapest, fastest, and most capable small model. The API model ID is claude-haiku-5-5 , and prompts up to 100,000 tokens cost \$0.10 per million input tokens and \$0.50 per million output tokens. This article covers what changed since Haiku 4.5, how to build fast, cheap AI workflows with it in Python classification, extraction, and sub-agents , and when a bigger Claude model is still the better pick. Haiku 5.5 Anthropic positions Haiku 5.5 for high-volume, cost-sensitive work https://www.anthropic.com/claude-haiku-5-5 such as summaries, compaction, database queries, and classification, and as a subagent alongside Opus 5.5 and Sonnet 5.5. It is available on the Claude Platform, Amazon Web Services https://aws.amazon.com/blogs/machine-learning/introducing-claude-haiku-5-5-on-aws/ , Google Cloud, and Microsoft Azure. Its safety evaluations are documented in the system card https://www.anthropic.com/claude-haiku-5-5-system-card . Anthropic's deprecation page https://platform.claude.com/docs/en/about-claude/model-deprecations lists the earliest retirement date as October 7, 2027. What's New Compared With Haiku 4.5? | Feature | Haiku 4.5 | Haiku 5.5 | |---|---|---| | Context window | 200K tokens | 1M tokens https://platform.claude.com/docs/en/models/haiku-5-5/whats-new-haiku-5-5 | | Max output | 64K tokens | 128K tokens https://platform.claude.com/docs/en/models/haiku-5-5/whats-new-haiku-5-5 | | Thinking control | Manual thinking budget | Adaptive thinking with an effort setting, a first for a Haiku https://www.anthropic.com/claude-haiku-5-5 | | Price per million tokens, prompts up to 100K input / output | \$1.00 / \$5.00 | \$0.10 / \$0.50 https://www.anthropic.com/claude-haiku-5-5 | | Price over 100K | \$1.00 / \$5.00 | \$0.50 / \$2.50 https://www.anthropic.com/claude-haiku-5-5 | | Smallest cacheable prompt | 4,096 tokens | 512 tokens https://platform.claude.com/docs/en/models/haiku-5-5/whats-new-haiku-5-5 | | GDPval-AA knowledge work | 735 | 1620 https://www.anthropic.com/claude-haiku-5-5 | | OSWorld 2.1, offline subset computer use | 15.7% | 72.4% https://www.anthropic.com/claude-haiku-5-5 | | Humanity's Last Exam, no tools | 10.2% | 45.9% https://www.anthropic.com/claude-haiku-5-5 | | Terminal-Bench 4.0 agentic coding | 0.0% | 39.2% https://www.anthropic.com/claude-haiku-5-5 | The benchmark rows are Anthropic's own results, and the launch page https://www.anthropic.com/claude-haiku-5-5 shows Sonnet 5.5 ahead on all four for example, 70.6% on Terminal-Bench 4.0 . The price cut is also smaller in practice than the list prices suggest. Haiku 5.5 uses a newer tokenizer, so the same text counts as roughly 30% more tokens https://platform.claude.com/docs/en/models/haiku-5-5/whats-new-haiku-5-5 . Anthropic puts the average saving at around 75% https://www.anthropic.com/claude-haiku-5-5 , after accounting for the tokenizer and for the 10% of requests that run over 100K tokens. Three changes can break existing Haiku 4.5 code. The what's-new page https://platform.claude.com/docs/en/models/haiku-5-5/whats-new-haiku-5-5 lists them as breaking: sending temperature , top p , or top k returns an error, ending the messages with an assistant prefill returns an error, and manual thinking with budget tokens returns an error. Two behavior changes matter as well. Adaptive thinking is on by default, so a response can start with a thinking block, and thinking tokens count toward max tokens . Safety classifiers can also decline a request, so your code must handle stop reason: "refusal" . On safety, Anthropic says Haiku 5.5's cybersecurity safeguards https://www.anthropic.com/claude-haiku-5-5 are stricter than Haiku 4.5's and block penetration testing. Using Haiku 5.5 for Fast, Cheap Workflows You need Python 3.10 or newer, an API key from the Claude Console, and a recent Anthropic SDK, since the code below uses the newer output config parameter. pip install -U anthropic export ANTHROPIC API KEY="your-key-here" The first command installs or upgrades the official Python SDK. The second stores your key in the shell session, and the SDK reads ANTHROPIC API KEY automatically. On Windows PowerShell, use $env:ANTHROPIC API KEY="your-key-here" . Step 1: Classification and Extraction These are the two jobs Haiku was built for: a short input and a short, structured answer, repeated thousands of times. The code uses JSON outputs, which constrain the reply to a schema you provide. It also holds the shared price table and a cost helper that the next two scripts reuse. haiku tasks.py """Fast, cheap Claude Haiku 5.5 calls: classification and extraction with JSON outputs.""" import json import anthropic MODEL = "claude-haiku-5-5" client = anthropic.Anthropic reads ANTHROPIC API KEY from the environment USD per million tokens input, output for prompts up to 100K tokens. PRICES = { "claude-haiku-5-5": 0.10, 0.50 , "claude-sonnet-5-5": 2.00, 10.00 , "claude-opus-5-5": 4.00, 20.00 , } CATEGORY SCHEMA = { "type": "object", "properties": {"category": {"type": "string", "enum": "billing", "shipping", "technical", "other" }}, "required": "category" , "additionalProperties": False, } INVOICE SCHEMA = { "type": "object", "properties": { "vendor": {"type": "string"}, "invoice number": {"type": "string"}, "total": {"type": "number"}, "currency": {"type": "string"}, "due date": {"type": "string", "description": "ISO date, YYYY-MM-DD"}, }, "required": "vendor", "invoice number", "total", "currency", "due date" , "additionalProperties": False, } def cost usd model, usage : price in, price out = PRICES model return usage.input tokens price in + usage.output tokens price out / 1 000 000 def ask json schema, instruction, text, model=MODEL, effort="low" : """One request whose reply must be JSON matching schema . Returns data, usage .""" reply = client.messages.create model=model, max tokens=1000, thinking tokens count toward this limit, so leave headroom system=instruction, messages= {"role": "user", "content": text} , output config={"effort": effort, "format": {"type": "json schema", "schema": schema}}, if reply.stop reason in "refusal", "max tokens" : raise RuntimeError f"No usable answer, stop reason: {reply.stop reason}" A reply can start with a thinking block, so pick the text block by type. answer = "".join block.text for block in reply.content if block.type == "text" return json.loads answer , reply.usage def classify text, model=MODEL : data, usage = ask json CATEGORY SCHEMA, "Classify the customer message.", text, model return data "category" , usage def extract invoice text, model=MODEL : data, usage = ask json INVOICE SCHEMA, "Extract the invoice fields from the text.", text, model return data, usage if name == " main ": for message in "I was charged twice this month.", "My parcel never arrived.", "The app crashes on login." : category, usage = classify message print f"{category:<10} {usage.input tokens} in / {usage.output tokens} out <- {message}" invoice = "Acme Cloud Ltd, invoice AC-2291. Total due: 1,240.50 USD by 15 November 2026." fields, usage = extract invoice invoice print fields, f" ${cost usd MODEL, usage :.6f} " PRICES lists input and output prices per million tokens for the three models from Anthropic's launch page https://www.anthropic.com/claude-haiku-5-5 and pricing page https://platform.claude.com/docs/en/about-claude/pricing , and cost usd turns a response's token counts into dollars. The two schemas describe the output you want: CATEGORY SCHEMA limits category to four allowed values, and INVOICE SCHEMA lists five fields. ask json is the core function. It sends one request with the schema inside output config.format , and effort set to low , so the model spends little time thinking on an easy task. Anthropic's JSON outputs https://platform.claude.com/docs/en/build-with-claude/structured-outputs guarantee valid JSON that matches the schema. Notice what is missing: there is no temperature , because Haiku 5.5 rejects it. max tokens is 1000 even though answers are tiny, since thinking tokens count against it. Two checks follow. A stop reason of refusal or max tokens raises an error instead of failing silently on a half-empty reply. Then the text is read by block type, because a reply may begin with a thinking block, and parsed as JSON. I used JSON outputs instead of forcing a tool call on purpose. Haiku 5.5 accepts a forced tool call https://platform.claude.com/docs/en/models/haiku-5-5/migration-guide , but Opus 5.5 rejects one with a 400 error https://platform.claude.com/docs/en/models/opus-5-5/whats-new-opus-5-5 , so JSON outputs are the portable choice for the three-model comparison in Step 3. One caveat: JSON outputs are not available on Amazon Bedrock https://platform.claude.com/docs/en/models/haiku-5-5/whats-new-haiku-5-5 for Haiku 5.5, so on Bedrock you describe the format in the prompt and validate the result yourself. Run it: python haiku tasks.py The main block classifies three messages and extracts fields from one invoice, printing the tokens used and the cost of the extraction. Expect one category per message and a dictionary with five fields. Step 2: Sub-Agents A sub-agent setup splits the work. A larger model decides what to do and writes the final answer, while many Haiku workers handle the narrow, repetitive jobs in parallel. This is the pattern Anthropic names for Haiku, and Cognition reports https://www.anthropic.com/claude-haiku-5-5 using Haiku 5.5 as the sidekick in Devin Fusion with Opus 5.5 as the lead. subagents.py """A lead model delegates narrow jobs to parallel Haiku 5.5 workers, then writes the answer.""" import asyncio import anthropic from haiku tasks import MODEL as WORKER, cost usd LEAD = "claude-sonnet-5-5" client = anthropic.AsyncAnthropic def text of reply : return "".join block.text for block in reply.content if block.type == "text" async def summarize name, document, limit : async with limit: cap how many workers run at once reply = await client.messages.create model=WORKER, max tokens=1500, system="Summarize the document in two sentences. Keep names, dates and amounts exact.", messages= {"role": "user", "content": document} , output config={"effort": "low"}, return name, text of reply , cost usd WORKER, reply.usage async def answer documents, question : limit = asyncio.Semaphore 8 notes = await asyncio.gather summarize n, d, limit for n, d in documents.items worker cost = sum cost for , , cost in notes brief = "\n".join f" {name} {summary}" for name, summary, in notes reply = await client.messages.create model=LEAD, max tokens=2000, system="You are the lead analyst. Answer using only the worker notes.", messages= {"role": "user", "content": f"Question: {question}\n\nWorker notes:\n{brief}"} , output config={"effort": "medium"}, return text of reply , worker cost, cost usd LEAD, reply.usage if name == " main ": documents = { "contract-a": "Northwind renewed its support contract on 3 March 2026 for 48,000 USD per year.", "contract-b": "Contoso signed a 12-month license on 9 May 2026. The fee is 15,500 USD, billed quarterly.", "contract-c": "Fabrikam's agreement ends on 30 June 2026 and renews only if either party gives notice.", } text, worker cost, lead cost = asyncio.run answer documents, "Which agreements need action before July 2026?" print text print f"workers: ${worker cost:.6f} lead: ${lead cost:.6f}" summarize is one worker. It asks Haiku for a two-sentence summary at low effort and returns the document name, the summary, and the cost. The Semaphore caps how many workers run at the same time, which keeps you inside your rate limits. answer starts every worker at once with asyncio.gather , adds up the worker cost, and then sends only the short summaries to the lead model — here Sonnet 5.5 at its default effort. The lead never reads the full documents, and that is where the savings come from. The function returns the answer plus both costs, so you can see where the money went. Step 3: Comparing Cost and Latency Published numbers only go so far, so this script runs the same classification task on all three models and measures accuracy, latency, and cost on your own account. compare models.py """Run the same classification task on three models and compare accuracy, latency and cost.""" import statistics import time from haiku tasks import classify, cost usd MODELS = "claude-haiku-5-5", "claude-sonnet-5-5", "claude-opus-5-5" TICKETS = "I was charged twice for my last order.", "billing" , "Please send me a copy of my invoice.", "billing" , "Where is my package? It was due on Monday.", "shipping" , "My order was delivered to the wrong building.", "shipping" , "The app crashes every time I open settings.", "technical" , "I cannot log in even after resetting my password.", "technical" , "Can you tell me about your company history?", "other" , "My card was declined but the money left my account.", "billing" , def run model : seconds, cost, hits, output tokens = , 0.0, 0, 0 for text, label in TICKETS: start = time.perf counter category, usage = classify text, model seconds.append time.perf counter - start hits += category == label cost += cost usd model, usage output tokens += usage.output tokens n = len TICKETS return hits / n, statistics.median seconds , cost / n 1000, output tokens / n if name == " main ": print f"{'model':<20}{'accuracy': 9}{'median s': 10}{'$/1k calls': 12}{'out tok': 9}" for model in MODELS: try: accuracy, median s, per thousand, out tokens = run model except Exception as error: for example, a model or platform that rejects the request print f"{model:<20} failed: {error}" continue print f"{model:<20}{accuracy: 9.0%}{median s: 10.2f}{per thousand: 12.3f}{out tokens: 9.0f}" run sends each of the eight test messages through classify with a chosen model and records the time, cost, correctness, and output tokens. per thousand converts the average to dollars per 1,000 requests. The main block runs Haiku, Sonnet, and Opus in turn and prints one row each. If a model or platform rejects the request, the script prints the error and moves on. Eight messages are a smoke test, so replace them with samples from your own traffic before you decide anything. python compare models.py While you wait for your own numbers, list prices give a clean comparison. Take a classification call with 300 input tokens and 30 output tokens, and ignore thinking tokens. At the published prices https://platform.claude.com/docs/en/about-claude/pricing , that costs: | Model | Input / output per million tokens | Cost per 1,000 calls | |---|---|---| | Haiku 5.5 | \$0.10 / \$0.50 | \$0.045 | | Sonnet 5.5 | \$2.00 / \$10.00 | \$0.90 | | Opus 5.5 | \$4.00 / \$20.00 | \$1.80 | The cost per 1,000 calls is 300 × input price + 30 × output price ÷ 1,000,000 × 1,000. This is arithmetic from list prices, not a measurement, and the three models share the same tokenizer family, so the token counts are comparable. On speed, Anthropic says Haiku 5.5 is its fastest model at standard speed https://www.anthropic.com/claude-haiku-5-5 , though Opus models in Fast Mode are quicker. Customers report the gap in practice: Asana saw over 30% lower task latency https://www.anthropic.com/claude-haiku-5-5 than the model it uses today, and Box measured about half the latency of Haiku 4.5 https://www.anthropic.com/claude-haiku-5-5 . When to Reach for Haiku, and When Not To Reach for Haiku 5.5 when the task is narrow, the volume is high, or a person is waiting: classification, routing, extraction, summaries, compaction, and sub-agent work. AlphaSense reported that Haiku 5.5 beat Haiku 4.5 on its document question-answering workload — 0.84 against 0.76 https://www.anthropic.com/claude-haiku-5-5 — on a job that makes about 8 million calls a week. Stay with Sonnet 5.5 or Opus 5.5 for complex agentic coding, where Anthropic says the larger models remain the better choice https://www.anthropic.com/claude-haiku-5-5 . The gap is visible in the benchmarks above. A good rule is to start with Haiku on every high-volume step, test it on a sample of your real data, and move a step up only where the results fall short. Wrapping Up Haiku 5.5 also has a longer runway than its predecessor. Anthropic lists its earliest retirement at October 7, 2027 https://platform.claude.com/docs/en/about-claude/model-deprecations , while Haiku 4.5's earliest date is October 15, 2026 — which is today, though it is still listed as active and Anthropic commits to advance notice before retiring a model. The SDKs also gained beta support for computer use and browser use https://www.anthropic.com/claude-haiku-5-5 , the tasks Anthropic says suit a fast, cheap model. My read is that more agent work will move to small models running in parallel under a larger planner, since the evidence so far from Anthropic's customers points that way. That is an expectation, not a promise. To recap: Haiku 5.5 cuts list prices by 90% for most prompts and adds adaptive thinking, a 1M context window, and a large jump on Anthropic's benchmarks. Migrating means dropping sampling parameters and prefill, reading content blocks by type, and budgeting for more tokens. Use it for classification, extraction, and sub-agents, measure it against Sonnet and Opus on your own data, and escalate only when it falls short. \ Shittu Olumide\ https://www.linkedin.com/in/olumide-shittu/ https://www.linkedin.com/in/olumide-shittu is a software engineer and technical writer passionate about leveraging cutting-edge technologies to craft compelling narratives, with a keen eye for detail and a knack for simplifying complex concepts. You can also find Shittu on Twitter https://twitter.com/Shittu Olumide .