How the estimate works
Monthly cost = requests × (uncached input tokens × input price + cached input tokens × cache-read price + output tokens × output price). Cost per user divides that by your monthly active users; cost per request divides it by requests. With Batch API on, input, cache and output prices are halved, which matches the published 50% discount.
Cache hit rate means the share of each request's input tokens that are served from the prompt cache. A chat app with a long system prompt and tool definitions usually sees 60–90%. The calculator does not add the one-time cache-write surcharge (1.25× input for a 5-minute cache, 2× for 1 hour), because it is paid once per cache window rather than per request. For most production workloads it adds a few percent at most. Extended thinking tokens are billed as output tokens, so add them to the output figure if you use it.
Current Claude API prices (USD per million tokens)
| Model | Input | Output | Cache read | Cache write (5m) | Batch input | Batch output |
|---|
Haiku 5.5: prompts over 100,000 tokens are billed at $0.50 input / $2.50 output / $0.05 cache read. Prompt cache reads are 0.05× the input price on Opus 5.5 and Sonnet 5.5, and 0.1× on Haiku 5.5. The price table lives in pricing.json and is checked against the official page on the date shown above.
Three ways to lower the number
- Cache the prefix. Put the system prompt, tool definitions and long documents first, and the volatile question last. Cache reads cost 5–10% of the input price.
- Route by task. Classification, extraction and short replies on Haiku 5.5; agentic coding and multi-step tool use on Sonnet 5.5; reserve Opus 5.5 for the work where quality visibly matters. Try the comparison table above with your real token counts.
- Batch what is not interactive. Nightly summaries, evals, backfills and reports can run through the Batch API at half price.
To see actual per-user numbers instead of estimates, read How to meter Claude API costs per user in a Next.js SaaS. It walks through recording every call's token usage per user and converting it to dollars with the same price table.