Zero Dollars Is Not the Same as Per Request: The Two Free Rows on the DeepSeek Models Page

Zero Dollars Is Not the Same as Per Request: The Two Free Rows on the DeepSeek Models Page

Two rows on the OrcaRouter Deepseek Models page carry “Free” in their names, and they are not the same offer. `DeepSeek V4.1 Flash (Free)` prints $0.00 in the input column, with a dash in the output and cached columns. `DeepSeek V4 Flash (Free)` prints $0.00 per request [VENDOR, with one qualification this article is about].

The first describes a rate of zero; the second describes a fixed charge of zero. For a reader building a cost model, the difference decides whether the row can appear in a per-token arithmetic at all — and on this page, one of them can and one of them cannot.

The structural tell

Both rows are also misaligned with the table’s column structure, and the misalignment is the reliable signal that something different is going on.

The table has seven columns, and most rows fill them in the same order. `DeepSeek V4 Flash (Free)` prints `$0.00 per request` and then four values where the other rows print seven — the phrase occupying the input cell and swallowing the output, cached, and quality cells that would have followed it. Read raw, the row looks malformed. Read as a billing statement, it is perfectly formed: when a row is charged per request, there is no per-million-token input figure to print, so the phrase takes the cell that would otherwise carry one, and the columns that follow describe the envelope instead of the rate.

`DeepSeek V4.1 Flash (Free)` does the opposite. It shows a simple $0.00 in the input column, retains dashes for output and cached pricing, and places the context and maximum output values in their correct columns. Its shape is a token-priced row whose rate happens to be zero.

That is the whole distinction, visible without opening a single document: one row has a rate, the other has a charge.

What each one is worth in a model

The token row costs nothing at any volume, because zero times any number of tokens is zero — provided the row is genuinely a rate. The request row costs nothing at any volume either, because zero times any number of requests is zero. On this page, both are free. The difference shows up on the day the rate is not zero, or in the way the row composes with anything else you put in the plan.

Here is the composition. A pipeline that fans out across four models by request — one cheap router pass, two specialists, one verifier — can price the request-billed row by counting calls, whatever their size. A pipeline that fans out across four models by token has to estimate prompt lengths for every leg before it can say anything. The first is a counting problem the planning sheet already solves; the second is an estimation problem that is wrong about the tail.

The other place the distinction bites is caching. A cached-token discount is a rate on tokens. A per-request charge has no cache story, no input/output split, and no prefix to repeat, because there is no token meter to apply any of that to. That is why both free rows carry dashes in the cached column — on the request row the dash is structural, and on the token row the dash means the rate is already zero and a discount on zero has nothing to say.

The third kind of free in the catalogue

There is a third shape worth naming, because it appears in the public model list and not on this provider page: an identifier that ends in `-free` on a model that otherwise carries a normal rate card.

The public model catalogue returns seven identifiers with “free” in the name [OURS]: `orcarouter/free`, `deepseek/deepseek-v4-flash-free`, `deepseek/deepseek-v4.1-flash-free`, `orca/orcaverify-text1.0-free`, `tencent/hy3-free`, `tencent/hy4-preview-free` and `z-ai/glm-5.3-flash-free`. One of them carries an explicit `pricing.request` value of `0.000000` in its record; the others carry the model’s normal descriptive metadata.

So “free” in an identifier is a naming convention rather than a billing guarantee. The billing guarantee is in the rate columns, and the rate columns on this provider page say two different things about the two rows that share the word.

That is worth stating because the phrase “free API” is one of the most-searched phrases in this market and almost every result conflates three genuinely different offers: a zero rate, a zero request charge, and a promotional window on a normally priced row. Only the third has an end date, and only the third will surprise a budget six months from now.

What to do with a free row in a plan

Three rules, in decreasing order of how much they save you.

Price the row you will still be using after the free one. A free row is a load test. It tells you whether the model fits your workload at no cost, which is the cheapest information in this market, but it does not tell you what the workload costs. The paid sibling of each free row sits directly above it on the same page with a rate you can read.

Check the unit before you put a zero in a spreadsheet. A zero per million tokens and a zero per request both enter a column named “price” as the number 0, and then differ in every formula downstream. If the sheet has a unit column, fill it; if it does not, the row belongs in a different tab.

Treat a per-request row as a different product, not a cheaper version of the same one. It has no input, no output, no cache, and no context-based billing. 

The rate behind the free row

One number is worth carrying away from this page, and it is not zero. It is the rate on the paid row directly above the first free one.

`DeepSeek V4.1 Flash` is $0.150 in, $0.600 out, $0.0030 cached, with a 1M context window and a 384K output ceiling [VENDOR]. That is the whole cost of the workload on the day the free row is withdrawn or rate-limited, and it is also the row that makes the free one interesting: a free version of a $0.150 model is a materially different offer from a free version of a $30 model, because the thing you are trialling is cheap enough that the trial-to-production step is small.

The page’s header statistic reads Cheapest input $0.00/M, which comes from these free rows and not from any paid model [OURS]. Read as a headline, it says the catalogue starts at zero. Read against the table, it says the catalogue contains a free entry, and the entry you would actually deploy is the $0.150 row underneath it.

That is the honest way to read a headline statistic on any catalogue page: as the cheapest cell in the table rather than the typical one. The typical cell is the row you would choose on merit, and on this page that is a paid row with a five-digit-token context window and a per-million rate that happens to be one of the lowest in the set.

Where the two zeros part company

The token-priced free row is a real rehearsal: same unit, same billing shape, same everything except the rate, so the numbers you measure on it translate directly to the paid row above. The request-priced free row is a rehearsal of a different play — it tells you what a request costs when the request is free, which is nothing, and it will not tell you what the same request costs when it is priced per token, because it is not priced per token.

A free row is a good place to start a build and a bad place to end a cost model. Read the four words after the zero before you do either. See more

Scroll to Top