Three model IDs died this morning. imagen-4.0-generate-001,
imagen-4.0-ultra-generate-001 and imagen-4.0-fast-generate-001 were shut off
on the Gemini API on August 17, 2026 — a Monday, which is a rude day to discover your image pipeline
is a historical artifact. Google's
changelog has been saying so for months. Somebody, somewhere, did not read it, and their build is
red right now.
Four days earlier the same company shipped Gemini 3.7 Flash — three weeks after 3.6 Flash, with DeepSWE jumping from 49.0% to 65.3% and AutomationBench from 17.0% to 30.4%. That's the industry in a single week: an engine on Thursday, a funeral on Monday. The cadence is not slowing down. Plan accordingly.
It is never just a swap
Here's the part that costs real money. Getting off Imagen is not changing a string in a config file.
The method itself is gone: generate_images() was replaced by generate_content().
Different call, different response shape, different error semantics, and every line downstream that
unpacked the old object now unpacks nothing.
Google's
migration guide is a document, not a sentence.
If you called that SDK from forty places, you have forty small rewrites and one very long afternoon. I ship eight platforms by myself. I don't have eight long afternoons to donate to somebody else's deprecation calendar. So every AI call in every one of them goes through exactly one file.
- No vendor SDK outside the adapter. Business logic never imports a provider. It asks for "describe this image" and gets back my shape, not theirs.
- Model IDs live in config, never in code. Switching providers is an environment variable and a redeploy, not a pull request.
- A golden set per capability. Twelve real blueprints, twelve expected extractions. New model has to pass before it gets promoted. That takes twenty minutes, not a week of vibes.
- Deprecation dates go in the calendar the day I integrate. Not the week they fire.
This is the same argument as integrate before you replace, pointed one layer down. The model is a subcontractor. You do not rebuild the building because one subcontractor stopped answering the phone.
I learned this from a button
I ran RPA at Liberty Mutual from 2010 to 2014. Our bots drove vendor web portals by clicking things. One quarter a vendor moved a button — same page, same label, roughly forty pixels to the left — and a week of automation went dark before anyone noticed the queue wasn't draining. The vendor didn't do anything wrong. They shipped a release. We had simply written our process against their pixels instead of against an interface we controlled.
Sixteen years later the button is a model ID and the portal is an API, and the failure mode is identical: brittle coupling to something you don't own and can't vote on. The fix hasn't changed either, which is the entire thesis of the tooling changed, the architecture didn't.
The vision model that reads our blueprints at Coen is on its third provider since I built it last August. The field crew has never heard about any of them. That's not because I'm careful — it's because I got burned early enough that the seam was cheaper than the scar.
Deprecation isn't an interruption to the work anymore. It's a standing item, like insurance renewals and truck inspections. Build it into the schedule and it's a Tuesday. Ignore it and it's today.
You don't get to pick when the model dies. You only get to pick how much of your code goes in the ground with it.