BlockRun
Back to Signal
Sep 2026

Gemini 3.8 Flash, and the Price We Had Wrong

Gemini 3.8 Flash listed at $0.75 per 1M input and $3.75 per 1M output, beside a corrected Gemini 3.6 Flash price

google/gemini-3.8-flash is live. $0.75 per 1M input, $3.75 per 1M output, 1M-token context, 65,536 max output, thinking and vision on.

That is the announcement. The rest of this post is about what listing it turned up, because the more useful thing that happened today was finding a price of ours that was wrong.

The model

Verified with a real completion before listing, not a 200 on the model list — finishReason: STOP, real text back, and a genuine thoughtsTokenCount proving the thinking path actually ran.

One behavioural note worth writing down, because it is the kind of detail that silently breaks a gateway. Gemini's newer Flash and Flash-Lite models are inconsistent about whether you may turn thinking off. Some of them reject thinkingConfig.thinkingBudget: 0 outright with a 400. Gemini 3.6 Flash and 3.5 Flash-Lite both do. Gemini 3.8 Flash does not — it accepts budget-0 and answers without spending thinking tokens.

This is per-model, not per-generation, so it cannot be inferred from the version number. And the failure mode is nasty: a model in the wrong bucket 400s on every primary call, which looks like the primary being down, so the gateway quietly serves the fallback model instead and returns a perfectly healthy-looking 200. You get charged for a model you did not receive, and nothing in the response says so. We keep an explicit exclusion set for this and probe every new Gemini Flash SKU against budget-0 before it ships.

The price we had wrong

Gemini 3.6 Flash has been listed on BlockRun at $1.50/$7.50 since early August.

That was correct when we listed it. It stopped being correct when the whole 3.6/3.7/3.8 Flash band moved to a promotional rate of $0.75/$3.75 through 2026-12-31, and our sheet did not follow. For about a month, that SKU billed roughly twice what it should have.

It is now $0.75/$3.75, same as 3.8.

We do not mark up chat tokens — the published price tracks the upstream list rate, and the business is the payment rail, not a spread on inference. Which is exactly why a stale number is a real bug and not a rounding detail: at 0% markup, "our price" and "the right price" are supposed to be the same sentence.

Worth saying plainly, since it is on our own price sheet: the promotional rate reverts to $1.50/$7.50 on 2027-01-01. Both model entries and the price guard carry a dated note to re-check before then. We would rather publish the expiry than let you discover it in a January invoice.

What the stale price was hiding

Here is the part we did not expect.

A fallback model is what a gateway serves when your first choice fails. It is useful, and it has an obvious failure mode: if the rescue is much cheaper than the model you asked for, you get billed for the expensive one and served the cheap one. We have a guard for that. Every paid model's fallback has to sit inside a price band — at least 65% of the primary's price, and never above it — so a rescue is always a model of roughly the class you paid for.

Correcting 3.6 Flash's price turned that guard red. Two models had been falling back to it:

Model you asked forYou are billedWas rescued byReal ratio
openai/o3$2.00 / $8.00gemini-3.6-flash2.7x in / 2.1x out
google/gemini-3.5-flash$1.50 / $9.00gemini-3.6-flash2.0x in / 2.4x out

Both pairings were chosen deliberately, and both were checked against the band when they were chosen. They passed — because the number they were checked against was the stale one. At $1.50/$7.50, 3.6 Flash looked like a same-class rescue for o3. At its real $0.75/$3.75, o3 bills nearly three times what that rescue costs.

So the guard did not miss anything. It was fed a wrong input and returned a confidently wrong answer, for a month, in exactly the direction that costs the caller money. That is the more interesting lesson than the price itself: a safety check that reads from a stale value is not a safety check, it is a second place for the staleness to hide.

We looked for an in-band replacement for both, across every vendor we carry, not just the same brand. There isn't one — every near candidate breaks the band on the other side, costing more than the primary bills, which would mean settling below cost on every failover. So both models now have no fallback and fail honestly instead of rescuing you at a markup. An error you can see beats a silent 2.7x.

(For what it's worth: fallbacks only fire if you opt in with allow_fallback. Pin a model and you get that model or an error, always.)

Calling it

curl -X POST https://blockrun.ai/api/v1/chat/completions \
  -H "content-type: application/json" \
  -d '{
    "model": "google/gemini-3.8-flash",
    "messages": [{"role": "user", "content": "Summarize this repo'\''s architecture."}]
  }'

You get a 402 back with a signed price, you pay it in USDC, you get the completion. No key, no account, no subscription.

Why we wrote the boring half down

We could have shipped the model and said nothing about 3.6 Flash. The count on the homepage would have gone up by one and nobody would have asked.

But the whole argument for putting payment in the protocol is that the price is checkable — it is signed, on-chain, and you can verify what you were charged against what you were quoted. That argument is worth very little if we are quiet on the day the checkable number turns out to have been wrong.

So: 3.6 Flash overcharged for about a month, it is corrected, two fallbacks that were overcharging alongside it are gone, and the new promotional rate has an expiry date we have told you about in advance.

All articles →