Data

OpenRouter pricing: the number in the catalog isn't what you pay

· Checked September 15, 2026

OpenRouter's model catalog shows one price per model. That price belongs to one host, chosen by a rule OpenRouter does not document. It is not what a default request pays, and it is not the cheapest way to run the model through OpenRouter either. On September 15, 2026, 8 of the 9 models we checked had at least one cheaper endpoint than the catalog number, the widest gap being GPT-6 Astra at 2.0×.

Ranks and prices read from OpenRouter's public API on September 15, 2026. Prices are USD per million tokens. How this is checked

One number, one host, no rule

Every model on OpenRouter is served by several hosts, each with its own price. The general catalog (/api/v1/models) collapses that into a single pricing object, which the API documentation describes as "pricing from the top provider for this model". The documentation says nothing about how that provider is chosen. It is not the cheapest host, it is not the host most requests go to, and it changes on its own without any host changing a price. Copying that number into a cost estimate is the mistake this page is about.

Where the catalog price sits among the real endpoints

9 models. For each, every endpoint OpenRouter lists for the model (healthy or not) sorted by input price, cheapest first, and the position of the catalog price in that list.

Model Catalog price Position by price Cheaper endpoints Cheapest healthy endpoint
DeepSeek V4 Flash 0731 deepseek/deepseek-v4-flash-0731 $0.06 in · $0.12 out Relace 3rd of 27 2 $0.04 in · $0.10 out OpenInference
DeepSeek V4 Pro 0813 deepseek/deepseek-v4-pro-0813 $0.9834 in · $2.9502 out StreamLake 3rd of 21 2 $0.66 in · $1.98 out DeepSeek
Qwen3.8 27B qwen/qwen3.8-27b $0.214 in · $2.55 out Reka 4th of 16 3 $0.15 in · $2.00 out Darkbloom
GLM-5.3 z-ai/glm-5.3 $1.40 in · $4.40 out 12 hosts at this price 17th of 29 16 $0.8775 in · $2.97 out Reka
Llama 3.3 70B Instruct meta-llama/llama-3.3-70b-instruct $0.10 in · $0.32 out DeepInfra 1st of 11 0 $0.10 in · $0.32 out DeepInfra
GPT-6 Astra openai/gpt-6-astra $10.00 in · $50.00 out 2 hosts at this price 2nd of 5 1 $5.00 in · $25.00 out OpenAI
gpt-oss-120b openai/gpt-oss-120b $0.037 in · $0.17 out DeepInfra 4th of 24 3 $0.03 in · $0.17 out AkashML
Kimi K3 moonshotai/kimi-k3 $2.6481 in · $13.2827 out Sail Research 6th of 20 5 $2.10 in · $10.95 out InferenceNet
MiniMax M3 minimax/minimax-m3 $0.30 in · $1.20 out 7 hosts at this price 4th of 13 3 $0.23 in · $0.96 out CoreWeave

Only Llama 3.3 70B Instruct has the catalog price at the bottom of the list. Where several hosts share the catalog price, the position is that of the first of them, and the host column says how many there are. The table is a snapshot: the positions move from one day to the next as the catalog changes which host it quotes.

What a default request actually pays

Nothing on the list, and nothing fixed. Unless you tell it otherwise, OpenRouter spreads each request across the hosts that have not had a significant outage in the last 30 seconds, picking one with probability proportional to the inverse square of its price. That is the documented rule: a host charging a third of another is nine times as likely to get the request (provider routing docs). The cheaper hosts get most of the traffic, but not all of it. Over a month, the price you pay is a weighted average of every host in the pool, which is almost always higher than the minimum and rarely equal to the catalog number.

How to pin the minimum

Append :floor to the model slug, or set provider.sort to "price" in the request. Both make OpenRouter route to the cheapest available endpoint instead of load-balancing. The difference between them, per the docs, is that :floor also makes flex service tier endpoints eligible, so it is a superset of plain price sorting. With either, the "Cheapest healthy endpoint" column above is the price you pay at that moment. It is not the price this site records for OpenRouter in the provider comparison: that table shows the model maker's list price, because the cheapest endpoint changes on its own as promotions end and hosts come and go. Without either, plan on more than the minimum.

A catalog price change with no price change

Between September 6, 2026 and September 7, 2026, the catalog price of Qwen3.8 27B moved from $0.425 in · $2.55 out to $0.42 in · $3.00 out, a 17.6% rise on output. We recorded it as a price increase. It was not one. The endpoints list on September 7, 2026 still showed Alibaba at the old figures and Novita at the new ones. No host had touched its rate; the catalog had switched which host it quoted.

For the record: the entry we had added to this site's price-change history was deleted on purpose on September 7, 2026, because it described a catalog artifact, not a real price change, and a price-change log that lists things that did not happen is worth nothing. Nothing was hidden; the deletion and its reason are in the dataset's commit history. The same day we stopped reading prices from the catalog altogether and switched to the cheapest healthy endpoint. On September 9, 2026 the definition changed once more, from the cheapest endpoint to the model maker's list price on OpenRouter's providers page, without promotional discounts. The reason is the same lesson one step further: the minimum of the moment also moves for reasons that are not price changes, as promotions expire and hosts enter and leave the list, so it cannot be the number a price table stands behind. The maker's list price can.

This is not an OpenRouter bug

OpenRouter's product is routing. A router that spreads traffic across hosts with different prices produces a variable effective price; that is the natural consequence of what it does, not a defect. The catalog needs some number to show and shows one host's. The problem is entirely on the reading side: taking that number as a fixed per-token rate and building a cost comparison on it. Treat it as one sample from a distribution, and use :floor when you need a floor.

Verification

The table was generated on September 15, 2026 from two public OpenRouter endpoints, with no API key: the general catalog for the quoted price, and each model's endpoints list for every host's price and health status. "Position by price" is the catalog price's place among all listed endpoints sorted by input then output price; "cheaper endpoints" counts those strictly below it. "Cheapest healthy" is the lowest-priced endpoint with a healthy status, the same figure the provider comparison uses for OpenRouter. Every price links to the API response it was read from. The Qwen3.8 27B case is recorded in this site's dataset history with the dates shown. Nothing here is estimated; when the snapshot is regenerated, the numbers on this page change with it.