All payments made in the preview are in test mode. Read more
claudetokenoptimization.com

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.

Figures last verified 2026-09-19

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:

  1. Task class — classify, extract, draft, reason, code, review?
  2. Failure cost — wrong answer is cheap (retry) or expensive (customer, compliance, merge)?
  3. Latency budget — interactive chat vs batch overnight?
  4. 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]

ModelInput / MTokOutput / MTokTypical role in a router
Claude Haiku 4.5$1$5Default for classify, extract, short rewrite, triage
Claude Sonnet 5$2$10Default for most production drafting and mid-complexity code
Claude Sonnet 4.5 / 4.6$3$15Still common in existing stacks; treat like mid-tier
Claude Opus 4.5+ / Opus 5$5$25Escalate for hard reasoning, high-stakes review, ambiguous specs
List prices only. Cache hits, Batch 50% discount, and fast mode change the math — see Anthropic pricing docs.

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 typeDefaultEscalate whenQuality check
Classify / tag / route ticketsHaiku 4.5Ambiguous multi-label or policy edge casesAgreement vs gold labels on a held-out set
Extract fields from structured docsHaiku 4.5Messy PDFs, handwriting, or high $ per errorField-level precision/recall on samples
Short rewrite / tone / formatHaiku 4.5Brand-critical or legal wordingEditor spot-check 10%
Draft email / blog / PR descriptionSonnet 5 (or 4.6)Executive voice, novel strategy, or weak draftHuman accept/reject; track rewrite rate
Coding: boilerplate, tests, renamesSonnet 5Novel architecture, subtle bugs, securityCI + review; escalate on second fail
Hard reasoning / ambiguous specsOpus— (already top)Rubric or senior review; do not auto-downgrade
Final review of high-stakes outputOpus (or Sonnet→Opus)—Checklist pass before ship
Defaults, not dogma. Escalate when your quality check fails.

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:

  1. Build a tiny eval set — 20–50 real examples for that task class, not synthetic happy paths.
  2. Define pass — exact match, rubric score ≥ N, or human accept.
  3. Run A/B on the same inputs — Haiku vs Sonnet vs Opus with identical prompts and temperature settings you actually use.
  4. Ship with a rollback — feature flag or config key so one bad week does not become a permanent “Opus forever” scar.
  5. 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 modelApprox. monthly API $Notes
All Opus 5 ($5/$25)$525100k × (800×$5 + 50×$25) / 1e6
All Haiku 4.5 ($1/$5)$105Same shape; ~5× list-price savings
Haiku + 5% Opus escalate$12695k Haiku + 5k Opus on same shape
Illustrative. Recalculate with your average tokens per call.

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)

  1. Attribute first — know which workload owns the bill (team tracking).
  2. Shorten standing context — then route (system prompt costs).
  3. Config, not vibes — model ID per route in code or gateway; no hard-coded Opus in five services.
  4. Confidence / cascade — cheap model + score; escalate below threshold.
  5. 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]
  6. 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:

  1. 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.
  2. 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.
  3. 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

MetricWhat good looks likeIf it goes wrong
Model mix %Opus share falls; Haiku/Sonnet rise on labeled classesOpus share flat → defaults not wired or UI still defaults heavy
Cost or capacity per finished taskDown or flat with stable qualityDown with rising rewrite/reject rate → quality gate too weak
Escalation rateStable thin tail (often single-digit % on classify)Rising fast → prompt or taxonomy problem
Human override rateLow and reviewed weeklyHigh → wrong default or missing context in the cheap path
Track these for two weeks after a default change.

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

  1. List your top three task classes from Attribute.
  2. Assign Haiku / Sonnet / Opus defaults from the table above.
  3. Build a 20–50 example quality check before flipping production.
  4. Re-run Measure in two weeks; keep the cost framework loop going.
  5. 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.

Keep reading