Nano Banana 2 Lite + Omni Flash: Google's Recommended Image-to-Video Pipeline
Google pairs Nano Banana 2 Lite ($0.034 per 1,000 images) with Omni Flash ($0.10/sec) into one image-to-video pipeline. The workflow, the code, the cost math.
Quick Answer
On June 30, 2026, Google shipped two models designed to be used together: Nano Banana 2 Lite (gemini-3.1-flash-lite-image), a generally available image model that returns results in about 4 seconds and costs $0.034 per 1,000 images, and Gemini Omni Flash (gemini-omni-flash-preview), a public-preview video model priced at $0.10 per second of output. Google's own recommended workflow chains them: generate your base frame with Nano Banana 2 Lite, iterate on the look while drafts cost a few thousandths of a cent each, then pass the winning image to Omni Flash as a reference input and animate it into a 720p clip. The economics are the whole point — image drafts are effectively free and video seconds are not, so you move every look-and-feel decision to the cheap stage and pay for video generation once. Here's the pipeline step by step, the code, and the cost math.
Key Takeaways
- Two models, one pipeline. Nano Banana 2 Lite generates the frame; Omni Flash animates it. Google recommends this pairing explicitly in the launch announcement.
- The cost asymmetry is ~3,000×. One image draft ≈ $0.00003; one 10-second video ≈ $1.00. Iterate where iteration is free.
- Nano Banana 2 Lite is GA (
gemini-3.1-flash-lite-image, ~4-second outputs); Omni Flash is public preview (gemini-omni-flash-preview, 3–10s clips at 720p). - Lock the frame before you animate. Composition, subject, lighting, and aspect ratio are all decided at the image stage — the video prompt should describe motion only.
- Conversational edits continue the chain. After animating, refine the clip with
previous_interaction_idinstead of re-rolling from scratch.
Why generate the image first
Text-to-video makes you pay video prices for every compositional experiment. If the framing is wrong, the product is off-model, or the lighting isn't right, a re-roll costs another $0.30–$1.00 — and you often need many.
The image-first pipeline splits the problem in two:
- Look (subject, composition, lighting, style) — decided at the image stage, where 30 drafts cost about a tenth of a cent total.
- Motion (camera move, action, physics) — decided at the video stage, where you now generate from an approved frame instead of a text gamble.
| Iteration strategy | 30 drafts cost |
|---|---|
| Text-to-video re-rolls (5s each) | ~$15.00 |
| Nano Banana 2 Lite image drafts | ~$0.001 |
This is the same principle behind classic storyboarding: nobody re-shoots a scene to fix a framing decision that a sketch could have caught. Google's stated numbers make the split concrete: Lite outputs land in ~4 seconds at $0.034 per 1,000 images, and Omni Flash bills $0.10 per second of video output.
The pipeline, step by step
Step 1 — Generate the base frame with Nano Banana 2 Lite
Nano Banana 2 Lite uses the standard Gemini image-generation pattern (generate_content with an image-output model):
from google import genai
client = genai.Client()
result = client.models.generate_content(
model="gemini-3.1-flash-lite-image",
contents=(
"Studio product shot of a matte-black wireless earbud case "
"on brushed concrete, soft rim lighting, shallow depth of field, 16:9"
),
)
image_b64 = result.candidates[0].content.parts[0].inline_data.data
Re-roll freely until the frame is right. Two rules save money downstream:
- Match the aspect ratio to the final video — Omni Flash outputs
16:9or9:16; a mismatched base frame gets cropped or padded. - Keep the frame clean. Text overlays, watermarks, or busy edges in the base image tend to smear once animated.
Step 2 — Animate it with Omni Flash
Pass the image as a reference input and describe only the motion — the look is already settled:
import base64
from google import genai
client = genai.Client()
interaction = client.interactions.create(
model="gemini-omni-flash-preview",
input=[
{"type": "image", "data": image_b64, "mime_type": "image/png"},
{"type": "text", "text": "Slow 180-degree orbit around the case as its lid opens; earbuds glow softly. Keep the product exactly as shown."}
],
)
with open("product.mp4", "wb") as f:
f.write(base64.b64decode(interaction.output_video.data))
The strongest motion prompts name the camera move, the subject action, and what must stay fixed. Our image-to-video guide covers motion-prompt craft in depth, and the prompt gallery has copy-ready starters.
Step 3 — Refine conversationally instead of re-rolling
If the clip is 90% right, don't regenerate — edit. Chain a correction onto the same interaction:
refined = client.interactions.create(
model="gemini-omni-flash-preview",
previous_interaction_id=interaction.id,
input="Slow the orbit down and make the glow warmer."
)
Session context holds for up to three sequential edits. One instruction per turn lands most reliably — the discipline from our conversational editing guide applies unchanged. Remember each edit renders new output seconds at $0.10/second, so a draft-frame mistake is still cheaper to fix at Step 1 than at Step 3.
What a real production run costs
A worked example — one 16:9 product clip, 8 seconds:
| Stage | Volume | Cost |
|---|---|---|
| Look exploration (Nano Banana 2 Lite) | 40 drafts | ~$0.0014 |
| First animation (Omni Flash, 8s) | 1 generation | $0.80 |
| Conversational refinements | 2 edit turns × 8s | $1.60 |
| Total | ~$2.40 |
The same result via pure text-to-video re-rolling — realistically 5–10 video attempts to converge on look and motion — runs $4–$8 and gives you less control over the final frame.
When to skip the pipeline
Image-first isn't always the answer. Go straight to text-to-video when the prompt is simple and motion-dominant (weather, crowds, abstract loops), when you have no fixed subject to protect, or when you're exploring what the model can do rather than executing a shot you've already designed. And if you need a real photograph as the base — a product shot, a character portrait — skip Step 1 entirely and feed your photo to Omni Flash directly; that's classic image-to-video.
For the full API surface behind both steps — setup, parameters, limits, and multi-turn editing — see the Gemini Omni Flash API tutorial.
FAQ
Is Nano Banana 2 Lite free?
No, but it's close: $0.034 per 1,000 images at 1K resolution — about three-thousandths of a cent per image. It's generally available (not preview) under the model ID gemini-3.1-flash-lite-image.
Why not use the full Nano Banana 2 instead of Lite?
Lite is the iteration engine: ~4-second generations at a price where 40 drafts cost a tenth of a cent. If you need maximum image fidelity for the final base frame, you can draft with Lite and do one final pass with a higher-tier image model — the pipeline shape doesn't change.
Does the video inherit the image's resolution?
No — Omni Flash outputs 720p regardless of input resolution (3–10 seconds, 16:9 or 9:16). A sharp, clean base frame still matters because it anchors composition and subject identity.
Can I do this without writing code?
The same image-first principle works in consumer tools: generate a frame you love first, then animate it. The Omni Flash studio supports uploading an image and animating it with a motion prompt in the browser, no API key required.
Is Omni Flash affiliated with Google?
No. Omni Flash is an independent platform built for the Gemini Omni era. It is not affiliated with Google. Gemini, Gemini Omni, Nano Banana, Omni Flash, Veo, and related names are trademarks of their respective owners.
Next steps
- Read: Gemini Omni Flash API tutorial → — model ID, pricing, parameters, and working code for every call in this pipeline.
- Try the Workflow Studio → — upload a frame and animate it in the browser.
- Read: Image-to-video with Omni Flash → — motion-prompt craft for animating stills.
- Read: Conversational video editing → — refining clips turn by turn.
- Browse the AI Prompt Gallery → — copy-ready image and motion prompts.
- Compare credit packs → — run the whole pipeline without managing API keys.