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" is a related but distinct setting: on capable models, it trades a bit of latency optimization for faster output without downgrading which model is actually doing the reasoning.

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