GEMINI LABJP
PRO35 — July 17, the date reports had pointed to, has passed without an official Gemini 3.5 Pro announcement or model card. July 24 is being cited as the fallbackNB2LITE — Nano Banana 2 Lite, otherwise known as Gemini 3.1 Flash-Lite Image, arrives as the fastest of the family: roughly four seconds per image at $0.034 per thousandOMNI — Gemini Omni Flash enters public preview, generating video up to ten seconds long at $0.10 per second of outputEDIT — Omni Flash is built around conversational editing. Swap a character, relight a scene, or change the angle in plain language, and the original audio and video tracks stay intactSYNTHID — Both new models carry SynthID watermarking, so anything they produce can be checked for provenance from inside the Gemini appSHUTDOWN — The older image generation models are deprecated and switch off on August 17. Worth checking your migration windowPRO35 — July 17, the date reports had pointed to, has passed without an official Gemini 3.5 Pro announcement or model card. July 24 is being cited as the fallbackNB2LITE — Nano Banana 2 Lite, otherwise known as Gemini 3.1 Flash-Lite Image, arrives as the fastest of the family: roughly four seconds per image at $0.034 per thousandOMNI — Gemini Omni Flash enters public preview, generating video up to ten seconds long at $0.10 per second of outputEDIT — Omni Flash is built around conversational editing. Swap a character, relight a scene, or change the angle in plain language, and the original audio and video tracks stay intactSYNTHID — Both new models carry SynthID watermarking, so anything they produce can be checked for provenance from inside the Gemini appSHUTDOWN — The older image generation models are deprecated and switch off on August 17. Worth checking your migration window
Articles/API / SDK
API / SDK/2026-06-12Intermediate

Gemini's Preview Image Models Shut Down on June 25 — Code Diffs and Checks From an Actual GA Migration

How I moved my image pipeline off Gemini's preview image models before the June 25 shutdown — confirming GA model IDs, Python code diffs, regression checks, and a safe cutover order.

gemini-api277image-generation8model-migration8deprecation7gemini-3-1-flash-imagePython38TypeScript8

Premium Article

On June 25, the Gemini API shuts down two preview image-generation models: gemini-3.1-flash-image-preview and gemini-3-pro-image-preview. The date is confirmed on the official deprecations page, which leaves roughly two weeks.

I run a batch pipeline that generates image variations for a wallpaper app I maintain as an indie developer, and I assumed my main path had long been migrated. Then I did an actual audit and found a side script — a prototyping tool I had written months ago — still pointing at the preview model. What I had budgeted as a "swap one model ID" task turned out to involve a wrong-ID 404, and a category of verification that becomes permanently impossible after the shutdown date.

Here is the working log: every step from audit to cutover, plus the differences I could actually measure between the preview and GA models, with runnable code.

What stops, and what replaces it

Two dedicated image-generation preview models are being retired, and each has a GA counterpart that has been generally available since May 28. So there is no "the replacement isn't ready yet" problem here.

  • gemini-3.1-flash-image-preview → migrate to gemini-3.1-flash-image
  • gemini-3-pro-image-preview → migrate to gemini-3-pro-image

Let me share the first trap I stepped into. I typed the pro-tier GA model as gemini-3.1-pro-image and got a 404 NOT_FOUND. The flash model carries the "3.1" version, but the pro model's official ID stays at "3" — the correct ID is simply the preview name with -preview removed. Product announcements sometimes write the pair loosely as "Gemini 3.1 Flash Image / 3.1 Pro Image," so if you reconstruct IDs from memory, you may take the same detour I did.

One scoping note: this shutdown concerns the dedicated image-generation model family. It does not affect the native Image Output capability of the main Gemini 3.2 Flash model — if that is all you use, you can stop reading here.

June has been a month of stacked deadlines for the Gemini API. The legacy Interactions API schema was deleted on June 8 (I wrote up that migration in Gemini Interactions API: Fixing What Broke When the Legacy outputs Schema Was Removed on June 6), the individual tiers of Gemini CLI and the Code Assist IDE extension wind down on June 18, and the image preview models follow on June 25. Putting all three dates on a calendar is a small act that prevents exactly the kind of straggler script I found.

Audit your code first — model IDs hide outside the code, too

The first job is finding every reference to the preview models, and I recommend searching for the substring image-preview rather than the full model IDs. A partial match still catches alias constants and abbreviated config values.

# Search broadly for the substring instead of exact model IDs
grep -rn "image-preview" \
  --include="*.py" --include="*.ts" --include="*.js" \
  --include="*.env*" --include="*.yaml" --include="*.yml" \
  --include="*.json" --include="*.toml" \
  .

In my repository this turned up two Python scripts and one .env file. The near miss was an environment variable hard-coded inside a GitHub Actions workflow definition — it shows up if you grep from the repository root, but it is exactly the kind of place you skip once you have told yourself "code is fixed, config is fixed."

Some references live entirely outside the repository. If you distribute model IDs through Firebase Remote Config or a settings table in your database, grep will never see them; open the actual admin console and read the live values.

I keep a general checklist for deprecation work in How to Handle Gemini API Model Deprecation and Migration Errors, but this particular migration is narrow — two models — so an accurate audit is most of the work.

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
Move your code off gemini-3.1-flash-image-preview and gemini-3-pro-image-preview before the June 25 shutdown, from audit to full cutover
Get working Python and TypeScript snippets: confirming GA model IDs with models.list, before/after call diffs, and error handling that separates 404 from 429
Run the preview-vs-GA regression comparison that becomes impossible after the shutdown, and adapt the 60-prompt method to your own image pipeline
Secure payment via Stripe · Cancel anytime

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Gemini Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • Copy-paste ready implementation code
  • New advanced guides published daily
  • $5/mo or $10 for lifetime access
View Membership →

Related Articles

API / SDK2026-06-25
The Morning a Preview Image Model Went Dark — Migrating to GA Gemini Image Models and Building a Deprecation-Resilient Pipeline
With gemini-3.1-flash-image-preview and gemini-3-pro-image-preview retired, here is how to migrate to the GA models and design an image pipeline that no longer gets caught off guard by deprecation dates — with code and cost math, plus video-to-image thumbnail automation.
API / SDK2026-07-05
Catching only the deprecations that touch you — feeding the official changelog to url-context
I found out an image model was being shut down three days before the deadline. Here is a deprecation radar that reads the official changelog through url-context and surfaces only the models I actually use, with working Python and the over-alerting tuning I had to do in production.
API / SDK2026-06-28
A Promotion Gate So gemini-flash-latest Flipping to 3.5 Flash Doesn't Break Your Pipeline at 3 AM
Floating aliases like gemini-flash-latest swap their target on every GA, quietly shifting the assumptions your unattended automation depends on. Here is a role-to-pinned-ID indirection layer, an acceptance harness that measures four metrics against your own golden set, and threshold-driven promotion and automatic rollback — with working code.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links
See all →