BUZZ AI Gateway
HomeBlog › Claude 5 Family: How to Choose

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.

Published 2026-06-30 ยท Reading time ~7 min

Fable 5Frontier / escalate
Sonnet 5Default workhorse
Haiku 4.5High-volume floor
1 keyWhole family

The lineup at a glance

ModelIdentifierInput / 1MOutput / 1MUse it for
Claude Fable 5claude-fable-5$0.40$2.00The hardest reasoning, agentic, and analysis work
Claude Sonnet 5claude-sonnet-5$0.08$0.40Default: chat, drafting, routine coding, tool loops
Claude Haiku 4.5claude-haiku-4-5-20251001$0.04$0.20High-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…

Default to Sonnet 5 when…

Drop to Haiku 4.5 when…

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.

StrategyInput costOutput costMonthly 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

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.

Create an account
Published: 2026-06-30
Last reviewed: 2026-06-30