Gemini 2.5 Pro and Flash calls change models on 1 December. What breaks, and what we'd do first
From 1 December 2026, Gemini API requests to gemini-2.5-pro route to Gemini 3.8 Flash and requests to gemini-2.5-flash route to Gemini 3.5 Flash-Lite, at the new models' prices. Here's what breaks, what it costs and how to move on your own terms first.
part 3 of 3 · Data and AI that hold up in productionthe ideaDecember changes the model and January changes the price. Test before either
after reading, you can- Find every app and key that still calls 2.5 Pro or 2.5 Flash, including the forgotten ones
- Fix the Gemini 3 breaking changes: prefills, sampling settings, thinking level and signatures
- Forecast the bill at December and January prices before Google switches your traffic
Google has deprecated gemini-2.5-pro and gemini-2.5-flash on the Gemini API. From 1 December 2026, any request that still names them gets answered by a newer model and billed at that model's price. Nobody has to deploy anything for that to happen. Find every app and API key that still calls the 2.5 models, test them on the replacement this month, and change the model string yourself before Google does it for you.
Your app keeps asking for the same model. From December, a different one answers
Lots of products call Google's Gemini models over the internet with an API key: chatbots, document readers, coding helpers, internal agents. Each request names the model it wants. Google is retiring two popular names, gemini-2.5-pro and gemini-2.5-flash. From 1 December, Google says it will route those requests to a newer model and charge that model's rates. Most calls will keep working. Some will start failing, because the newer models reject a few request styles the old ones accepted. And the answers your users see will come from a model nobody on your team has tested.
It's like a supplier discontinuing the part you order every week and shipping its newer part under the old order number. Most of the time it fits. Sometimes the bolt holes don't line up, and the invoice price is different either way.
- Teams using Google AI Studio API keys
- Apps calling gemini-2.5-pro or 2.5-flash
- Owners of chatbots and AI agents on Gemini
- Finance teams paying the Gemini API bill
- Security teams that own API keys
Why it matters to you
Start with quality. Your 2.5 Pro calls go to 3.8 Flash, a Flash model, and 2.5 Flash calls drop a tier to 3.5 Flash-Lite. Google's guides speak well of both, and they may well do better on your work. But nobody has run them on your prompts yet, and you don't want your users to be the ones who find out.
The second risk is outright failure. Google lists breaking API changes for both targets. They cover function calling and thought signatures, a new thinking setting, sampling parameters that no longer do anything, and prefilled model turns. A request that leans on one of those can return an error on 1 December even though nobody touched the code.
The third is the bill. Routed calls are charged at the new model's rates, and for 2.5 Pro users those rates change again on 1 January when Gemini 3.8 Flash comes off its introductory price. Google also says Gemini 3.8 Flash can use more tokens on long, complex tasks by design. So the per-token price is only half the story.
-
01 Your app sends the request
Nobody changed anything. The request still names gemini-2.5-pro or gemini-2.5-flash, with the same key and the same parameters as last month.
-
02 Google reroutes it
Google swaps the model behind the name. Your 2.5 Pro calls now land on 3.8 Flash, and 2.5 Flash calls land on 3.5 Flash-Lite. Nothing in your code says so.
-
03 The newer model's rules apply
Prefilled model turns get a 400 error, temperature and top_p are ignored, and tool calls depend on thought signatures.
-
04 A different model answers
Tone, length, reasoning depth and tool use can all shift. If you don't test first, your users notice before you do.
-
05 The bill follows the new model
Tokens are charged at the target's rates. For 2.5 Pro traffic those rates move again on 1 January.
For engineers: Google does the routing on its side. Your application logs keep the name your code sent, so they won't show the switch. Google did something similar in October, when gemini-3.7-flash and gemini-3.5-flash dropped out of AI Studio and their endpoints started passing calls to newer models. For 2.5, Google lists 1 December as both the shutdown date and the routing date, so don't count on the old name answering for long. Move to the new name yourself.
What Google changed, model by model
The changes your code and your budget will meet
No longer selectable in AI Studio. API access is limited to existing users who've actively used it. From 1 December its requests route to gemini-3.8-flash.
No longer selectable in AI Studio either. From 1 December its requests route to gemini-3.5-flash-lite, billed at Flash-Lite rates.
Gemini 3 models take a named level instead of a token budget. Gemini 3.8 Flash accepts low, medium or high and returns an error for minimal.
temperature, top_p and top_k are ignored from Gemini 3.6 Flash and 3.5 Flash-Lite on. Google says later generations will reject them with a 400.
If the last non-empty turn in your request comes from the model, you get a 400 error back. Move that steering into a system instruction or use structured output.
Tool calls come back with thought signatures, and your code has to hand them back untouched. On generateContent, also check that each FunctionResponse carries its call_id and name.
Google bills routed 2.5 Pro calls as Gemini 3.8 Flash and routed 2.5 Flash calls as Gemini 3.5 Flash-Lite. Your cost per call changes even though the code doesn't.
Google says it isn't deprecated and stays until further notice. If that's the only model you call, you've got nothing to do yet.
| Model you call today | Answered by from 1 Dec | Paid tier price, per 1M tokens in / out | Default thinking | Watch for |
|---|---|---|---|---|
| gemini-2.5-pro | gemini-3.8-flash | $0.75 / $3.75 to 31 Dec 2026, then $1.50 / $7.50 | medium (low, medium, high) | More tokens on hard tasks; minimal returns an error |
| gemini-2.5-flash | gemini-3.5-flash-lite | $0.30 / $2.50 | minimal | Agents can stop tool use early at minimal |
| gemini-2.5-flash-lite | No change (not deprecated) | Unchanged | Off | Nothing yet |
| gemini-3.7-flash (precedent) | gemini-3.8-flash since Oct 2026 | Not stated | medium | Same routing pattern, two months earlier |
Look at the gemini-2.5-flash row twice. Gemini 3.5 Flash-Lite starts at the minimal thinking level, and its guide warns that autonomous subagents with tool calls need medium or high "to prevent premature tool termination". An agent that kept calling tools on 2.5 Flash may stop early on the routed model, and that may not show up as an error. Google's guide calls Flash-Lite a strong migration path from 2.5 Flash and quotes better scores on reasoning and chart benchmarks. Plenty of extraction and classification jobs will be fine. Agent loops are the ones to test first.
The 2.5 Pro row has the opposite problem. Gemini 3.8 Flash defaults to medium thinking, takes smaller reasoning steps and checks its own work on multi-step goals, which is why Google warns it can use more tokens on long tasks. Thinking tokens are billed as output. If your Pro traffic is mostly short questions, set the level to low and measure.
| Model | Input | Output (incl. thinking) | Notes |
|---|---|---|---|
| gemini-2.5-pro | $1.25 up to 200k-token prompts; $2.50 above | $10.00 up to 200k; $15.00 above | What you pay until 30 Nov |
| gemini-3.8-flash | $0.75 to 31 Dec 2026; $1.50 from 1 Jan 2027 | $3.75 to 31 Dec 2026; $7.50 from 1 Jan 2027 | No separate long-prompt tier listed |
| gemini-2.5-flash | $0.30 text, image, video; $1.00 audio | $2.50 | What you pay until 30 Nov |
| gemini-3.5-flash-lite | $0.30 text, image, video, audio | $2.50 | Same price for text; audio input gets cheaper |
Do the arithmetic for your own mix. Per token, a 2.5 Pro workload moving to Gemini 3.8 Flash pays 20% more for input and 25% less for output once standard pricing starts, and it pays less for very long prompts. Whether the total goes up depends on how many more tokens the new model spends on your tasks. Run your real prompts and read the usage numbers back from the API. Guessing won't get you close.
The dates to put in the change calendar, from release to full price
- 17 Jun 20252.5 Pro and 2.5 Flash released
Both stable models arrive on the Gemini API. A lot of production code still names them.
- 7 May 2026Dormant unrestricted keys blocked
Unrestricted API keys that sat unused for a long time stop working. A key marked Blocked in AI Studio needs replacing.
- 28 May 2026New keys become auth keys
From this date, new keys from AI Studio come bound to a service account. Older standard keys only keep working with the Gemini API if someone restricted them, so check the ones in old scripts.
- 8 Oct 20263.7 Flash and 3.5 Flash reroute
Google drops both from AI Studio and routes their API calls to newer models. It's the same pattern 2.5 now follows.
- 20 Oct 2026Vertex AI retirement date for 2.5
Vertex AI lists this as the retirement date for 2.5 Pro, Flash and Flash-Lite. If your company also runs Gemini on Google Cloud, look at those workloads before anything else.
- 26 Oct 2026Request storage on by default
New paid-tier projects on the Generate Content API keep requests by default unless you set store=false. Worth knowing before you spin up a fresh project for testing.
- 2 Nov 2026Deprecation notice
Google deprecates both models on the Gemini API and lists what breaks. From here you've got 29 days.
- 1 Dec 2026Requests auto-route
Google starts routing. Calls to 2.5 Pro get Gemini 3.8 Flash, calls to 2.5 Flash get Gemini 3.5 Flash-Lite, and you pay their rates.
- 1 Jan 20273.8 Flash standard pricing
The introductory price ends. 3.8 Flash goes to $1.50 in and $7.50 out per million tokens, twice what you paid in December, so January's invoice is the one finance will ask about.
Your options before 1 December
There are really only three choices, and doing nothing is one of them. Google's notice doesn't offer a way to stay on 2.5 Pro or 2.5 Flash past the date, so the decision is which newer model you pick, and whether you pick it or Google does.
- No code change, so nothing to deploy this month
- 2.5 Flash traffic lands on Flash-Lite at minimal thinking, whether your agents can live with that or not
- Any breaking change shows up as a production error, on the day itself
- Logs still say gemini-2.5-pro, which confuses whoever's on call when answers change
- The bill changes on 1 December, then again on 1 January, and nobody forecast either
- You pick 3.8 Flash, 3.6 Flash or 3.5 Flash-Lite for each workload, after testing it
- Someone sets thinking_level on purpose and checks how many tokens it burns
- Errors show up in a test run in November
- Dashboards show the model that actually answered, so on-call isn't guessing
- Finance sees a forecast before the invoice
| If the app does this | Consider | Thinking level to start with | Why |
|---|---|---|---|
| Coding help, multi-step agents, long documents with reasoning | gemini-3.8-flash | medium, then try low | Google's routing target for 2.5 Pro and its newest Flash model |
| Agentic and multimodal work where 3.8 Flash spends too many tokens | gemini-3.6-flash | medium | Google says 3.6 Flash remains supported and uses fewer turns than 3.5 |
| High-volume extraction, routing, classification | gemini-3.5-flash-lite | minimal | Google's routing target for 2.5 Flash, built for throughput |
| Subagents with tool calls on Flash-Lite | gemini-3.5-flash-lite | medium or high | Google's guide warns minimal can end tool use early |
| Already on gemini-2.5-flash-lite | Stay for now | Unchanged | Not deprecated; watch the deprecations page |
Moving to Vertex AI is a fourth path for teams that want model access under Cloud IAM. It won't save you from this work. Vertex lists 20 October 2026 as the retirement date for the same models, so the model-level changes are similar. Pick it for governance reasons and plan it as its own project.
What to do now, by role
Who does what before 1 December
- Ask engineering for a list of every product feature that calls Gemini, and which model name each one sends.
- Put a name next to each one. Someone has to sign off that the new model's answers are good enough for customers.
- Decide now whether your 2.5 Flash work can live with Flash-Lite or should move up to a Flash model.
- Search code, config and environment variables for the two model names. Don't forget prompts and settings that live in a database.
- Swap thinking_budget for thinking_level and drop prefilled model turns. Also delete temperature, top_p, top_k and candidate_count, since the newer models ignore them or don't support them.
- If your code keeps the conversation history itself, store each thought block and signature exactly as the model sent it. Strip them and the next tool call fails.
- Run your evaluation set on the new model and put the answers and token counts next to 2.5's. Look at the worst answers first.
- Go through each project in AI Studio and write down every Gemini API key and who owns it. Anything on the Usage page under (unknown keys) needs explaining.
- Replace standard keys with auth keys bound to a service account, and keep them in Secret Manager, never in client apps.
- Delete keys nobody claims after the migration, once their traffic has moved to the new key.
- Put a billing alert on every project that calls Gemini. Google's key guide recommends it, and it's how you hear about a token spike before the invoice does.
- Ask engineering for a cost forecast at December and January prices, built from the token counts in the test runs.
- Watch for 429 errors. Where spend-based limits apply, a tier 1 project stops at $10 per 10 minutes, and a model that spends more tokens hits that sooner.
# example output $ grep -rnE 'gemini-2\.5-(pro|flash)([^-]|$)' . answer.py:14: MODEL = "gemini-2.5-flash" agent.yaml:9: GEMINI_MODEL: gemini-2.5-pro $ grep -rnE 'thinking_budget|temperature|top_' . answer.py:22: temperature=0, thinking_budget=512 # trailing model turn = prefill, 400 on 3.6+ answer.py:31: role="model", text="Answer:"
Don't stop at the code search. Model names also sit in places grep can't see, like a low-code workflow or a notebook on someone's laptop. The AI Studio Usage page shows which keys in a project send traffic, and that's usually the quickest way to find a caller nobody remembers.
The migration path, from inventory to cutover
- 01Inventory callers and keys
Go project by project. Write down each API key, what calls it, which model name it sends and who owns it. Rate limits apply per project, so keep the list grouped that way.
- 02Build a small evaluation set
Pull 50 to 200 real requests per workload, with the answers people accepted. Strip personal data first. This set is how you'll judge the new model, so make it look like real traffic.
- 03Fix the breaking changes
Replace thinking_budget with thinking_level, remove prefilled model turns and sampling parameters, and make sure every FunctionResponse carries call_id and name on generateContent. Update the Google Gen AI SDK while you're there.
- 04Run both models side by side
Run the evaluation set against 2.5 and against the new model. Then put the answers side by side, with the tool calls, the error rate and the token counts from the usage fields.
- 05Pick the model and thinking level
Choose per workload. If Gemini 3.8 Flash spends too much on simple calls, try low, or try gemini-3.6-flash. If Flash-Lite agents stop early, raise the level.
- 06Pin it and roll out
Put the new model name in config, deploy it before 1 December and watch errors and spend for a week. Tell support what changed so they recognise new answer styles.
- 07Clean up
Remove the old model names from config, retire keys nobody uses and record the decision. The next deprecation notice will be easier.
Harden so the next model change hurts less
This notice came less than a month after the October one that rerouted 3.7 Flash and 3.5 Flash. It won't be the last. The durable fix is to treat the model name like a dependency version, and to treat the key behind it like a service account credential.
Before: the model name is in the code and nobody owns the key
Each app hardcodes a 2.5 model name and carries a standard key that nobody owns. Google decides when the model behind that name changes, and your logs can't tell you it did.
After: models pinned in config, and someone owns every credential
Model names live in config with an owner and an evaluation set. Each app has its own auth key in Secret Manager, and a billing alert catches a token jump before the invoice does.
Durable fixes, each tied to this change
- 01Model names live in config
Read the model string from one config value per workload. When the next notice arrives, you change one line and rerun the tests, instead of searching the code base under pressure.
- 02Keep an evaluation set per workload
Keep the requests and accepted answers from this migration. When Google changes a model you use again, you rerun them and have an answer in an afternoon.
- 03One auth key per app
Auth keys are bound to a service account, limited to the Gemini API by default, and Google quickly stops leaked ones it detects. One per app tells you who's calling what.
- 04Keep keys out of the browser
Don't put keys in web or mobile apps. Google's own key guide warns that users can pull them out of the code. Keep the key on a backend and let the app call that.
- 05Store full history, signatures included
If your app saves conversation history in its own database, save thought blocks and signatures exactly as returned. Or use the Interactions API in stateful mode and let Google keep them.
- 06Decide on request storage
Since 26 October, new paid projects on the Generate Content API store requests by default. If you create a project for this migration, set store=false or change the logging setting, if your data rules call for it.
- 07Watch the changelog
Put Google's Gemini API changelog and deprecations page on someone's weekly list. This notice gave 29 days, and that's not much time to test.
If it goes wrong after 1 December
Errors or strange answers after the switch? Work down this list
Most problems after the routing change are one of four things: a request style the newer models reject, lost thought signatures, a thinking level that's wrong for the job, or a token bill that jumped. Start with the errors, because they're the easiest to see.
- 01Containfirst hour
- Check error rates by endpoint. A spike of 400s on 1 December almost always points at a breaking change, not an outage.
- Pin the failing feature to an explicit model, gemini-3.8-flash or gemini-3.6-flash, so you know what's answering while you fix it.
- Tell support that answers may read differently, so they don't escalate every change in tone.
- 02Find the causefirst day
- Read the error message first. If it says a thought_signature is missing, your history store is dropping it. If it complains about the last turn, someone's prefilling.
- Look for code that sets thinking_level to minimal on Gemini 3.8 Flash. That setting gets an error back, so it's an easy one to rule out.
- For agents that stop early on Flash-Lite, rerun a failing case at medium and compare the tool calls.
- 03Fixfirst days
- Swap each prefill for a system instruction or structured output. Then check that the history you replay still carries its signatures, because that's the other common cause.
- Update the Gen AI SDK or the agent framework you build on. ADK got a fix for this same bug late last year, so check your version before you rewrite anything.
- Rerun the evaluation set before you redeploy, so the fix doesn't swap one problem for another.
- 04Check the billfirst week
- Compare daily token use with November's. Thinking tokens bill as output, so a jump there shows up on the output line.
- If spend jumped, lower the thinking level for simple calls or move them to a cheaper model.
- If tier 1 projects hit 429 RESOURCE_EXHAUSTED, look at spend per 10 minutes before you request more quota.
- 05Learnafter it settles
- Write down which workloads broke and why. Add each failure as a test case.
- Move every model name into config and give each key an owner, so the next notice is a one-line change.
Three setups you might recognise
We made these examples up from Google's documented changes, so don't read them as Cohash clients or real incidents. You'll probably recognise one anyway.
Apps nobody touched before 1 December, and how each one goes wrong
- the setup
- A software company runs its support chat on gemini-2.5-flash. Someone wanted shorter replies a while back, so every request still ends with a model turn that says "Answer:".
- what happens
- On 1 December the calls route to 3.5 Flash-Lite. Every request that ends on a model turn gets a 400, so the chat window goes quiet until a customer complains.
- what to do
- Remove the prefill now and move the formatting rule into a system instruction. Test on gemini-3.5-flash-lite and pin it before the date.
- the setup
- An operations team runs an agent on gemini-2.5-pro that calls internal tools. The conversation is saved in Postgres between turns, and the code saves only the text.
- what happens
- After the switch, the routed model expects thought signatures back on tool calls. The saved history doesn't have them, so multi-step runs fail with 400 errors. Google also warns the new model can use more tokens on long tasks.
- what to do
- Save the whole model response, signatures and all, or move to the Interactions API in stateful mode and let Google hold the history. Then set thinking_level and watch the token count.
- the setup
- Analysts run a nightly job that tags documents with gemini-2.5-flash at temperature 0. The key lives in a shared notebook that someone set up a year ago.
- what happens
- The job keeps running after 1 December, but temperature is ignored and the default thinking drops to minimal. Tags can drift from night to night, and nobody can say who owns the key.
- what to do
- Rerun last month's documents on the new model and compare the tags. Give the job its own auth key in Secret Manager and retire the old one.
How Cohash helps
Want a hand? Our AI practice can run this migration alongside your engineers, starting from your own traffic. We can give you a cost forecast at the new prices before anything moves. For Google Cloud work, see our Vertex AI page or hire a Vertex AI engineer. You can also start with an assessment.
What to take from this
- 01
On 1 December, 2.5 Pro calls start landing on 3.8 Flash and 2.5 Flash calls on 3.5 Flash-Lite. You pay their rates, and your code won't tell you it happened.
- 02
Prefilled model turns, thinking_level minimal on 3.8 Flash and dropped thought signatures fail with errors. Ignored temperature fails quietly.
- 03
Flash-Lite starts at minimal thinking. Agents that call tools need it raised, or they may end tool use early, and that may not show up as an error.
- 04
3.8 Flash doubles in price on 1 January, and it can spend more tokens on hard tasks. Don't guess the new bill. Build it from your own test runs.
- 05
Use the inventory to fix keys too: one auth key per app, held in Secret Manager, with an owner and a billing alert.
- 06
On the Gemini API, gemini-2.5-flash-lite isn't deprecated yet. Vertex AI lists 20 October as the retirement date for all three 2.5 models, so check those workloads too.
01Will my app stop working on 1 December?
Most calls should keep working, because Google says it will route the old names. The ones that fail use something the newer models reject: a prefilled model turn, minimal thinking on 3.8 Flash, or tool-call history that's lost its signatures. Test before the date to find out which group you're in.
02We still need gemini-2.5-pro. Can we keep it after 1 December?
No. From that date every gemini-2.5-pro request goes to 3.8 Flash and is billed at 3.8 Flash rates, and Google's notice doesn't offer a way out. Until then, only users who've actively used 2.5 Pro before can still call it.
03Is gemini-2.5-flash-lite being retired too?
Not on the Gemini API. Google says 2.5 Flash-Lite isn't deprecated there and stays until further notice. On Vertex AI it's a different story: Vertex lists 20 October 2026 as its retirement date. Someone should still check the deprecations page every few weeks. That's where Google tracks shutdown dates.
04Does this affect Vertex AI?
No, this notice is about the Gemini API you call with AI Studio keys. Vertex AI lists 20 October 2026 as the retirement date for both models. If something on Vertex still names them, fix that first. Vertex lists 3.8 Flash, 3.5 Flash or 3.5 Flash-Lite as replacements.
05Will 3.8 Flash cost us more than 2.5 Pro did, once January comes?
Per token, it's cheaper in December. From 1 January you pay $1.50 per million input tokens, where short 2.5 Pro prompts cost $1.25, and $7.50 for output where 2.5 Pro charged $10. But Google says 3.8 Flash can spend more tokens on complex work. So run your own traffic through it before you promise finance a number.
06Why does 2.5 Flash traffic end up on Flash-Lite? Isn't that a step down?
Google picked it, and its guide calls 3.5 Flash-Lite a strong migration path from 2.5 Flash. Text costs the same and audio input gets cheaper. If your workload needs more reasoning than that, pick gemini-3.6-flash or gemini-3.8-flash yourself and test it before December.
07What happens to temperature and top_p settings?
From 3.6 Flash and 3.5 Flash-Lite on, Google says temperature, top_p and top_k are ignored, and later generations will reject them with a 400. Take them out now. If you need consistent output, use a system instruction or structured output.
08Do I need new API keys for this?
Not for the routing itself. But unrestricted standard keys are already rejected, and new AI Studio keys have been auth keys since 28 May 2026. The inventory you do for this migration is a good moment to give each app its own auth key with an owner.
Three questions, about a minute
Pick an answer and we'll tell you if it's right, and why it is or isn't. The score stays in this browser.
-
Q1Your support bot on gemini-2.5-flash ends each request with a model turn that says "Answer:". Nobody changes it. What happens on 1 December?
show the answer
C. Requests start failing with a 400 error Calls route to Gemini 3.5 Flash-Lite, and from Gemini 3.6 Flash and 3.5 Flash-Lite on, the API returns a 400 when the last non-empty turn comes from the model. Move the formatting rule into a system instruction.
-
Q2An agent with tool calls works on 2.5 Flash but stops after one tool call on Flash-Lite. What would you try first?
show the answer
A. Raise thinking_level to medium or high Flash-Lite starts at minimal thinking, and Google's guide says agents with tool calls need medium or high to avoid stopping tool use early. Temperature is ignored now, and 2.5 Flash won't be there.
-
Q3Finance asks whether moving 2.5 Pro traffic to Gemini 3.8 Flash will be cheaper. What's the honest answer?
show the answer
C. It depends on token use, so measure it with real prompts Per token, input costs more and output less at standard prices, and 3.8 Flash can spend more tokens on hard tasks. Only test runs on your own traffic give a real forecast.