Benchmark AI gateway latency and token throughput, measured against a direct-to-OpenAI baseline. Inspired by this benchmark from Ronny Badilla.
Powered by"OpenAI (Direct)" is a no-gateway control, not a competing gateway — it isolates how much latency each gateway adds on top of the underlying model provider.
"OpenAI (Direct)" is a no-gateway control, not a competing gateway.
Delta vs. the OpenAI (Direct)'s composite score. Positive is better than baseline; negative is worse.
Provider | Score | Cold E2E (med) | Warm TTFT (med) | Tokens/sec (med) | DNS (med) | TCP (med) | TLS (med) | Success |
|---|---|---|---|---|---|---|---|---|
| OpenRouter | 89.7 | 502ms | 452ms | 64 | 1.05ms | 1.14ms | 4.17ms | 100% |
| Pydantic AI Gateway | 88.3 | 768ms | 699ms | 54 | 1.30ms | 1.83ms | 4.95ms | 100% |
| Concentrate AI | 88.3 | 856ms | 697ms | 48 | 1.13ms | 1.23ms | 6.17ms | 100% |
| Neon | 88.1 | 896ms | 714ms | 48 | 1.19ms | 15.03ms | 32.28ms | 100% |
| OpenAI (Direct)Baseline | 88.0 | 881ms | 643ms | 47 | 2.89ms | 1.25ms | 3.86ms | 100% |
| Cloudflare AI Gateway | 86.9 | 1098ms | 694ms | 48 | 2.41ms | 1.46ms | 7.76ms | 100% |
| ngrok AI Gateway | 86.8 | 976ms | 668ms | 47 | 1.63ms | 14.44ms | 17.32ms | 100% |
| LLM API | 86.6 | 1226ms | 773ms | 44 | 1.29ms | 86.40ms | 87.71ms | 100% |
| Vercel AI Gateway | 86.2 | 727ms | 663ms | 51 | 2.41ms | 5.92ms | 20.96ms | 100% |
| LLMgateway | 85.7 | 989ms | 1461ms | 57 | 1.35ms | 1.86ms | 6.42ms | 100% |
Want to see a gateway added?
Every run executes on a GitHub Actions runner hosted by Namespace, physically located in Northern Virginia, US. Since results are a property of the network they're measured from, treat rankings as relative to that vantage point rather than a universal number — see Limitations in the full methodology.
Every gateway is hit directly with the same prompt and model (GPT-5.4 Mini), addressed the way each API expects it to be addressed — no gateway is proxied through another. Each request is either cold (a brand-new TCP+TLS connection, opened from scratch) or warm (a second request reusing an already-open keep-alive connection).
Cold requests are broken into DNS, TCP, and TLS phases (real socket timestamps, not estimates), plus time to first response byte and first streamed token. Every request also records output tokens/sec and success/failure.
This family's no-gateway control is a direct call to OpenAI's own API, not a competing participant — it isolates how much latency each gateway adds on top of the underlying model provider. See the other target-model families on the AI Gateway Benchmarks overview. Full methodology, including how "cold" and "warm" are defined and their limitations, is documented in the public benchmarks repo.
The Composite Score combines cold end-to-end latency and warm time-to-first-token — the short-lived-process case and the steady-state case — with generation throughput, all multiplied by success rate.