
Gemini 2.5 Pro Deprecation: Your Old Model String Becomes a Flash Model on December 1
Gemini 2.5 Pro Deprecation: Your Old Model String Becomes a Flash Model on December 1
Google pulled Gemini 2.5 Pro from AI Studio on November 2. The changelog also sets a date most teams will miss: from December 1, 2026, every API call to gemini-2.5-pro gets quietly answered by gemini-3.8-flash instead.
Nothing errors. Nobody gets paged. Your app keeps returning responses, just from a different model, at a different price.
That's why this deprecation is worth an hour this week. December's bill goes down. January's might go up.
What the Gemini 2.5 Pro Deprecation Actually Does
Google's wording is direct: all API requests to gemini-2.5-pro will automatically route to gemini-3.8-flash and be billed at Gemini 3.8 Flash rates. 2.5 Flash gets the same deal, pointed at a cheaper model.
| You call | From Dec 1 you get | Billed as |
|---|---|---|
gemini-2.5-pro | gemini-3.8-flash | 3.8 Flash |
gemini-2.5-flash | gemini-3.5-flash-lite | 3.5 Flash-Lite |
Look at the Pro row again. It isn't moving to a newer Pro. It's moving down a tier, to Flash.
The deprecations page adds a detail the changelog skips. API access to 2.5 Pro is now limited to existing users who have actively used it in the past. New projects can't start on it at all.
We couldn't find any documented way to opt out or pin the old model past December 1.
Key Breaking Changes in the Gemini 3.8 Flash Migration
The model swap is the easy part. The migration guide lists request changes that'll bite older code.
thinking_budgetis gone. You replace it with the string enumthinking_level:low,medium(the default) orhigh. Sendingminimalwill return an error on 3.8 Flash.- Sampling knobs are deprecated.
temperature,top_pandtop_kare on the way out, andcandidate_countisn't supported in Gemini 3 and later. - No more prefilled model turns. If you seed the reply with
{to force JSON, that trick's done. Multi-turn chats should use server-sideprevious_interaction_id. - Stricter function calling. On the
generateContentAPI, everyFunctionResponseneeds bothcall_idandname.
There's no official table that maps an old token budget to a level. Pick medium, compare against high, and measure.
Here's the open question nobody's answered yet. Routing swaps the model, not your request body. Google doesn't say what happens when a routed call still carries thinking_budget or temperature, so assume it might fail and fix it first.
Gemini 3.8 Flash Pricing: The January Flip
Standard paid-tier prices from Google's pricing page, per million tokens:
| Model | Input | Output |
|---|---|---|
| Gemini 2.5 Pro | $1.25 (≤200k), $2.50 (>200k) | $10 (≤200k), $15 (>200k) |
| Gemini 3.8 Flash, through Dec 31 | $0.75 | $3.75 |
| Gemini 3.8 Flash, from Jan 1, 2027 | $1.50 | $7.50 |
December is a sale. Routed Pro traffic costs 40% less on input and 62.5% less on output.
January isn't. Input jumps to $1.50, which is higher than 2.5 Pro's $1.25 short-prompt rate. Output stays cheaper.
For prompts under 200k tokens, the break-even is exactly 10 input tokens for every output token:
- Under 10:1 (chat, code generation, long answers): 3.8 Flash costs less than 2.5 Pro did.
- Right at 10:1: no change. 100M in and 10M out is $225 a month on both.
- Over 10:1 (RAG, document Q&A, classification): you pay more from January.
A concrete case: a RAG app sending 500M input tokens and getting 10M back each month. That's $725 on 2.5 Pro and $825 on 3.8 Flash in January. Roughly 14% more, for a cheaper tier of model.
Two things soften it. 3.8 Flash has no separate rate above 200k tokens, so giant prompts that hit Pro's $2.50/$15 tier get much cheaper. And cached input runs $0.075 now and $0.15 from January, so repeated context is where you claw money back.
Real-World Use Cases: Who Should Move First
RAG and document pipelines. You're the most exposed, because your input-to-output ratio is probably well over 10:1. Turn on context caching for shared documents before January.
Eval harnesses. If you pin temperature: 0 for repeatable runs, that knob's going away. Rebaseline on 3.8 Flash before you trust any score change.
Agents with tool calls. Audit every FunctionResponse for call_id and name. A broken tool loop fails quietly and burns tokens doing it.
Structured output. Drop the prefill hack. Use a strict schema or system prompt, then validate the output in code.
2.5 Flash users. Your text prices barely move, so the work is mostly the API changes.
Hard Limitations
No opt-out. If your product depends on 2.5 Pro's exact behavior, there's no documented way to keep it after December 1.
No head-to-head numbers. Google hasn't published a 2.5 Pro vs 3.8 Flash comparison. We haven't run 3.8 Flash on our own workloads either, so treat quality as unproven until you test it.
Token usage can climb. The migration guide warns long-running tasks may use more tokens, which eats into per-token savings.
Vertex AI isn't mentioned. The notice covers the Gemini API and AI Studio. If you're on Vertex, check its own docs before assuming anything.
Your Action Plan Before December 1
Don't let the auto-route make the switch for you. Do it yourself, while December prices make testing cheap.
- Find every call. Run
grep -rnE gemini-2\.5-(pro|flash)\b|thinking_budget|top_p|top_k|candidate_count --exclude-dir=node_modules --exclude-dir=.git .and search fortemperatureon its own. Skip hits forgemini-2.5-flash-lite, which isn't affected. - Swap the model string to
gemini-3.8-flash(from Pro) orgemini-3.5-flash-lite(from Flash). - Replace
thinking_budgetwiththinking_level, starting atmedium. - Strip sampling params and prefills, then rerun your evals.
- Fix tool responses so each one carries
call_idandname. - Check your ratio. Divide monthly input tokens by output tokens. Over 10, budget for a bigger January bill or lean on caching.
December is the cheap month to get this right. January's price is the one you'll keep paying.