BenchmarkDeepSeek V4.1 Flash9 min read

AI gateway benchmark: OpenRouter, Vercel, Ramp and Keln. Comparing cache hit rate, speed, reasoning and cost.

We ran 24 hours of real agent sessions on OpenRouter :nitro, Vercel, Ramp and Keln, on DeepSeek V4.1 Flash. All 4 had ZDR, max reasoning and tool calling on. Every gateway got the same turn at the same moment, 1 turn in 20 paused for 1 to 20 minutes as a real user would. Read the full method.

Cache hit rate
% of prompt tokens · whole run · higher is better
93.9%Keln
88.5%OpenRouter
86.7%Vercel
62.6%Ramp
Provider moves
provider changes mid-session · lower is better
14Keln
148OpenRouter
60Vercel
500Ramp
Reasoning tokens
average per turn · all 4 asked for max
856Keln
1,033OpenRouter
403Vercel
420Ramp

The run went from 00:25 UTC on 20 October to 00:44 UTC on 21 October 2026.
13,440 turns, 3,360 per gateway.

Cache hit rate: 63% to 94%, depending on the gateway

% of prompt tokens0255075100048121620hours into the runKelnOpenRouter :nitroVercelRamp
Cache hit rate, 30-minute windows: cached tokens as a share of all prompt tokens.

Cache hit rate over the run: Keln 94%, OpenRouter 88%, Vercel 87%, Ramp 63%. The gap is in turns that went fully cold after the first one.

Turns that went fully cold after the first oneOut of 3,360 per gateway
05001,00047Keln223OpenRouter280Vercel946Ramp

That depends on how each gateway picks a provider on the second turn. Keln keeps a conversation on the provider that holds its prefix. Vercel pins a conversation to its first provider for 5 minutes. OpenRouter and Ramp pick again on every request.

Provider, throughKelnOpenRouter :nitroVercel (tps)Ramp
Provider A94.0%1,623 turns90.2%1,651 turns93.1%919 turns–
Provider B92.6%352 turns87.5%1,634 turns84.1%2,349 turns63.0%2,955 turns
Provider C93.9%863 turns–––
Provider D94.9%308 turns–1 turn––
Provider E94.4%201 turns–––
Provider F–––59.5%308 turns
Others–13 turns on 2 providers–75 turns on 5 providers–92 turns on 3 providers–

Cache hit rate per provider: cached tokens as a share of prompt tokens on the turns that provider served, through each gateway. Rows with fewer than 100 turns are left blank.

Read across a row: the same provider cached differently depending on the gateway in front of it. Provider B kept 92.6% through Keln, 87.5% through OpenRouter, 84.1% through Vercel and 63.0% through Ramp.

Provider moves ranged from 14 to 500 in 3,360 turns

moves0100200300400500048121620hours into the runRampOpenRouter :nitroVercelKeln
Conversations moved to a different provider mid-session, cumulative.

Ramp moved a conversation to a different provider 500 times in 3,360 turns, OpenRouter 148, Vercel 60, Keln 14. Each move is a cold prompt: tens of thousands of tokens re-read at the uncached price, and a first token seconds later.

Cache after a 10-minute break: 23% to 75%

% of prompt0255075100KelnOpenRouterVercelRamp94878558under 10 s1,733 turns9385865710 to 30 s928 turns9490855730 to 60 s281 turns938378501 to 5 min196 turns808964445 to 10 min43 turns75522523over 10 min67 turns
How much of the next prompt came from cache after pauses from under 10 s to over 10 min, per gateway.

The longer the pause, the more of the prompt a gateway had to re-read. After a break, the next turn comes from cache only if it goes to the same provider and that provider still has the earlier turns cached. Pauses under a minute made no difference. After 10 minutes Keln still served 75% of the next prompt from cache, OpenRouter 52%, Vercel 25% and Ramp 23%.

% of prompt0255075100KelnOpenRouterVercelRamp7029 turns6934 turns6116 turnsProvider A3232 turns1351 turns1760 turnsProvider B
After pauses over 10 minutes, for the 2 providers more than one gateway used.

After a pause over 10 minutes, how much of the prompt was still in cache depended on the provider that answered.

Reasoning: 403 to 1,033 tokens per turn for the same request

Every turn asked for reasoning at max, the deepest setting DeepSeek V4.1 Flash has. The model is the same and the providers overlap, so the reasoning tokens should match within the noise of temperature 1.

tokens / turn05001,0001,5002,0002,500048121620hours into the runKelnOpenRouter :nitroRampVercel
Reasoning tokens per turn, hourly mean. Every side got reasoning effort max on every turn.

Keln's turns averaged 856 reasoning tokens, OpenRouter's 1,033, Vercel's 403 and Ramp's 420. Vercel and Ramp delivered less than half the reasoning for the same max request. The typical turn is the same everywhere (median 40 tokens on Keln, 42 on OpenRouter, 54 on Vercel, 36 on Ramp). The gap comes from the few turns with thousands of reasoning tokens.

Turns per gateway that reasoned with 5,000+ tokens over the whole benchmark
turns050100150200250152Kelnof 3,360 turns212OpenRouterof 3,360 turns36Vercelof 3,360 turns43Rampof 3,263 turns
Same prompts, same max request. Ramp answered 3,263 turns; the other three 3,360.

Turns that reasoned past 5,000 tokens: Keln 152, OpenRouter 212, Vercel 36, Ramp 43. On Provider B, the one provider all 4 gateways used, 1 turn in 12 reasoned past 5,000 tokens through OpenRouter and 1 in 15 through Keln; through Vercel or Ramp, 1 in 70. Vercel accepted max on every turn with no warning or error.

Why this is the worst kind of bug

You cannot know the model did a third of the thinking. The response comes back successful, and the cost is lower in the end. The wrong answer comes later, on a hard turn. The logs for that turn show a normal request, so the gateway is never suspected. When the same provider behaves differently behind different gateways, the issue is on the gateway side.

This is also why Vercel's bill is the lowest: $9.14, against $10.98 at OpenRouter and $11.26 at Keln. At Keln's reasoning volume, Vercel's own rates come to $10.97. Vercel charged less because it ran less reasoning.

RouteTurnsReasoning tokens, medianReasoning tokens, average
Keln · Provider A1,62333872
Keln · Provider C86326768
Keln · Provider B352661,203
Keln · Provider D30847597
Keln · Provider E20164901
OpenRouter · Provider A1,65133748
OpenRouter · Provider B1,634511,331
Vercel · Provider B2,34957454
Vercel · Provider A91950275
Ramp · Provider B2,95549464
Ramp · Provider F30800

Reasoning tokens as each gateway reported them in usage, per route with at least 200 turns. Ramp reports reasoning in the Responses usage shape; its figures come from the captured response bodies.

All 4 gateways decoded at about 400 tokens a second at the median

tok/s0100200300400500600048121620hours into the runVercelRampKelnOpenRouter :nitro
Output speed, hourly median tokens per second, reasoning tokens included.

At the median all 4 decoded at 390 to 430 tokens a second.

KelnOpenRouter :nitroVercel (tps)Ramp
Turns answered3,360 of 3,3603,360 of 3,3603,360 of 3,3603,263 of 3,36097 refused: the prepaid wallet ran dry at 23:44 UTC
Cache hit rate, whole run93.9%88.5%86.7%62.6%
Conversations moved1414860500
First token, p50 / p950.45 / 2.23 s0.45 / 2.02 s0.42 / 1.76 s0.45 / 4.48 s
Decode speed, p50420 tok/s391 tok/s429 tok/s404 tok/s
Reasoning tokens per turn, mean8561,033403420
Total bill$11.26$10.98$9.14$20.20

The same 3,360 turns cost $9 to $20 depending on the gateway

USD$0$5$10$15$20$2504812162023hours into the runRampKelnOpenRouter :nitroVercelRamp's wallet ran dry after 23 hours
Cumulative bill in USD at each gateway's own prices for the model.

The same 3,360 turns cost $9.14 through Vercel, $10.98 through OpenRouter, $11.26 through Keln and $20.20 through Ramp. Ramp's bill is high because of cache misses: it paid for 47.5 million uncached prompt tokens, against 8 million on Keln.

KelnOpenRouter :nitroVercel (tps)Ramp
Total bill$11.26$10.98$9.14 ($10.97*)$20.20 ($21.89*)
At the reasoning the request asked for

Vercel and Ramp delivered less than half the reasoning Keln's turns carried, and billed less for it. With their reasoning set to Keln's volume, at their own rates, Vercel's run costs $10.97 instead of $9.14 and Ramp's $21.89 instead of $20.20.

* With reasoning set to Keln's volume, at their own rates.

Keln re-read 7 million fewer uncached tokens than OpenRouter, 9.5 million fewer than Vercel and 39.5 million fewer than Ramp.

Availability: all 100%

Every gateway answered every turn it was sent. Ramp's prepaid wallet ran dry at 23:44 UTC and refused its last 97 turns for funds, a wallet limit, not a gateway fault; its other numbers stand on the 23 hours it completed.

In short

Behind the same model, the 4 gateways behaved very differently. Keln kept 94% of each prompt in cache and moved a conversation between providers 14 times in 3,360 turns. OpenRouter kept 88% and moved 148 times, Vercel 87% and 60 times, Ramp 63% and 500 times, and each move meant re-reading the whole prompt at full price. Vercel and Ramp returned less than half the reasoning the request asked for, gave no warning, and charged less as a result. Decode speed was about the same everywhere. Ramp paid nearly double because of its cache misses.

We post AI gateway comparison benchmarks, with the method included. The previous one compared OpenRouter, DeepSeek's own API and Keln on DeepSeek V4 Flash for 12 hours: read it here.

Method notes

The 8 sessions come from the public armand0e Claude Code corpus on Hugging Face, replayed with native tool calls: each recorded assistant turn is sent as the next request and the recorded tool results appended, so the conversation grows as it did for the original user. 30 rounds per session, 2 at a time, a fresh salt and fresh conversation ids per pass, 14 passes, 13,440 turns in 24.3 hours; the median turn was 40,700 tokens. reasoning_effort: max in the form each API expects, max_tokens 30000, temperature 1, streaming. 5% of turns waited 1 to 20 minutes, from a seed shared across gateways. Chart time axes leave out the 64 minutes in which no gateway received a turn.

Routes: Keln's public API as sold; OpenRouter with :nitro and provider.zdr: true; Vercel AI Gateway with sort: tps inside an explicit list of its zero-data-retention providers; Ramp Router in the Responses dialect. Cache hit rate is cached prompt tokens over all prompt tokens, as reported in usage. A move is a turn whose provider differs from the previous turn of the same conversation, read from each gateway's provider header or body field. Time to first token counts the first reasoning token. Costs are each gateway's prices for this model, summed from usage. The figures marked * reprice Vercel and Ramp at their own rates with reasoning set to Keln's 856 tokens per turn.

The raw ledger and response bodies are not published. The analysis scripts are in our repository.

DeepSeek V4.1 FlashBenchmarkPrompt cachingRoutingReasoningPricing

Run your agent sessions on Keln

Cheat detection, high cache hit rate and normalized output.