GEMINI LABJP
TTS — gemini-3.1-flash-tts-preview now streams speech generation via streamGenerateContent for lower latencyTRANSLATE — Gemini 3.5 Live Translate arrives, auto-detecting 70+ languages for speech-to-speech while preserving intonationIMAGE — Nano Banana 2 Lite launches as the fastest and most cost-efficient Gemini image modelOMNI — Gemini Omni Flash enters public preview as a natively multimodal model for custom video workflowsMODEL — Gemini 3.5 Flash reaches GA and now powers gemini-flash-latestAGENT — Managed Agents enter public preview in the Gemini API, running in isolated Google-hosted Linux sandboxesTTS — gemini-3.1-flash-tts-preview now streams speech generation via streamGenerateContent for lower latencyTRANSLATE — Gemini 3.5 Live Translate arrives, auto-detecting 70+ languages for speech-to-speech while preserving intonationIMAGE — Nano Banana 2 Lite launches as the fastest and most cost-efficient Gemini image modelOMNI — Gemini Omni Flash enters public preview as a natively multimodal model for custom video workflowsMODEL — Gemini 3.5 Flash reaches GA and now powers gemini-flash-latestAGENT — Managed Agents enter public preview in the Gemini API, running in isolated Google-hosted Linux sandboxes
Articles/API / SDK
API / SDK/2026-07-05Advanced

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.

gemini-api264url-context2deprecation7structured-output19automation49production131

Premium Article

I realized an image generation model was being retired on August 17 only three days before the deadline. As an indie developer running iOS and Android apps while also maintaining a few technical blogs, I honestly do not have the time to read the changelog of every API I touch, every day. That day I happened to open the changelog, saw the deadline staring back at me, and felt my stomach drop.

The problem was not that the information was missing. It was published, clearly and on time. I simply could not go read it every day. And if that is the real bottleneck, then the reading is what should be automated — especially if the automation grounds itself on the official page and surfaces only the deprecations that hit the models I actually use. Do that, and the notifications suddenly go quiet.

Gemini's url-context makes this straightforward to build. Below, we assemble a deprecation radar that reads the official changelog through url-context, cross-references it against your own list of models, and alerts you only on the delta. Pitfalls included, in a form you can run today.

Do not cram grounding and structured output into one call

Let me share the one design decision that matters most. Miss it, and you will end up rewriting the whole thing.

A call that enables a tool like url-context and a call that enforces strict JSON output via response_schema do not behave reliably when you put them in the same generate_content request. The path where the tool returns fetched content and the path that structures output against a schema compete with each other — the schema gets ignored, or the tool never fires. I burned half a day here.

So we split the work into two stages.

StageJobToolOutput
1Read the official page and extract deprecation notices as plain texturl-context enabledPlain text
2Cross-reference that text with your manifest and structure only the impactNo tools, response_schema onlyStrict JSON

Two calls looks wasteful at first, but in practice it is cheaper. Stage 1 runs fine on the lightweight gemini-flash-latest, and stage 2 only receives the already-extracted short text, so its input token count stays small. In my setup the total lands at a few cents per run, and running it three times a month is nothing.

Step 1: put the models and endpoints you actually use on one sheet

The radar's precision is decided by your own ledger — the thing you cross-reference against. Leave it vague and you get a noisy notifier that reacts to every deprecation in the world.

I keep everything my apps and sites actually call in a single YAML file. The key is to always record where each one is used. When a deprecation notice arrives, the first thing I want to know is which app I have to fix.

# manifest.yaml — the Gemini surfaces I actually use
used:
  - id: "gemini-flash-latest"
    kind: model
    where: ["wallpaper-app-android", "labs-auto-post"]
    note: "Main lightweight generator. An alias, so watch for silent promotion"
  - id: "gemini-embedding-2"
    kind: model
    where: ["labs-related-articles"]
  - id: "url_context"
    kind: feature
    where: ["labs-migration-radar"]
  - id: "batch-api"
    kind: feature
    where: ["wallpaper-app-review-classify"]
watch_pages:
  - "https://ai.google.dev/gemini-api/docs/changelog"
  - "https://ai.google.dev/gemini-api/docs/deprecations"

Writing the App Store / Google Play app name, or which blog's auto-posting pipeline, into where means I know the fix target the moment I read the alert. I even note the screens that wire into AdMob, as a reminder to not break the ad initialization order when I swap a model out.

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
If you are tired of tracking model deprecations by hand, you will be able to point url-context at the official changelog and automatically catch only the changes that affect the models you actually run
You get the two-call design that keeps grounding and structured output apart, plus state management that alerts only on the delta since last run, as working Python
You take home the over-alerting and blind-spot fixes I learned in production: alias drift, wording of notices, and the danger of a swallowed retrieval failure
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-06-25
Gemini API × TypeScript Type-Safe AI Application Architecture — Integrating Zod Schemas, Structured Output, and Streaming
Learn how to build type-safe AI applications with the Gemini API and TypeScript. This guide covers Zod validation, Structured Output, streaming pipelines, and robust error handling for production architectures.
API / SDK2026-06-25
When Gemini's Structured Output Quietly Drifts From Your Schema — Field Notes on Measuring Validation and Retries
Even with response_schema set, Gemini's structured output occasionally drifts in production. Stop swallowing failures, measure them, split causes by finish_reason, and feed errors back for a corrected retry. Field notes from stabilizing a validation pipeline.
📚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 →