Claude 5 Family: How to Choose Between Fable 5, Sonnet 5, and Haiku
The Claude 5 family gives you a clean capability ladder: Fable 5 at the top, Sonnet 5 as the balanced default, and Haiku 4.5 as the fast, cheap floor. The money question is not "which is best" — it is "which is right for this request." This guide is a decision tree for matching request difficulty to model, plus the routing pattern that lets you do it under one key.
The lineup at a glance
| Model | Identifier | Input / 1M | Output / 1M | Use it for |
|---|---|---|---|---|
| Claude Fable 5 | claude-fable-5 | $0.40 | $2.00 | The hardest reasoning, agentic, and analysis work |
| Claude Sonnet 5 | claude-sonnet-5 | $0.08 | $0.40 | Default: chat, drafting, routine coding, tool loops |
| Claude Haiku 4.5 | claude-haiku-4-5-20251001 | $0.04 | $0.20 | High-volume, latency-sensitive, low-complexity |
The gap that drives every routing decision: Fable 5 input costs 5× Sonnet 5. On a workload where 90% of requests are routine, running everything on Fable 5 means paying roughly 5× more on that 90% for capability the requests never needed. The whole game is keeping the cheap default cheap and spending frontier tokens only where they change the answer.
A decision tree by request difficulty
Reach for Fable 5 when…
- The task is a long, multi-step agentic loop — the kind where a weaker model loses the thread halfway through and starts undoing its own work.
- You are doing a deep code refactor across many files, where the model has to hold a large mental model of the codebase and stay consistent.
- The request involves hard analysis, math, or multi-constraint reasoning where subtle errors compound.
- A wrong answer is expensive — a mistaken migration, a bad financial calculation, a security-sensitive decision. Here the price difference is noise next to the cost of being wrong.
Default to Sonnet 5 when…
- It is ordinary chat, drafting, or summarization. This is the bulk of most products and Sonnet 5 handles it comfortably.
- It is routine coding — writing a function, fixing a bug with clear scope, explaining code, generating tests.
- It is a bounded tool-calling loop with a handful of steps rather than dozens.
- You are not sure. Sonnet 5 is the correct starting point; measure, then escalate the requests that actually need it.
Drop to Haiku 4.5 when…
- The work is high-volume and simple — classification, extraction, routing, short rewrites, intent detection.
- Latency matters more than depth and the task is well within a small model's reach.
- You are running a cheap first pass that a larger model only reviews when a confidence check fails.
The pattern that saves the most: default plus escalate
The single highest-leverage move is not picking one model — it is running two. Send the default stream to Sonnet 5, and escalate only flagged requests to Fable 5. "Flagged" can be as simple as a request property (a hard-task flag from your own product), a length or complexity heuristic, or a confidence check on Sonnet 5's own output.
Because BUZZ serves the whole Claude 5 family on one endpoint with one key, this is a one-line change in your code, not a second integration:
from openai import OpenAI
client = OpenAI(base_url="https://buzzai.cc/v1", api_key="YOUR_BUZZ_KEY")
def answer(prompt: str, hard: bool = False) -> str:
model = "claude-fable-5" if hard else "claude-sonnet-5"
resp = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": prompt}],
)
return resp.choices[0].message.content
No second SDK, no second key, no second bill to reconcile. The routing logic lives entirely in your model string.
The cost math, made concrete
Take a workload of 1,000,000 requests a month, each averaging 2,000 input tokens and 500 output tokens. That is 2B input tokens and 500M output tokens a month.
| Strategy | Input cost | Output cost | Monthly total |
|---|---|---|---|
| All on Fable 5 | $800 | $1,000 | $1,800 |
| All on Sonnet 5 | $160 | $200 | $360 |
| 90% Sonnet 5 + 10% Fable 5 | $224 | $280 | $504 |
Routing 10% of traffic to Fable 5 and keeping the rest on Sonnet 5 costs about $504/month — roughly 28% of the all-Fable bill, while still giving the hard 10% the frontier model. And these figures are before prompt caching, which on a stable-prefix workload knocks the input line down further still. The point stands regardless of your exact mix: match the model to the request and the savings are structural, not marginal.
Rule of thumb: if you cannot articulate why a request needs the frontier model, it does not. Default to Sonnet 5 and let evidence — not caution — move traffic up to Fable 5.
Prompt caching multiplies all of this
Every model in the family supports Anthropic's cache_control markers, and cache reads are billed at a steep discount to fresh input. If your requests share a stable prefix — a long system prompt, a large tool schema, retrieved documents — caching cuts the input line on whichever model you route to. Because Fable 5 has the highest input rate, caching pays off most there, which makes escalation to Fable 5 cheaper than the headline numbers suggest. The prompt caching playbook and the cache antipatterns post cover how to structure requests so the cache actually hits.
Related reading
- Claude Fable 5 Is Live on BUZZ — model ID, pricing, migration from Opus 4.8.
- Claude Sonnet 5 Is Live on BUZZ — newer and cheaper than Sonnet 4.6.
- Cutting Claude Code Costs Without Losing Capability — the same routing logic applied to the CLI.
Q1: Which Claude 5 model should I use by default?
Sonnet 5. It handles the majority of production traffic and is cheaper than Sonnet 4.6. Escalate to Fable 5 only for hard requests; drop to Haiku 4.5 for high-volume simple work.
Q2: When is Fable 5 worth the higher price?
On long agentic loops, deep multi-file refactors, hard analysis, and any task where a wrong answer is expensive. Everywhere else, Sonnet 5 at a fifth of the input price is the better economic choice.
Q3: How do I route between models without a second integration?
The whole Claude 5 family shares one endpoint and one key on BUZZ, so routing is just changing the model string. Default to claude-sonnet-5, escalate flagged requests to claude-fable-5. No second SDK, key, or bill.
Route the whole Claude 5 family under one key
Sign up, top up, and call claude-fable-5, claude-sonnet-5, and claude-haiku-4-5-20251001 from the same endpoint with the same key. Pay only for the tokens you use.
Last reviewed: 2026-06-30