DIRTY STATIC / DISPATCH Tutorials06 NOV 2026 β€’ 17 MIN READ
A camera on a dolly in a dark concrete studio facing a long video timeline screen with one segment glowing caution yellow, hazard stripes on the floor
TutorialsINTELLIGENCE FOR THE MACHINE AGE

Make a 15 Second Video With Gemini Omni 1.2 Flash: Draft Low, Edit by Conversation, Then Upscale

Gemini Omni 1.2 Flash, released on November 5, 2026 and now generally available, generates and edits video up to 15 seconds long and edits it through follow up prompts. This tutorial runs the workflow Google itself describes in Google Flow: draft at 360p, fix the clip by conversation, and upscale only the take you keep, with the full credit costs worked out before you spend any.

Start reading ↓

The expensive way to make an AI video is to generate at full size again and again until the model gets lucky. Gemini Omni 1.2 Flash was built for a cheaper order of work. Google made the model generally available on November 5, 2026, with native generation and editing up to 15 seconds, up from 10 seconds in Omni 1.1, and its own launch post names the workflow plainly: draft fast at 360p or 720p, fix a detail with a follow up edit instead of generating the whole clip again, and then upscale your best creations to 1080p or 4K.

This tutorial follows that order in Google Flow, where the steps are buttons and settings rather than code. A short section at the end covers the same model on the Gemini API, including where the API workflow differs. Nothing here claims a test run. Every cost, limit, and command below was checked against Google documentation on November 6, 2026, and the Verification section tells you how to judge your own result.

What You Will Build or Learn

You will end with one finished video of 15 seconds, built in three passes. The first pass is a rough draft that proves the action, the framing, and the sound. The second pass fixes the details that the draft got wrong, through conversation with the model. The third pass raises the resolution of the version you kept, and no other version.

The example in this tutorial is a product clip for a desk lamp, because products expose weak work fast. A lamp has a shape that must stay stable, a switch that a hand must use in a way that makes sense, and a pool of light that must behave across the whole clip. Swap in your own subject and keep the structure. The order of the passes is the lesson, and it works for a social ad, a short explainer, or a scene with dialogue.

Before You Begin

Three facts about cost and access shape this tutorial, and each one can waste credits if you learn it late.

First, the plan gate is real. In Flow, generation and editing up to 10 seconds are open to all users, while clips from 11 to 15 seconds, Extend, and upscaling belong to Google AI Plus, Pro, and Ultra subscribers. If the 15 second option never appears in your account, that gate, or a rollout that has not reached you yet, is the likely reason. Google says its limits and credit costs can change at any time, so read the live cost in the Settings control at the top right of the Flow prompt box before every generation in this tutorial.

Second, know what the model still does badly. Google lists fast sports action, rapid script changes, and complex physics as areas where development is ongoing. A lamp on a bench is a fair test. A football volley in the rain is a credit bonfire. Keep the action simple, keep any spoken lines short, and plan to add important words as text in an editor afterwards rather than trusting the model to spell them inside the picture.

Third, every output carries a SynthID watermark. Google describes it as imperceptible to viewers and detectable by program for provenance checks. It does not change how the clip looks, and you cannot switch it off, so factor it into any client work where provenance matters.

Step 1: Write the Prompt as Three Beats

Action: write your prompt before you open Flow, and split the 15 seconds into three beats of about five seconds each. The Gemini API prompt guide for Omni shows that the model reads timing in plain language, so name what happens in each stretch and when it changes.

A matte black desk lamp on a wooden work bench in a quiet room at dusk, in a single continuous shot with no scene cuts. For the first five seconds, the camera moves in slowly and the lamp is off. Then a hand enters, switches the lamp on, and warm light falls across an open notebook. In the final five seconds, the camera pulls back to show the whole bench while the hand writes one line in the notebook. Sound design: a soft room tone and the click of the switch. No dialogue. No text or logos.

Expected result: a prompt that gives the model a beginning, a middle, and an end, plus the camera move, the sound, and two clear bans. The guide notes that simple prompts work best, and that unwanted elements are best handled by naming them in the prompt itself, since the model has no separate negative prompt field on the API.

Step 2: Set Up Flow for a 360p Draft

Action: go to flow.google.com and sign in, then open a project or start a new one. At the bottom of the prompt box, open the generation settings. Click Video, then click the video model and choose Omni Flash 1.2.

Now set four values. Set the orientation you need, landscape or portrait. Set the number of outputs to 1. Set the generation length to 15 seconds. Set the resolution to 360p. Before you generate anything, open Settings at the top right of the prompt box and read the credit cost it shows for this exact setup.

A concrete editing desk with a monitor showing a rough timeline of coarse blocks with one section glowing yellow The draft is for judgement, not for delivery. Its job is to prove the action and the framing at the lowest credit cost. Generated illustration in the Dirty Static house style.

Expected result: Flow shows Omni Flash 1.2 as the active model, a length of 15 seconds, a resolution of 360p, and a cost that matches the arithmetic in Step 3. If the length stops at 10 seconds, your account is on the free gate described above, and the rest of this tutorial needs a subscriber plan in Flow or the Vids route in Next Steps.

Step 3: Generate the Draft at 360p

Action: paste the prompt from Step 1 into the prompt box and click Generate.

The credit maths, from the Flow credits page, runs like this. Generation at 360p costs 1 credit per second for the first 10 seconds. Seconds 11 to 15 for subscribers cost 2 credits per extra second. A 15 second draft therefore costs 10 plus 10, which is 20 credits. The same clip at 720p costs 3 credits per second for the first 10 seconds and 6 credits per extra second after that, which is 60 credits in total.

Expected result: a 15 second clip at 360p with native audio. It will look soft. That softness is the price of the lesson, and the lesson is what you came for. Do not judge sharpness yet, and do not regenerate yet either.

Step 4: Judge the Draft Against Four Checks

Action: play the draft from start to finish, twice, and write down what fails. Judge only these four things at draft size.

First, the action. Did the hand switch the lamp on, in the right beat, with no extra hands and no broken motion? Second, the subject. Did the lamp keep its shape, its size, and its position from the first frame to the last? Google claims stronger consistency from first frame to last frame in 1.2, and a claim is a reason to test, not a result. Third, the camera. Did the move stay as one continuous shot, with no jump cut you did not ask for? Fourth, the sound. Is the click there, is the room tone calm, and did the model add dialogue or music you banned?

Expected result: a short written list of faults, in order of how much they matter. One or two real faults is a good draft. A draft where the action itself is wrong is not a candidate for editing, and the honest move is a new draft with a simpler prompt, still at 360p.

Step 5: Edit by Conversation, One Change per Turn

Action: select the draft in your project and type the fix as a follow up prompt, then generate. Ask for one change only, and end the prompt with the words the API guide recommends for edits.

Change the lighting in the room to a darker blue evening tone. Keep everything else the same.

Then take the next fault in its own turn.

Make the pool of light on the notebook warmer and smaller. Keep everything else the same.

Expected result: each turn returns a new video that carries the earlier fixes and applies the new one, while the History panel in Flow keeps every version and the prompt that made it. Flow help describes up to three conversational turns that keep the context of earlier edits, so spend those turns on the faults that matter most and keep each prompt short. Long edit prompts that redescribe the whole scene invite the model to rebuild the scene, which is the cost you are trying to avoid.

Step 6: Upscale Only the Keeper

Action: when a version passes the four checks in Step 4, select that version and use the upscale option in Flow to take it to 1080p.

The cost is small because upscaling charges by a different schedule. In Flow, upscaling to 1080p costs 0 credits for clips of 1 to 10 seconds and 1 credit per extra second over 10, so a 15 second keeper costs 5 credits. Ultra subscribers can upscale to 4K instead, at 50 credits flat for the first 10 seconds plus 5 credits per extra second, which is 75 credits for this clip. Know which one you clicked before you click it.

A small rough video frame expanding into a large screen with a glowing yellow frame in a concrete room Upscaling is the reward for a clip that already works. It raises the size of the delivery file and adds no new ideas to the scene. Generated illustration in the Dirty Static house style.

Expected result: the same clip, with the same action, framing, and sound, delivered at 1080p. Upscaled output is still upscaled. Google labels 1080p and 4K as upscaled resolutions in its own API table, so judge the keeper by the picture it holds, not by the number in the file name.

Step 7: Download and Record What Worked

Action: download the upscaled keeper from Flow. Save beside it a plain text note with three things: the prompt from Step 1, each edit prompt from Step 5 in order, and the final credit total you spent.

Expected result: a finished clip and a recipe that can rebuild it. Video models change under you, and Google retires Flow models on a schedule, with Omni Flash 1.1 due to retire in Flow on December 5, 2026. A saved recipe is how you rebuild a winning clip on the next model instead of starting from memory.

The Same Workflow on the Gemini API

The API route uses the same model under the model ID gemini-omni-1.2-flash, through the Interactions API rather than the generateContent calls used for text models. It has no free tier, so the key must belong to a project with billing on. Google prices video output at 12 dollars per million tokens, which works out to about 0.023 dollars per second at 360p, about 0.07 dollars per second at 720p, 0.104 dollars per second at 1080p, and 0.209 dollars per second at 4K, with input tokens charged on top at 1.50 dollars per million. A 15 second draft at 360p therefore costs about 35 cents in output, and a 15 second clip at 720p costs about 1.04 dollars.

Install the SDK and set your key as an environment value. Use a placeholder in anything you share, never a real key in a file or a screenshot.

Any system Β· Terminal

pip install -U google-genai
export GEMINI_API_KEY="YOUR_API_KEY"

Draft at 360p, with the duration set in response_format. When no duration is set, the model defaults to 10 seconds, and a value over 15 seconds returns an invalid argument error.

import base64
from google import genai

client = genai.Client()

draft = client.interactions.create(
    model="gemini-omni-1.2-flash",
    input=(
        "A matte black desk lamp on a wooden work bench in a quiet room "
        "at dusk, in a single continuous shot with no scene cuts. "
        "A hand switches the lamp on and warm light falls across an "
        "open notebook. No dialogue."
    ),
    response_format={
        "type": "video",
        "aspect_ratio": "16:9",
        "resolution": "360p",
        "duration": "15s",
    },
)

with open("draft.mp4", "wb") as f:
    f.write(base64.b64decode(draft.output_video.data))

print(draft.id)

Edit by passing the draft ID as previous_interaction_id. Each turn produces a new video and preserves the parts of the scene your prompt does not mention.

edit = client.interactions.create(
    model="gemini-omni-1.2-flash",
    previous_interaction_id=draft.id,
    input="Change the lighting to a darker blue evening tone. Keep everything else the same.",
)

with open("edit.mp4", "wb") as f:
    f.write(base64.b64decode(edit.output_video.data))

One difference matters. The API has no separate upscale step for an existing clip. Its resolution values include 1080p and 4K, and Google describes both as upscaled output, but you choose them in response_format at generation time. So on the API, the draft low rule means proving the prompt at 360p first, then spending on a high resolution generation of the take you want, while in Flow you upscale the keeper itself. For clips above 720p, which the docs place over 4 MB, set delivery to uri in response_format and download from the returned address instead of reading base64 data. And leave store at its default if you plan to edit later, because the docs warn that store set to false makes a clip unavailable for later turns through previous_interaction_id.

Verification

Play the downloaded file outside Flow, in a plain player, from the first frame to the last. Confirm four readings from the file itself. The duration reads 15 seconds. The dimensions read as the upscaled size you chose, 1920 by 1080 for a landscape 1080p file. The sound plays, with no mute track and no added dialogue. And the four checks from Step 4 still pass at full size, with the lamp stable, the switch action clean, and no jump cut.

Then check the spend. Add the draft, each edit, and the upscale, and compare the total with your Flow credit balance or your API billing report. A clean first run in Flow with one edit costs 20 plus 20 plus 5, which is 45 credits. If your total is far above that, the usual cause is an output count above 1 or an edit that ran at 720p.

Troubleshooting

ProblemLikely causeFix
The length stops at 10 seconds in FlowYour account has no Google AI plan, or the rollout has not reached itSubscribe, or use the Vids route in Next Steps, and check the model settings again
Credits fell far faster than the maths in Step 3The output count was above 1, or edits ran at 720pSet outputs to 1, draft and edit at 360p, and read the live cost in Settings before each generation
An edit changed the whole scene instead of one detailThe edit prompt redescribed the scene or asked for several changes at onceSplit the work into one change per turn and end each prompt with Keep everything else the same
The picture holds but the words inside it are wrongText rendering inside generated video is still a weak spot for product names and offersKeep text out of the prompt and add the words as a text layer in an editor such as Google Vids
The API returns an invalid argument error on durationThe duration was over 15 seconds, or two frame interpolation was asked for above 10 secondsSet duration between 3s and 15s, and keep first and last frame work at 10 seconds or under
A later edit cannot find the first clip on the APIThe first call ran with store set to falseGenerate again with store left at its default, then pass that interaction ID into the edit call
Editing an uploaded video fails in your regionThe API guide lists editing or extending uploaded videos as unavailable in the European Economic Area, Switzerland, and the United KingdomEdit a clip the model generated instead, which the guide lists as supported in those regions
Speech sounds flat or the lips driftDialogue is a claimed strength of 1.2, not a promise for every sceneShorten the line, use one speaker per beat, and judge the result in the draft before you spend on size

Next Steps

When the clip needs to live inside a larger piece, take it to Google Vids. Google says anyone with a Google account or a Workspace subscription can generate up to three 15 second videos per month in Vids at no cost, at vids.new, and Vids gives you a timeline where titles, music, and narration sit beside the generated clip. That timeline is also the safe home for any words the audience must read exactly.

When 15 seconds is not enough, Extend is the honest route rather than a new prompt that hopes for continuity. On the API, extension adds 3 to 10 seconds per turn up to a total of 30 seconds, using the last 10 seconds of the clip as context. In Flow, Extend is a subscriber feature on Omni Flash 1.2. Either way, finish your edits before you extend, and name any character or object from the early frames again in the extension prompt if it must return.

And keep the habit this tutorial is really about. Draft cheap, judge hard, edit in words, and spend on size only at the end. That habit survives every model release, including the one that will replace this one. Our look at what happens when an AI video aims at an epic is a useful reminder of what scale alone never fixes.

Costs, limits, and commands checked against the Google launch post, the Google Cloud launch post, the Gemini API Omni guide, and the Flow credits page, November 6, 2026. This workflow was verified against those documents and was not run with a paid Flow plan or a billed API key in this session, so confirm the live cost in Flow Settings, as Step 2 directs, before your first generation.

Sources

  • Google, Gemini Omni 1.2 Flash: 15 second video and lower pricing, November 5, 2026. Primary source for the 15 second limit, the draft and upscale workflow, conversational editing, reference following, speech and camera claims, the areas still in development, and the 0.07 dollar per second price at 720p.
  • Google Cloud, Gemini Omni 1.2 Flash now generally available. Source for general availability on Google Cloud, the 30 percent price cut, upscaling from drafts to 1080p or 4K, the SynthID watermark, and the note that audio references sit behind allowlisting.
  • Google AI for Developers, Generate and edit videos with Gemini Omni Flash. Source for the model ID, the Interactions API code in this tutorial, duration and resolution values in response_format, stateful editing through previous_interaction_id, the store warning, regional limits, and the prompt guide points on timing, simple edit prompts, and negative wording.
  • Google Support, Manage your Google Flow credits. Source for the Flow credit rates per second at 360p and 720p, the subscriber gate on seconds 11 to 15, Extend, and upscaling, the 1080p and 4K upscale charges, and the warning that limits can change at any time.
  • Google, Create longer AI videos with Omni 1.2 in Google Vids, November 5, 2026. Source for the Vids route, three 15 second videos per month at no cost with a Google account or Workspace subscription, and the vids.new address.
  • Hero and body images: Dirty Static, generated in house style
β– 

END OF TRANSMISSION

Stay curious. Question everything.

CONTINUE THE DESCENT

MORE FROM DIRTY STATIC β†˜