Google's June 15 deprecation notice gave 15 and 63 days: run a drill
Google announced Veo and Imagen 4 deprecations on Jun 15, 2026 with shutdowns Jun 30 and Aug 17. Here is a five-step drill that fits inside the shorter window.

The Gemini API changelog entry dated June 15, 2026 announced Veo and Imagen 4 deprecations with shutdowns on June 30 and August 17, 2026. That is 15 days to the first cutoff and 63 days to the second, so a team with no inventory of its model ids has about two weeks.
| Notice date | Shutdown date | Days of notice |
|---|---|---|
| Jun 15, 2026 | Jun 30, 2026 | 15 |
| Jun 15, 2026 | Aug 17, 2026 | 63 |
What the Veo docs flag
The Veo page on the Gemini API marks veo-3.0-generate-001 and its fast variant as deprecated. Newer ids in the same docs carry a preview suffix, which tells you they are not frozen either. Treat every id with preview in it as something that will be replaced.
A five-step drill
Run it before the next notice arrives, not after.
- Inventory: search code, config, prompts and saved agent instructions for model id strings.
- Map: for each id, pick a replacement that matches duration, resolution and reference needs from the live catalog.
- Smoke test: send one request per replacement with a short duration and check the output file.
- Switch: move the id into one config value and deploy the change behind a flag.
- Record: log the model id per job so later audits can tell which outputs came from which model.
Step one in code
A short scan finds hard-coded ids. Extend the pattern with whichever ids your own vendors have flagged.
import pathlib
import re
PATTERN = re.compile(r"veo-3\.0-[a-z0-9-]+")
EXTENSIONS = {".py", ".ts", ".js", ".json", ".yaml", ".yml", ".md"}
for path in pathlib.Path(".").rglob("*"):
if path.suffix not in EXTENSIONS or not path.is_file():
continue
try:
text = path.read_text(errors="ignore")
except OSError:
continue
for number, line in enumerate(text.splitlines(), 1):
match = PATTERN.search(line)
if match:
print(f"{path}:{number}: {match.group(0)}")Why the short window is the real constraint
Sixty-three days is enough for most teams to test and switch. Fifteen days is not enough for a team that first has to find where the ids live. The two cutoffs came from the same announcement, so a team that treated it as one deadline on August 17 would have broken on June 30.
The drill above is cheap to rehearse. A scan takes minutes, a smoke test takes one short clip per candidate, and the config switch is a single value. The expensive part is discovery in prompts, saved agent instructions and documentation snippets that nobody remembers writing, which is why step one comes first and why the scan above covers markdown files too.
Picking the replacement on Sume
Sume uses bare catalog ids and no provider prefix. GET /v1/videos/models returns each model's supported_durations, supported_resolutions, supported_aspect_ratios and pricing_skus, which is the information step two needs. Send Idempotency-Key on submits so a retried smoke test returns the original job instead of creating a second one. The Video generation docs list the request fields.
Sources
Related posts
More in Developers
- Grok Imagine video API: 15 s, 5 references, request-ID polling
xAI's video guide for grok-imagine-video-1.5 lists up to 15 seconds, up to 5 reference images and async polling by request ID. The same loop on Sume jobs.
- How long AI video vendors keep your file: Veo 2 days, Higgsfield 7+
Veo keeps videos two days, Higgsfield files at least seven, Sora Batch outputs were kept 24 hours. Retention facts and a download-on-complete script.
- How to get an AI video generation API key: Sume steps and gotchas
Create a workspace API key in the Sume dashboard, send it as one header, check it with GET /v1/me, and keep it on your server. Scopes are fixed at creation.
- Instagram Reels API: a 100-posts-per-24-hours publish budget
The Instagram content publishing API limits an account to 100 API-published posts per moving 24 hours. A tested Python queue that spreads batch output under it.
Written by Sume