Claude Fable 5 vs GLM-5.2
Which one, when — curated verdict, not a benchmark table
Both models carry a 1,000,000-token context window and similar max output (128000 for claude-fable-5, 131072 for glm-5.2), so the split is about inputs and cost: claude-fable-5 accepts image alongside text and always runs with thinking on, while glm-5.2 is text-only and lets you switch thinking off. On the rate card glm-5.2 is roughly 13x cheaper on input ($0.77 vs $10), about 21x cheaper on output ($2.42 vs $50), and near 7x cheaper on cache reads ($0.143 vs $1). Pick claude-fable-5 when you need image input or forced reasoning; pick glm-5.2 for high-volume long-context text work.
Pricing
| Claude Fable 5 | GLM-5.2 | Δ | |
|---|---|---|---|
| Input / 1M tokens | $10 | $0.77 | 13× |
| Output / 1M tokens | $50 | $2.42 | 21× |
| Cache read / 1M tokens | $1 | $0.143 | 7× |
| Cache write | 1.25x (5m) / 2x (1h) | — | — |
Rates from the live catalog at build time; each model page carries the current card.
Where they sit — input price per 1M tokens across all 63 chat models on this billing unit (log scale)
Capabilities
| Claude Fable 5 | GLM-5.2 | |
|---|---|---|
| Tool use | yes | yes |
| Thinking control | always on | configurable |
| Structured output | yes | yes |
| Prompt caching | explicit (you mark the prefix) | implicit (automatic) |
| Cache lifetime | 5m default, 1h option | not published |
| Minimum cached prefix | 1024 tokens | not published |
Specs
| Claude Fable 5 | GLM-5.2 | |
|---|---|---|
| Input modalities | text image | text |
| Output modalities | text | text |
| Released | 2026-06-09 | 2026-06-16 |
| Knowledge cutoff | 2026-01 | — |
| Context window | 1M | 1M |
| Max output | 128K | 131K |
| Thinking parameter | output_config.effort (thinking.type is adaptive-only and needs no configuration) |
|
| Accepted values | effort
both "enabled" and "disabled" return 400 | thinking.type
reasoning_effort
|
| Default | thinking always on (adaptive) effort
| enabled, with reasoning_effort at max: the only GLM with an effort dial, and it defaults to the top of it |
Specs are transcribed from each vendor’s documentation; a row a vendor does not publish is left out rather than inferred. Full sources: Claude Fable 5 · GLM-5.2
One prompt, both models — measured through the gateway
Claude Fable 5 passed · 3 sentences
When we enabled reasoning, the model began generating extensive internal "thinking" tokens before each answer, and those tokens are billed as output even though users never see them. Output tokens typically cost several times more than input tokens, so adding thousands of hidden reasoning tokens per request effectively multiplied our per-query cost. In short, we're paying for a much longer response behind the scenes in exchange for higher answer quality, and we can manage this by tuning reasoning effort levels or reserving reasoning mode for complex tasks only.
out 228 tok latency 6.7 s
GLM-5.2 passed · 3 sentences
Enabling reasoning means the LLM now generates thousands of invisible "thinking" tokens to systematically work through complex problems before producing a final answer. Because our cloud providers bill for these internal processing steps at the same rate as standard output, our billable token volume per query has doubled. While this increases our direct API costs, it drastically reduces error rates and manual review labor, ultimately lowering our total cost per resolved transaction.
out 1223 tok (+1138 thinking) latency 17.1 s
Instruction following (exactly three sentences — countable), audience shaping (CFO register), and the hidden-thinking billing gap the token meters below expose.
Claude Fable 5 passed · 8/8 cases
## Fixed code ```python def longest_run(xs): if not xs: return 0 best = cur = 1 for i in range(1, len(xs)): if xs[i] == xs[i - 1]: cur += 1 else: cur = 1 best = max(best, cur) return best ``` ## Explanation The original function counts **adjacent equal pairs** rather than **items in a run**: a run of length *n* contains only *n − 1* equal neighbor pairs, so every result is off by one — a single-element list yields 0 instead of 1, and `[1, 2, 2]` yields 1 instead of 2 (which callers perceive as "missing" the run at the end). The fix is to initialize both `cur` and `best` to 1 (any nonempty list has a run of at least length 1), reset `cur` to 1 rather than 0 when
out 531 tok latency 12.5 s
GLM-5.2 missed · 1/8 cases (fails [1])
```python def longest_run(xs): if not xs: return 0 best = 1 cur = 1 for i in range(1, len(xs)): if xs[i] == xs[i - 1]: cur += 1 […]
out 4097 tok (+4036 thinking) latency 58.4 s
Whether the fix is actually correct (runnable), explanation density, and token efficiency on a bounded task.
Claude Fable 5 passed · 5/5 fields, guidance null
```json { "company": "Meridian Robotics", "quarter": "Q3 (September quarter)", "revenue_usd_m": 412, "growth_pct": 11, "guidance": null } ``` Notes on interpretation: "up eleven and change" is rendered as 11 (the precise figure isn't stated), and guidance is null because it was explicitly withheld.
out 192 tok latency 6.5 s
GLM-5.2 passed · 5/5 fields, guidance "withheld"
```json { "company": "Meridian Robotics", "quarter": "September quarter", "revenue_usd_m": 412, "growth_pct": 11, "guidance": "withheld" } ```
out 1947 tok (+1893 thinking) latency 30.9 s
Schema obedience (no invented fields), hallucination pressure (guidance is explicitly withheld), and structured-output path differences.
Claude Fable 5 passed · 120 words, 0 banned, 1 question
**Introducing Cross-Provider Prompt Caching for our API Gateway** Starting today, your repeated prompts are cached once and reused across OpenAI, Anthropic, Google, and any other provider you route through the gateway. Instead of paying full token costs every time your application sends the same system prompt or context block, the gateway detects matching prefixes and serves cached results in milliseconds. Why keep spending money and latency on identical requests? Early adopters report cost reductions of up to 60 percent on high-volume workloads, along with faster median response times. Configuration is simple: enable caching in your dashboard, set a TTL, and choose which routes participate. Cache entries are encrypted at rest and never shared between accounts. Available now on all plans.
out 1173 tok latency 18.2 s
GLM-5.2 passed · 120 words, 0 banned, 1 question
We are introducing Caching for our API Gateway, the smartest way to optimize your workflows. Why pay for the exact same response twice? Now, you can automatically store and reuse prompt results across multiple AI providers, drastically reducing latency and overall operational costs. If a user submits a duplicate query, the gateway serves the cached answer instantly, regardless of whether you route to OpenAI, Anthropic, or others. This directly translates to faster applications and significantly lower monthly API bills. You can easily configure your specific caching rules within the developer dashboard and watch your efficiency soar. Stop wasting your valuable tokens on completely redundant computations. Upgrade to the latest gateway version today and experience the future of intelligent prompt management.
out 11125 tok (+10984 thinking) latency 114.8 s
Constraint obedience (word budget, banned-word list, the single question), style fingerprint, and length control.
Switch between them with one line
Both ids are in every tab below — the highlighted pair of lines is the only edit. Same endpoint, same key, same request shape.
from openai import OpenAI
client = OpenAI(
base_url="https://synthorai.io/v1",
api_key="sk-syn-...",
)
resp = client.chat.completions.create(
model="claude-fable-5",
# model="glm-5.2", # uncomment this line, comment the one above
messages=[{"role": "user", "content": "Summarize this diff"}],
reasoning_effort="medium",
)
print(resp.choices[0].message.content)import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://synthorai.io/v1",
apiKey: "sk-syn-...",
});
const resp = await client.chat.completions.create({
model: "claude-fable-5",
// model: "glm-5.2", // uncomment this line, comment the one above
messages: [{ role: "user", content: "Summarize this diff" }],
reasoning_effort: "medium",
});
console.log(resp.choices[0].message.content);curl https://synthorai.io/v1/chat/completions \
-H "Authorization: Bearer sk-syn-..." \
-H "Content-Type: application/json" \
-d '{
"model": "claude-fable-5",
# "model": "glm-5.2", # uncomment this line, comment the one above
"messages": [{"role": "user", "content": "Hello"}],
"reasoning_effort": "medium"
}'package main
import (
"context"
"fmt"
"github.com/openai/openai-go/v3"
"github.com/openai/openai-go/v3/option"
)
func main() {
client := openai.NewClient(
option.WithBaseURL("https://synthorai.io/v1"),
option.WithAPIKey("sk-syn-..."),
)
resp, _ := client.Chat.Completions.New(context.TODO(), openai.ChatCompletionNewParams{
Model: "claude-fable-5",
// Model: "glm-5.2", // uncomment this line, comment the one above
Messages: []openai.ChatCompletionMessageParamUnion{
openai.UserMessage("Summarize this diff"),
},
ReasoningEffort: openai.ReasoningEffortMedium,
})
fmt.Println(resp.Choices[0].Message.Content)
}import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.chat.completions.*;
import com.openai.models.ReasoningEffort;
OpenAIClient client = OpenAIOkHttpClient.builder()
.baseUrl("https://synthorai.io/v1")
.apiKey("sk-syn-...")
.build();
ChatCompletion resp = client.chat().completions().create(
ChatCompletionCreateParams.builder()
.model("claude-fable-5")
// .model("glm-5.2") // uncomment this line, comment the one above
.addUserMessage("Summarize this diff")
.reasoningEffort(ReasoningEffort.MEDIUM)
.build());
System.out.println(resp.choices().get(0).message().content().orElse(""));FAQ
Which is cheaper, Claude Fable 5 or GLM-5.2?
GLM-5.2 is cheaper on input / 1m tokens ($0.77 vs $10, 13× apart). Other rows may point the other way — the table above carries the full card, and real cost depends on your mix.
Can I A/B test Claude Fable 5 against GLM-5.2 without two integrations?
Yes. Both are served through the same OpenAI-compatible endpoint with one API key — switching is a one-line model-string change, so you can route a fraction of traffic to each and compare bills directly.
Do Claude Fable 5 and GLM-5.2 support prompt caching?
Yes — both bill cached reads below their input rate, so warm-prefix workloads cost less than the list rates suggest. The exact cache-read rows are in the pricing table above.