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/Advanced
Advanced/2026-06-16Advanced

Harden the Layer Before Gemini Sees User Media — A Validation Pipeline You Can Actually Run

Piping user-uploaded images and video straight into Gemini walks you into MIME spoofing, EXIF leaks, decompression bombs, and video that isn't ready yet. Here's the validation layer—magic-byte sniffing, Files API state polling, and cleanup—built up in working code.

gemini102multimodal43security11files-api5advanced14

Premium Article

One upload field, a whole new attack surface

As an indie developer, the moment you add "upload a photo and let the AI describe it," your inputs shift from data you prepared to data strangers send you. Text you can at least scan by eye. Binary media is opaque. Extensions are trivially renamed, and a perfectly ordinary-looking landscape photo can carry the exact coordinates where it was taken buried in its metadata.

What we build here is a safety valve that every piece of user media must pass through before it reaches Gemini. The only dependency is the google-genai SDK—no heavy framework. The trick is to order the gates from cheapest to most expensive, so anything we can reject with a light check gets rejected before we spend a file read or an API call on it.

Decide the gate order first

Validation wastes the least work when it runs cheapest-first. The order I settled on in production is:

  1. Size pre-check — reject oversized files with os.path.getsize alone, before reading a single byte.
  2. Content-based type detection — confirm the real format by magic number, not extension.
  3. Structural image sanitizing — detect decompression bombs and strip EXIF in one pass.
  4. Transport branch — small images go inline; large media and video go through the Files API.
  5. Output masking and cleanup — redact the response and delete the uploaded file.

With the gates in this order, when a new format or constraint appears later, it's obvious which gate to touch.

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
A sniff-by-content gate that rejects anything it cannot positively identify
Structurally neutralizing decompression bombs and EXIF location data with Pillow
A video path that polls Files API state and deletes the upload when done
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

Advanced2026-04-23
Defending Gemini API Apps from Prompt Injection: A Multi-Layer Production Architecture
A four-layer prompt injection defense for Gemini apps: sanitized input, hardened prompts, structured output, and a moderator LLM — with runnable Python.
Advanced2026-03-28
Long-Term Memory and Session Persistence with Gemini API — Design Patterns for Production Chatbots
Master the design patterns for long-term memory management, session persistence, and token budget control essential for building production-grade chatbots with Gemini API.
Advanced2026-07-12
Spend Deep Reasoning Only Where It's Needed: Per-Request thinking_level Routing in Gemini
Running every request at high thinking_level bloats latency and cost; forcing low drops accuracy on hard questions. This walks through a router that picks Gemini 3.x thinking_level per request from an inexpensive difficulty estimate, keeping p95 latency inside a mobile budget while reserving deep reasoning for the questions that need it — with measured numbers and 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 →