the one real tradeoff

Every model family ships in roughly three tiers, and they all trade the same thing against the same thing: speed and cost on one side, depth of reasoning on hard problems on the other. Bigger isn't strictly "better" — it's slower and more expensive for tasks that didn't need the extra reasoning in the first place.
TierOptimized forReach for it when
Haikuspeed and cost, at high volumesimple, well-defined tasks run often — classification, extraction, short transforms
Sonneta balance of boththe default for real coding work — most day-to-day engineering tasks land here
Opusmaximum reasoning depthgenuinely hard problems — tricky bugs, architecture decisions, anything where getting it wrong is expensive

in claude code specifically

Claude Code lets you switch models mid-session for exactly this reason — start on a fast/cheap tier for routine work, and switch up when you hit something that's clearly fighting back. "Fast mode" (toggled with /fast) is a related but distinct setting, and the distinction is the whole point: it makes the same top-tier model produce output faster, rather than quietly routing you to a smaller one. So it is not a point on the capability/speed trade-off this page is about — reach for it when you want the answer sooner, and switch models when you want a different level of reasoning. Check the official docs for which models currently support it.

in the api

The same tradeoff applies when calling the Messages API directly — it's common to route high-volume, low-stakes calls (e.g. tagging support tickets) to a smaller model, and reserve a larger one for the smaller number of calls that actually need deep reasoning. Current model IDs, context window sizes, and pricing are exactly the kind of detail that goes stale fast — always check the official model overview rather than trusting a cached number.
Model choice also affects your rate limits: each model gets its own requests/tokens-per-minute pool, so using a mix of models genuinely gives more total throughput than sending everything to one. One gotcha — on some API tiers, several recent versions of the same tier (e.g. a handful of Opus point-releases) share one combined rate limit bucket rather than each getting its own, so switching between them doesn't multiply your capacity the way switching between Haiku/Sonnet/Opus tiers does.

a simple decision rule

Default to the middle tier. Drop down only once you've confirmed the smaller model genuinely handles the task at the volume you need. Go up only once you've actually hit a wall — a task the default tier gets wrong repeatedly, not one you merely suspect might need more.

spend and rate limits, briefly

Separate from model choice: API usage is governed by an organization-wide monthly spend cap and per-model rate limits (requests, input tokens, and output tokens per minute), organized into usage tiers that increase automatically as your account builds a usage history. A model that's technically "cheaper" per token doesn't help if you're hitting a rate-limit wall before you hit a spend one — prompt caching is usually the bigger lever for effective throughput, since cached tokens don't count against most models' input-token limit at all.

related topics

Claude Cheat Sheet — where model choice fits into the bigger picture.
Claude API for Developers — routing different requests to different models programmatically.
Avoiding Usage Limits — stretching a session-based usage allowance further by right-sizing the model.
Extended Thinking & Effort Levels — the other tradeoff dial, independent of which model tier you're on.

reference

platform.claude.com — models overview