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 | 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.
sort: "price" you pay
the roster minimum, not this mean.