The tier comparison everyone publishes is a table of token prices. The decision does not turn on token prices. It turns on cost per finished task — and a tier that costs five times as much per token but gets there in one attempt instead of three is not five times as expensive.
So this page gives you the arithmetic rather than a verdict, computed from live catalog rates with every input visible. The number it produces is not a price. It is an attempt count: how much worse a cheaper tier has to be before it stops being cheaper.
The rates
| Tier | Kunavo, per 1M in / out | Anthropic list | Per agentic step |
|---|---|---|---|
| Claude Haiku 4.5 | $0.70 / $3.50 | $1.00 / $5.00 | $0.022 |
| Claude Sonnet 5 | $1.40 / $7.00 | $2.00 / $10.00 | $0.043 |
| Claude Opus 5 | $3.50 / $17.50 | $5.00 / $25.00 | $0.109 |
Rates are read from the catalog at render time and printed next to Anthropic's own list price, so both halves are checkable. Nothing on this page is a hand-typed number.
The arithmetic that actually decides it
# Cost per finished task, not cost per million tokens.
#
# task_cost = step_cost x steps x attempts
#
# A step here is 25,000 input + 1,200 output tokens —
# one agentic round trip, sized the same way every cost page on
# this site sizes it.
#
# Claude Haiku 4.5 $0.022 / step
# Claude Sonnet 5 $0.043 / step
# Claude Opus 5 $0.109 / step
#
# So the break-even is an ATTEMPT COUNT, not a price:
#
# Claude Haiku 4.5 stops being cheaper than Claude Sonnet 5
# once it needs 2.0x the attempts.
#
# Claude Sonnet 5 stops being cheaper than Claude Opus 5
# once it needs 2.5x the attempts.
#
# That is the whole decision. Everything else is judgement about
# how many attempts YOUR tasks take on each tier.Read the two break-evens as questions about your own work, not as recommendations. If the cheaper tier gets your tasks right first time, it wins by a wide margin. If it needs a second and third pass — and worse, if a wrong answer costs you a review cycle rather than just a retry — it stops winning quickly.
Two things this model deliberately leaves out, because pretending otherwise would be dishonest. It does not price your time: a retry costs a step, and reading a wrong answer costs a person. And it does not include a measured quality difference between the tiers on your tasks, because that is workload-specific and we have not benchmarked yours. Both push in the same direction — toward the stronger tier — so treat the arithmetic as the floor of the case for Sonnet or Opus, not the whole of it.
Why the split beats the choice
Framing this as “which one model” is the mistake. Real workloads are mixed: the same coding session contains architecture decisions and commit messages, and paying Opus rates for a commit message is as wasteful as asking Haiku to design a schema.
# The HAIKU line is required on Kunavo: unpinned, the haiku alias asks for an
# id Kunavo does not serve (Haiku 5.5 from v2.1.293), so /model haiku and
# haiku subagents 404. It also sends Claude Code's own background calls to
# Haiku instead of the main model.
export ANTHROPIC_MODEL=claude-sonnet-5
# The sonnet alias asks for Sonnet 5.5, which Kunavo does not serve:
# unpinned, /model sonnet, opusplan's execution phase and sonnet
# subagents 404.
export ANTHROPIC_DEFAULT_SONNET_MODEL=claude-sonnet-5
export ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-haiku-4-5
# Same idea in any client with a per-role model field: strong model
# for the work, cheapest model for the housekeeping.In Claude Code the Haiku mapping is not optional through Kunavo: the haiku alias asks for a model id Kunavo does not serve (Haiku 5.5 from v2.1.293), so without it /model haiku and subagents set to haiku return 404. It also carries the background calls Claude Code makes on its own, which otherwise run on your main model. The same idea applies in any client with per-role model fields; CC Switch exposes it as an explicit Sonnet / Opus / Haiku mapping, and Continue as one entry per role.
Running the experiment
The attempt count is the only unknown, and it is cheap to measure because the tiers share a request format: run the same ten tasks on two tiers, count how many needed a second pass, and multiply. On Kunavo they also share one key and one base URL, so the experiment is an environment variable rather than a second account.
Put your own token counts into the Claude token cost calculator — including the cached fraction, which on agentic workloads is most of the input and shifts every number here. The full rate table is on the Claude API pricing page, and the subscription-versus-token question is on Claude Pro and Max limits.
Frequently asked questions
What is the difference between Claude Opus, Sonnet and Haiku?
They are three capability tiers of the same model family, priced accordingly. Haiku is the small, fast and cheapest tier; Sonnet is the balanced default; Opus is the largest and most capable. At Kunavo rates per 1M tokens, Claude Haiku 4.5 is $0.70 / $3.50, Claude Sonnet 5 is $1.40 / $7.00, and Claude Opus 5 is $3.50 / $17.50. The tiers are interchangeable at the API level — the same request works against any of them, so switching is a model id, not a migration.
Is Claude Opus worth the extra cost over Sonnet?
Only where the task fails on Sonnet. The useful way to frame it is as an attempt count rather than a price ratio: at the step size used on this page, Claude Opus 5 costs about 2.5x a Claude Sonnet 5 step, so Opus is cheaper in total whenever Sonnet needs more than that many attempts to get the same task right. For routine edits and well-specified changes Sonnet usually needs one attempt and Opus is simply more expensive; for ambiguous, architecture-level work the attempt count on the cheaper tier climbs fast and the ratio flips.
Is Claude Haiku good enough instead of Sonnet?
For bounded, mechanical work — classification, extraction, summarising a diff, writing a commit message — Haiku frequently is, and the price gap is large enough that it should be the default for those. The break-even is the same shape: Claude Haiku 4.5 stops being the cheaper choice once it needs about 2.0x the attempts of Claude Sonnet 5. Where it tends to lose is on tasks that need holding several constraints at once, because a retry there is not just a retry — it is a human reading a wrong answer.
Which Claude model is cheapest for coding?
Per token, Haiku. Per finished feature, usually a split: a strong tier doing the edits and Haiku doing the bounded sub-tasks. In Claude Code the Haiku mapping is also what /model haiku and subagents set to haiku resolve to, so through Kunavo it is required — unset, the haiku alias asks for a model id Kunavo does not serve and returns 404 — and it moves the background calls Claude Code fires on its own off your main model. Switching your main model is the quality decision you will notice.
How do I compare Claude model costs for my own workload?
Multiply, do not compare rates. Take your real input and output token counts per request from the usage object your API responses already return, multiply by the tiers' rates, then multiply by how many attempts each tier actually needs on your tasks. The last factor is the one that decides it and the one no pricing table contains. The Claude token cost calculator on this site does the first two and has a cached-tokens field, which matters because on agentic workloads most of the input repeats.
Can I switch between Claude tiers without changing my code?
Yes — the tiers share one request format, so the change is a model id string. On Kunavo they also share one key and one base URL, so moving a workload from Sonnet to Haiku is an environment variable rather than a second account, second billing relationship and second set of credentials. That is what makes the attempt-count experiment on this page cheap enough to actually run.