DEV Community

Daniel Dong
Daniel Dong

Posted on

Kimi K3 is 10x more expensive than I thought. And it's not the pricing's fault.

Kimi K3 is 10x more expensive than I thought. And it's not the pricing's fault.

I added Kimi K3 to my API gateway two weeks ago. 1M context, always-on
reasoning. The flagship. I watched the usage numbers climb and thought
"great, people love it."

Then I looked closer. A single user had burned 243,745 tokens in one
request. One request. 31 seconds. Most of it silent.

The silent 13 seconds

Look at this request timeline:

first_token_ms: 13,609 ← 13.6 seconds of silence
latency_ms: 31,910 ← 31.9 seconds total
tokens: 243,745 ← a quarter million tokens
Enter fullscreen mode Exit fullscreen mode

For 13.6 seconds, nothing came out. That's not a slow connection.
That's K3 thinking. And every token of that thinking is billed.

K3 doesn't have a "think mode" toggle. It always reasons. Every
request runs through a reasoning pass before it answers. The
reasoning tokens land in completion_tokens — the same bucket as
the actual answer.

So a question that takes deepseek-chat 200 tokens to answer takes
K3 200,000 tokens. Same question. Same answer quality. 1000x the cost.

The bug that made it worse

While investigating, I found the token counter was double-counting.
In the streaming handler:

total_tokens += usage.get("total_tokens", 0)
total_tokens += usage.get("completion_tokens", 0)   # ← redundant
Enter fullscreen mode Exit fullscreen mode

total_tokens already includes completion_tokens. Adding it again
double-counted every completion token. For reasoning models, where
completion is dominated by thinking, the inflation was enormous.

The logs said a user consumed 1.5M tokens. The actual deducted amount
was 500K. A 3x discrepancy, all from double-counting.

One line deleted. Fixed.

What this actually means
Kimi K3's real cost profile is:

image

The 15/Moutputisthecatch.Reasoningtokenscountasoutput.Asingledeepcodereviewcanbe3-4. Ten of those a day is $40. For a
free tier, that's a fast bleed.

The rule I should have set from day one:

Use K3 for what it's good at: long-context code review, deep debugging.
Use deepseek-chat for everything else: classification, summarization,
simple generation.
Enter fullscreen mode Exit fullscreen mode

Not because K3 is bad. Because reasoning models are expensive, and
"always thinking" means you're always paying for the thinking.

The fix that matters

The double-counting bug was mine. The cost profile is reality. Both
taught the same lesson: reasoning models aren't a free upgrade. They're
a different tool with a different price, and if you route every request
to them, your bill will tell you about it before your users do.

We're AIBridge — 15 Chinese models behind one OpenAI-compatible
endpoint. Including K3, which is still worth it for the right tasks.

aibridge-api.com/playground.html
aibridge-api.com/prompts.html (each prompt recommends the right model)

1

2

3

4

Top comments (0)