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
- GPT-6.1 Sol function tool for Sume runs: clamp the cap in code
A Responses API function tool that lets GPT-6.1 Sol start a Sume Agent Completion: call_id as Idempotency-Key and a spend cap the model cannot exceed.
- GPT Image 2.5 widest banner: 3072x1024 at 3:1, with output cost
GPT Image 2.5 stops at 3:1. 3072x1024 passes the multiples-of-16 and pixel rules; 4:1 and 8:1 banners need another model. Output estimates by quality.
- GPT Image 2.5 returns base64; Sume returns a URL: port the code
OpenAI's image API returns base64 data for GPT Image models, and Sume's returns hosted URLs. The three lines that change when you move a decoder over.
- GPT Image 2.5 can take two minutes: handle the 202 job on Sume
OpenAI says complex GPT Image 2.5 prompts can take up to two minutes. Sume blocks 30 seconds, then returns a 202 job. Submit async, poll, and fetch the result.
Written by Sume