Built by Mark VandeWettering with Claude Code, to understand what OpenRouter actually charges and how the costs compare — not just between model families, but between slugs inside one family, which can differ several-fold. Why a model id is a menu and not a price explains what sits behind these numbers.
| Model | Input | Output | Cache read | Blended | Est. avg | Context | Latency | Speed | Provider |
|---|
~ routing alias
(~openai/gpt-latest), which has no provider roster of its own.
A model id like deepseek/deepseek-v4-pro is not one product. Around
eighteen different companies run those weights — StreamLake, Baidu, DeepSeek
themselves, CoreWeave, Novita, Azure and more — each at its own price, quantization
(fp8, bf16), context length and throughput. One company can
list several endpoints for a slug, and first-party vendors also sell service tiers
under the same name: openai/flex at half price, openai/priority
at double.
OpenRouter passes provider pricing through without markup and deducts credits based on
the tokens the serving provider reports. So the cost of a request is the rate of the
endpoint that handled it — two identical calls a minute apart can bill differently if
they land on different providers. For
deepseek/deepseek-v4-pro the roster spans about 5× from cheapest to
dearest, so that difference is not academic.
Unless you say otherwise, OpenRouter load-balances rather than always picking the
cheapest: it drops providers that had an outage in the last 30 seconds, then chooses
among the rest by price with inverse-square weighting — halving a price makes
a provider four times as likely — falling back to the others on failure. You can
override that with sort: "price" (the :floor suffix),
:nitro for throughput, an explicit order list,
only/ignore, max_price, or
allow_fallbacks: false to pin the top choice.
Input, Output and Cache read are the rates of OpenRouter's default route — the endpoint whose price matches the models API listing, named in Provider. Blended weights input against output by your ratio, because output tokens usually dominate a real bill:
blended = (in × input + out × output) / (in + out)
Est. avg is what a request should cost on average across the whole roster, given
that routing. With p a provider's blended price and u its
30-minute uptime, share of traffic w ∝ u / p², so the expected price is
E[p] = Σ(u_i / p_i) / Σ(u_i / p_i²)
Deranked endpoints (negative status) and opt-in tiers
(flex, priority, batch, zdr) are
left out, since default traffic never lands on them. Hover any Est. avg cell for the
per-provider shares.
Latency and Speed are OpenRouter's own measurements of real traffic — the same daily per-endpoint series its model pages chart, averaged over the last week and shown for the default route's provider. They are per-provider numbers like price: a — means the endpoint has too little traffic to be measured, and hovering either cell lists every endpoint in the roster that does have numbers, fastest first. Providers with several measured endpoints (regional Vertex or Bedrock deployments) show their average.
sort: "price" you pay
the roster minimum, not this mean.