Optimize
Model Routing: When to Use Haiku Instead of Opus (And What It Saves)
Defaulting every request to Opus is the most expensive habit that still feels productive. Route by task type with a quality check so you trust the downgrade — and keep Opus for the work that actually needs it.
This page is part of the Optimize hub, which covers the whole topic end to end.
Last updated 19 September 2026. API list prices below were checked against Anthropic’s published Claude API pricing docs on that date. Seat-plan capacity and how different models feel against usage bars are not published as fixed per-model token allotments — treat those notes as operational guidance and confirm in your own Settings > Usage. [VERIFY: 2026-09-19]
Not affiliated with Anthropic. Claude Token Optimization is an independent site and audit service. Claude® and related product names are trademarks of Anthropic PBC. Plan prices, model rates, and usage limits change; always confirm on Anthropic’s own docs. [VERIFY: 2026-09-19]
Searches for llm routing cost latency quality formula, how can i use multiple llm models at low cost, claude haiku 4.5 pricing per million tokens, and claude opus usage limit usually want the same operational answer: when is the cheap model good enough, when do you escalate, and how do you prove the downgrade did not tank quality?
Model routing is Stage 3 of the LLM cost framework (Reduce) — after Measure and Attribute, and preferably after you shorten standing context. Routing a fat system prompt to Haiku still burns the fat prompt. For how Claude tokens are counted, start there; to estimate cost before you send, open the calculator early. Per-model list prices live on Claude API pricing.
What “routing” means (and what it is not)
Routing is a written default: which model handles which task class, plus an escalate path when quality fails. It is not a beauty contest, not “always use the newest,” and not a one-line Slack rule with no owner.
Good routing answers four questions before a request is sent:
- Task class — classify, extract, draft, reason, code, review?
- Failure cost — wrong answer is cheap (retry) or expensive (customer, compliance, merge)?
- Latency budget — interactive chat vs batch overnight?
- Quality check — how will a human or test decide if the cheap model was enough?
If you cannot answer those, you are not routing — you are hoping. Pair this page with eleven ways to cut token usage so structure and model choice move together.
Verified Claude API list prices (2026-09-19)
Base input / output per million tokens (MTok), standard Claude API pricing — not Batch, not cache multipliers, not fast mode. Confirm live on Anthropic’s docs. [VERIFY: 2026-09-19]
| Model | Input / MTok | Output / MTok | Typical role in a router |
|---|---|---|---|
| Claude Haiku 4.5 | $1 | $5 | Default for classify, extract, short rewrite, triage |
| Claude Sonnet 5 | $2 | $10 | Default for most production drafting and mid-complexity code |
| Claude Sonnet 4.5 / 4.6 | $3 | $15 | Still common in existing stacks; treat like mid-tier |
| Claude Opus 4.5+ / Opus 5 | $5 | $25 | Escalate for hard reasoning, high-stakes review, ambiguous specs |
Relative to Opus at $5 / $25, Haiku 4.5 at $1 / $5 is roughly 5× cheaper on input and 5× cheaper on output at the list-price layer. Sonnet 5 at $2 / $10 sits in the middle. That ratio is the ceiling on savings from routing alone — real savings also depend on token shape (retries, tools, standing context). [VERIFY: 2026-09-19]
A practical llm routing cost–latency–quality formula
You do not need a PhD score. You need a score you will actually use. One workable formula for choosing a default model per task class:
Score = (Quality risk × Failure cost) + Latency weight − Cost weight
- Quality risk (1–5): how often the cheap model fails your check on a sample of 20–50 examples.
- Failure cost (1–5): customer-facing or irreversible vs internal draft.
- Latency weight (0–3): interactive UX needs fast; Batch can wait.
- Cost weight (1–5): how much this class dominates the bill (from Attribute).
Heuristic: score ≤ 6 → Haiku default; 7–12 → Sonnet default; ≥ 13 → Opus default or Haiku→Sonnet→Opus cascade. Tune the bands after two weeks of samples — the formula is a starting point, not a fake precision claim.
Cost-per-finished-task framing from cost per task beats raw list-price ratios when the expensive model needs fewer retries.
Decision rule by task type
| Task type | Default | Escalate when | Quality check |
|---|---|---|---|
| Classify / tag / route tickets | Haiku 4.5 | Ambiguous multi-label or policy edge cases | Agreement vs gold labels on a held-out set |
| Extract fields from structured docs | Haiku 4.5 | Messy PDFs, handwriting, or high $ per error | Field-level precision/recall on samples |
| Short rewrite / tone / format | Haiku 4.5 | Brand-critical or legal wording | Editor spot-check 10% |
| Draft email / blog / PR description | Sonnet 5 (or 4.6) | Executive voice, novel strategy, or weak draft | Human accept/reject; track rewrite rate |
| Coding: boilerplate, tests, renames | Sonnet 5 | Novel architecture, subtle bugs, security | CI + review; escalate on second fail |
| Hard reasoning / ambiguous specs | Opus | — (already top) | Rubric or senior review; do not auto-downgrade |
| Final review of high-stakes output | Opus (or Sonnet→Opus) | — | Checklist pass before ship |
The pattern: cheap model first, escalate on signal. Cascades cost an extra call when they fire, but they beat sending Opus to every classify job. For how can i use multiple llm models at low cost, this table is the answer — not five providers in one weekend.
Quality checks so readers (and you) trust the downgrade
Downgrades fail when nobody measures quality. Before you change a default:
- Build a tiny eval set — 20–50 real examples for that task class, not synthetic happy paths.
- Define pass — exact match, rubric score ≥ N, or human accept.
- Run A/B on the same inputs — Haiku vs Sonnet vs Opus with identical prompts and temperature settings you actually use.
- Ship with a rollback — feature flag or config key so one bad week does not become a permanent “Opus forever” scar.
- Re-sample monthly — prompts drift; evals go stale.
If Haiku passes ≥ your threshold (often 90–95% for classify/extract) and failure cost is low, keep Haiku. If it fails on the expensive edge cases only, cascade: Haiku first, Opus on low confidence or human flag — not Opus on every row.
Illustrative savings math (labeled — not a bake-off)
The scenarios below use verified list prices and assumed token shapes. They are teaching examples so you can plug in your own Measure numbers — not claims that your workload will match. [VERIFY: 2026-09-19]
Scenario A — 100k classify calls / month
Assume 800 input + 50 output tokens per call (illustrative).
| Default model | Approx. monthly API $ | Notes |
|---|---|---|
| All Opus 5 ($5/$25) | $525 | 100k × (800×$5 + 50×$25) / 1e6 |
| All Haiku 4.5 ($1/$5) | $105 | Same shape; ~5× list-price savings |
| Haiku + 5% Opus escalate | $126 | 95k Haiku + 5k Opus on same shape |
If your classify job already fails quality on Haiku, this savings is fake — fix the prompt or keep Sonnet. Routing without a quality check is how teams “save” money and create support tickets.
Scenario B — mixed product agent (illustrative mix)
Assume monthly volume: 40% classify (Haiku-ok), 40% draft (Sonnet), 20% hard reason (Opus), with similar mid-size prompts. Versus an all-Opus baseline, list-price spend often drops into the 40–70% less range depending on output share — again, illustrative of mix, not a guaranteed benchmark. Run the cost calculator with your shapes.
Seat plans and “Claude Opus usage limit”
On Pro / Max / Team chat seats, Anthropic does not publish a fixed “Opus gets N tokens, Haiku gets M” allotment you can quote as law. What operators observe: heavier models and longer outputs consume the session / weekly capacity bars faster for the same visible chat length. Treat claude opus usage limit searches as a capacity problem — measure in Settings > Usage, then route lighter models for routine turns so Opus headroom remains for hard work. [VERIFY: 2026-09-19]
Soft guidance (confirm in your UI): default Sonnet or Haiku for triage and short edits; switch to Opus when the task is ambiguous or high-stakes; start a new chat when the task changes so you are not paying standing context into the bar. See why you hit the limit, how to check usage, and when limits reset.
How to use multiple models at low cost (implementation)
- Attribute first — know which workload owns the bill (team tracking).
- Shorten standing context — then route (system prompt costs).
- Config, not vibes — model ID per route in code or gateway; no hard-coded Opus in five services.
- Confidence / cascade — cheap model + score; escalate below threshold.
- Batch where latency allows — Batch API is 50% off list on Claude API for async jobs; still pick the right model inside the batch. [VERIFY: 2026-09-19]
- Cache stable prefixes after they are short — prompt caching.
Multi-provider routing (Claude + GPT + Gemini) is optional. Most teams leave 30–50% of Claude spend on the table by never leaving Opus. Fix that before you build a three-vendor mesh.
Anti-patterns
- Opus as the global default because one engineer liked a demo.
- Haiku for everything without an escalate path — silent quality debt.
- Routing before Measure — you will downgrade the wrong workload.
- Caching a bloated Opus prefix — locks waste in at a discount.
- Fake bake-offs — cherry-picked prompts that always favor your favorite model. Use held-out real traffic.
Where this fits in an audit
A Claude token audit often finds “Opus on classify” and “no quality gate on downgrade” next to fat system prompts. The change list is usually: compress prefix → set Haiku/Sonnet defaults by task class → escalate rules → re-measure in two weeks. See start an audit and the pattern catalog on what an audit finds. No dollar price on this page — checkout pricing lives only on the audit page.
Worked example: support-bot routing (illustrative)
Numbers are labeled illustrative so you can redo the arithmetic with your Measure export — not a claim about your ticket mix. [VERIFY: 2026-09-19]
A support bot handles 50,000 tickets / month. Today everything runs Opus with ~1,200 input and ~180 output tokens per ticket (standing policy text included). List-price math:
- Opus: 50k × (1,200 × $5 + 180 × $25) / 1e6 ≈ $525 / month on tokens alone.
After Attribute, 70% of tickets are intent-classify + canned reply (Haiku-ok on a 40-example eval at 94% agree), 25% need drafted replies (Sonnet), 5% are escalations (Opus + human). Same token shape assumed for simplicity:
- Haiku 35k: 35k × (1,200 × $1 + 180 × $5) / 1e6 ≈ $73.50
- Sonnet 5 12.5k: 12.5k × (1,200 × $2 + 180 × $10) / 1e6 ≈ $52.50
- Opus 2.5k: 2.5k × (1,200 × $5 + 180 × $25) / 1e6 ≈ $26.25
- Mixed total ≈ $152 — roughly 70% below the all-Opus baseline on list price for this assumed shape.
Two caveats that keep this honest: (1) if you shorten the 1,200-token policy block first, both baselines drop and routing savings shrink in dollars but quality often rises; (2) if Haiku’s 6% disagree rate is expensive tickets, cascade those 6% to Sonnet/Opus and recompute — still usually far below all-Opus. Wire the quality check before you celebrate the $152 figure.
Cascade patterns that stay cheap
Cascades are how you use multiple models at low cost without pretending one model fits every row. Three patterns show up in production:
- Haiku → Sonnet → Opus. Classify confidence or a rubric score gates each step. Most traffic stops at Haiku; a thin middle band hits Sonnet; a rare tail hits Opus.
- Sonnet draft → Opus review. Useful for customer-facing copy: cheap generation, expensive judgment. Do not reverse it (Opus draft → Haiku “polish”) unless you have proven Haiku can catch the failures that matter.
- Haiku triage → human → Opus. For support and trust-and-safety adjacent work where wrong automation is costly. The model’s job is queueing, not final say.
Every cascade needs a kill switch: max escalations per minute, and a budget alert when the Opus tail grows past your expected share. If 40% of traffic is escalating, your default is wrong or your prompt is under-specified — fix those before you celebrate routing.
Latency vs cost vs quality (worked intuition)
The search phrase llm routing cost latency quality formula sounds like a single equation. In practice you trade two at a time:
- Interactive chat: latency and quality dominate; use Sonnet defaults and reserve Opus for explicit “think hard” actions.
- Batch / offline: cost dominates; Haiku + Batch discount is often the winning pair when quality checks pass. [VERIFY: 2026-09-19]
- Agent loops: quality and retry policy dominate; a slightly more expensive model that finishes in one tool loop can beat a cheap model that loops five times — see tool use costs and the same lesson in cost per task.
Write the trade-off down per workload. Teams that optimize only for list price quietly accept worse latency or more human cleanup, then blame “AI.”
Claude Code and IDE routing
Coding assistants often default to the heaviest model because the demo looked smart. For renames, test stubs, comment cleanup, and “explain this function,” mid-tier is usually enough. Save Opus for unfamiliar codebases, concurrency bugs, and security-sensitive reviews. Pair with Claude Code token cuts and Claude Code costs — routing without /clear discipline still fills the window.
Practical IDE habit: name the model in the first line of a heavy session (“use Sonnet unless I say Opus”) so the default is visible, not ambient. Ambient Opus is how weekly bars disappear on Tuesday.
Measuring whether routing worked
| Metric | What good looks like | If it goes wrong |
|---|---|---|
| Model mix % | Opus share falls; Haiku/Sonnet rise on labeled classes | Opus share flat → defaults not wired or UI still defaults heavy |
| Cost or capacity per finished task | Down or flat with stable quality | Down with rising rewrite/reject rate → quality gate too weak |
| Escalation rate | Stable thin tail (often single-digit % on classify) | Rising fast → prompt or taxonomy problem |
| Human override rate | Low and reviewed weekly | High → wrong default or missing context in the cheap path |
Put model mix next to attributed spend in the weekly review from team tracking. Routing without attribution is how one team “saves” while another silently reverts to Opus.
Governance: who owns the defaults?
Someone has to own the routing table. Suggested split:
- Platform / ML eng: config keys, gateway routes, eval harness.
- Workload owners: quality thresholds and escalate rules for their class.
- Finance partner: watches cost-per-task and unlabeled Opus spend.
Change control: new default requires a linked eval note (even a short doc) and a two-week Monitor window. Drive-by Slack “switch everything to Haiku” messages are how you get silent regressions and then a permanent ban on cost work.
Provider-aware note (without a fake multi-model bake-off)
This page is Claude-first because the rate card and seat meters here are Anthropic’s. The same routing logic applies if you also call other providers: classify task class, set a default, escalate on quality failure, measure cost per finished task. Do not invent a three-way winner from cherry-picked prompts — run your own held-out set, or stay on one provider until Claude routing is boring and documented.
FAQ
Is Haiku 4.5 always 5× cheaper than Opus?
At list price for the same token counts, input and output are each 5× ($1/$5 vs $5/$25). Real bills differ when models produce different lengths, retries, or tool loops. [VERIFY: 2026-09-19]
Should I route before or after cutting token usage?
After standing-context and thread fixes when you can — otherwise every model pays the fat prefix. See cut token usage.
Does Sonnet 5 replace Sonnet 4.5/4.6 in the router?
For new defaults, prefer current Sonnet 5 pricing ($2/$10) where your quality checks pass. Existing 4.5/4.6 stacks remain mid-tier at $3/$15 until you migrate. [VERIFY: 2026-09-19]
What about latency?
Haiku is usually the latency win for short tasks; Opus can be slower and more expensive. Put latency in the score; do not assume cheaper always means faster for long generations.
Next steps
- List your top three task classes from Attribute.
- Assign Haiku / Sonnet / Opus defaults from the table above.
- Build a 20–50 example quality check before flipping production.
- Re-run Measure in two weeks; keep the cost framework loop going.
- If the sample already shows Opus-everywhere waste, have the prompts reviewed.
Model routing is not a slogan about “using AI efficiently.” It is a default map, a quality gate, and a willingness to leave Opus for the work that earns it.