# I ran 19 tasks through Kimi K3.1 Pro and Claude Fable 5.2. The gap wasn't capability.

> Source: <https://dev.to/buluo/i-ran-19-tasks-through-kimi-k31-pro-and-claude-fable-52-the-gap-wasnt-capability-818>
> Published: 2026-11-12 10:42:39+00:00

*AI disclosure: parts of this post were drafted and edited with AI assistance. The tests, numbers and charts come from my own runs on 12 November 2026.*

Short version: for a user-facing chat product I'd pick Claude Fable 5.2. For batch work on a budget I'd pick Kimi K3.1 Pro. On capability the two are one task apart out of nineteen, and both misses were slips rather than limits.

I ran all 19 tasks on the same day, through the same OpenAI-compatible endpoint, on the same machine. Only the model string changed. Code tasks got up to three repair rounds; everything else was one shot. Every answer was script-graded, so the model's explanation never earned points.

```
base_url = "https://api.crazyrouter.com/v1"
```

So what actually separated them?

| Dimension | Tasks | Kimi K3.1 Pro | Claude Fable 5.2 | 
|---|---|---|---|
| Code repair | 3 | 3/3 | 3/3 | 
| From scratch | 3 | 3/3 | 3/3 | 
| Tool use | 3 | 2/3 | 2/3 | 
| Repo QA | 3 | 3/3 | 3/3 | 
| Instruction following | 3 | 2/3 | 3/3 | 
| Resistance to misleading | 2 | 2/2 | 2/2 | 
| Long context | 2 | 2/2 | 2/2 | 
| Total | 19 | 17/19 | 18/19 | 

All six code tasks passed in the first round for both models. Repo QA and long context were clean. On the fake-model question, neither one invented a context window or a price.

**The SQL task.** "Total order amount last month." Kimi called `search_docs` and searched documentation. Fable called `run_sql`, but the query hit `information_schema` instead of the orders table. Both failed, differently.

**The writing task.** Kimi overshot the 140–160 character range this time. The same task passed in an earlier dry run at 155 characters, so I treat it as output instability, not a capability gap.

Neither failure produces an error in production. Both produce rework.

Where does the money actually go?

| Model | Output tokens | Of which thinking | Visible text | 
|---|---|---|---|
| Kimi K3.1 Pro | 10,896 | 9,175 | 1,721 | 
| Claude Fable 5.2 | 6,386 | 0 | 6,386 | 

84% of Kimi's output is thinking. That is where its cost lives. Fable has no thinking tokens, so everything you pay for is readable.

Recompute per visible token and the ranking flips: roughly $63.3 per million visible tokens for Kimi, $40.0 for Fable. The model with the 4x list price is cheaper per readable token.

The log task hid a key at line 287; the module task put `LAST_RETRY = 43` near the end. Both models answered both, with a handful of output tokens.

But the inputs were about 14K tokens. Kimi publishes a 1,048,576-token window; Anthropic's product page for Fable 5.2 does not publish a number. So this proves only that at 14K tokens neither model loses the needle. It says nothing about million-token capacity. To test that, build an input near the limit — I did not.

**Temperature is not portable.** Kimi returns 400 for `temperature: 0.7`, and the error does not name the field. gpt-6.1-terra requires exactly 1. Claude accepts 2 and silently ignores it. Gemini returns 429 for 5, which looks like a rate limit. DeepSeek returns a clear 400. Six models, five behaviors.

**A 200 can carry an empty body.** With a 1,200-token cap, Kimi returned 200, `finish_reason: length`, zero characters, and 1,197 thinking tokens. Validate content length and finish reason, not the status code.

**Structured output has dialects.** Claude routes reject `json_object` with a 400 and point to `json_schema`; that works. The others accept `json_object`.

**Tool calling is not universal.** gpt-6.1-terra returned "service temporarily unavailable" for tool calls three times. Gemini needs `tool_choice: required`; with `auto`, four of five runs came back empty with `content_filter`.

So what would I pick?

| Workload | Pick | Why | 
|---|---|---|
| Customer-facing chat | Fable 5.2 | 130.1s vs 401.6s wall clock across the suite | 
| Batch / async | Kimi K3.1 Pro | Batch inference bills at 60% of list | 
| Output parsed by code | Either, plus a validator | JSON and tables passed for both; Kimi missed a character range once | 
| Long-context retrieval | Either at 14K tokens | Ceiling untested; measure with your own material | 
| Tool orchestration | Either, with a schema check | Both missed the same routing question | 

Kimi: 27,131 input and 10,896 output, $0.163. Fable: 36,074 input and 6,386 output, $0.544. That is 3.3x, not 4x, because the token shapes pull in opposite directions.

Three workloads at list price: a 100k-round support bot around $460 vs $1,840; a thousand 8k/1.5k documents around $31 vs $124; a coding assistant at 2M in / 400k out per developer around $8 vs $32.

Current availability is on the [model catalog](https://crazyrouter.com/en/models), which is what I checked before the run. If your input/output ratio differs from mine, the [pricing page](https://crazyrouter.com/en/pricing?utm_source=devto&utm_medium=article&utm_campaign=offsite_article&utm_content=cr_1e98c0ee00ea_mid_text) is where to redo the arithmetic.

19 tasks, two models, one day. Enough for a direction, not a verdict. Not tested: longer contexts, multi-turn tool use, or pricing beyond the $8/$40 list and the $0.20 cache read.

Three steps for your own numbers: ask your most common question ten times and record the median and the worst case; have the model write one real draft under your platform's rules and count your edits; run two `max_tokens` settings three times each and count the `length` finishes.

Twenty minutes. Your numbers will beat this post.
