Almost nobody overpays for Claude because the prices are hidden. They overpay because the meter is measuring something they did not think about: output length, re-sent history, the wrong tier, retries, idle seats, agent loops. Fix those six in order and most bills fall by half without any change to the answers you get.
1. Route by difficulty
Classify each request by difficulty — even a simple rule like length or task type — and send it to the cheapest tier that handles it. The ladder in lesson 2 makes the arithmetic vivid: at the time of writing Haiku 4.5 input is a fifth of Opus 5 and a tenth of Fable 5.1. Measure the cheaper tier's answers against the expensive one on a sample before you trust it, then stop paying for the top tier on routine work.
Before you build a cascade, test the simpler thing: the newest Sonnet at a lower effort setting. On current models lower effort often matches an older model at full effort, and one model means one price list and one cache.
2. Cache the stable prefix
Anything that repeats — system prompt, reference documents, tool definitions — goes first in the request with a cache breakpoint. Later calls read it at about a tenth of the input price. Check cache_read_input_tokens in the usage object; if it is zero on repeated calls, something in the prefix is changing every time, usually a timestamp.
3. Batch what can wait
Nightly jobs, bulk classification, evaluations and report generation do not need an answer in seconds. The Batch API halves the price of every one of them. It stacks with caching.
4. Shorten the output
Output tokens are five times the price of input on every Claude tier. Ask for the format you need — a table, five bullets, a word limit, JSON with a schema — and set max_tokens to match. This is the only optimisation that also makes the answers better.
5. Cap the agents
Claude Code and API agents multiply calls silently. Set a maximum number of steps, give the model a token budget it can see, and put a spend limit on the API key. On the app side, this is exactly the usage Max is priced for — so if you are running agents all day on Pro and hitting limits, Max is not an overpayment; it is the cheaper meter.
6. Audit the plans quarterly
| Symptom | Likely cause | Fix |
|---|---|---|
| Max plan, never hit a limit | Bought allowance you do not use | Downgrade to Pro; re-upgrade if warnings return |
| API bill grows with conversation length | Re-sent history, no caching | Cache the prefix; trim history |
| Every request on Opus or Fable | No routing | Default to Sonnet; route up on failure |
| Answers cut off mid-sentence | max_tokens too low → retries | Raise it to match the format |
| Cache reads always zero | Volatile prefix (timestamp, ID) | Move changing content after the breakpoint |
| Weekend spend same as weekday | Runaway agent or cron job | Step caps, key spend limits |
Do it now with the desk tools
Knowledge check
Which single change most often halves a Claude API bill without changing the answers?