Skip to main content
Gemini Omni 1.2 Flash is Google’s video generation model: every clip has its own audio track, characters speak the lines you write in the prompt, and output goes up to 1080p. LaoZhang API charges per video, $0.10 at 360p, $0.30 at 720p, and $0.45 at 1080p, for any length from 3 to 10 seconds.

Output of the text-to-video example below: gemini-omni-1.2-flash, 720p, 10 seconds, 16:9. The character speaks the line written in the prompt

Pricing and model choice

Pricing

Gemini Omni 1.2 Flash is billed per video, and resolution alone sets the price: What does not change the price:
  • seconds: any length from 3 to 10 seconds costs the same, so a 10-second 720p clip works out to $0.03 per second.
  • Images: a first frame or reference images cost nothing extra.
  • reasoning_effort and the aspect ratio.
How charges work:
  • You are charged when the task is created, and failed tasks are refunded in full, including tasks blocked by content moderation.
  • Requests rejected at submission with a parameter error are not charged.
  • Each resubmission creates a new task and is charged again, so keep a mapping between your own job ID and the task id.
The usage log shows the actual charge for every task. A 10-second clip costs about 43% of Google’s list price. Google’s Gemini API bills video output per second. The table puts Google’s list price for a 10-second clip next to LaoZhang API’s (checked November 11, 2026; the source is under Related docs and sources):

Choose between video models

As of November 11, 2026, Gemini Omni 1.2 Flash has the lowest price on LaoZhang API for a 10-second 1080p clip ($0.45). At $0.10 per clip, 360p is a cheap way to try prompts in bulk.
  • Characters that speak lines, or 1080p output: use Gemini Omni 1.2 Flash.
  • One continuous clip of 20–60 seconds, continuing an existing video, or ratios such as 1:1 and 4:3: use Muse. It shares the /v1/videos endpoint, so the same token works and you only change the model.
  • 2K, reference video, or reference audio: use MiniMax H3.
The video generation API comparison lists what a 5- or 10-second clip costs on each model and which endpoint it uses.

Sample outputs

These clips are unedited Gemini Omni 1.2 Flash output with the audio track the model generated. Click a clip to play it. Each caption lists the resolution, length, aspect ratio, and prompt. The Muse sample outputs and the MiniMax H3 sample outputs use the same prompts, so you can compare the models scene by scene.

720p, 5 seconds, 16:9. Prompt: A red fox walking through snowy forest at sunrise, cinematic

720p, 10 seconds, 16:9. Prompt: A paper boat drifts down a rainy city gutter, then sails into a small sunny pond

1080p, 10 seconds, 16:9. Prompt: A hot air balloon rises over a valley at dawn, drifts over a river and a village, then lands in a meadow

1080p, 10 seconds, 9:16 portrait. Prompt: A cyclist rides through a coastal town from morning to sunset: market, harbor, cliff road, lighthouse

Before you start

Create a token

Add a token in Token management with these settings: You do not need a Google account, a Gemini API key, or a dedicated video group. A token you already use for Muse works as it is.

How it works

1

Create a task

Call POST /v1/videos with at least model and prompt. The endpoint is asynchronous: it returns a task id within seconds instead of waiting for the video. Save it.
2

Poll the status

Call GET /v1/videos/{id} every 5–10 seconds and read status. Short 360p clips usually finish in 30–60 seconds, a 10-second 720p clip takes about 1 minute, and a 10-second 1080p clip about 1.5–2 minutes.
3

Download the result

When status is completed, download the MP4 from video_url. The download needs no Authorization header.
Keep polling for up to 15 minutes, and do not resubmit while the task is still running.
  • Submitting and polling both return immediately, so you do not need a longer HTTP timeout.
  • Keep checking while status is queued or in_progress.
  • If you stop polling, check the same id again later. Resubmitting creates a new task and charges again.
  • A task still unfinished after 30 minutes is marked failed and refunded in full.

Set up

The cURL examples use jq to read fields from responses (brew install jq on macOS). Set your key and base URL first:

Generate videos

Generate a video from text

A successful request returns a queued task:
All three optional fields have defaults:
  • resolution: 720p when left out. To check a prompt first, send 360p at $0.10 per clip.
  • seconds: a whole number from 3 to 10; 10 when left out.
  • aspect_ratio: 16:9 or 9:16; 16:9 when left out.

Make characters speak dialogue

Write the line directly in prompt, put it in quotation marks, and say who speaks it. The character in the clip then says it aloud. Lines in English, Chinese, Japanese, Korean, and Russian all work, and the example above is written this way. Without a spoken line, the model adds ambient sound and effects that fit the scene. To get a particular sound, name it in the prompt, for example “soft rain and violin in the background”.

Generate a video from an image

Pass one image in image and the clip opens on that picture. The image can be a public URL or a data:image/...;base64, data URL:
To upload a local file, send multipart form data with the image in input_reference:
Do not set Content-Type: application/json when you upload with -F. Each image can be up to 10 MB, in JPEG, PNG, or WebP.

Generate from reference images

Send several images in reference_images and the model puts their people, objects, and settings into one clip. In the prompt, refer to them as “image 1”, “image 2”, and so on, in array order:
  • image and reference_images together can hold at most 6 images. A seventh returns an error.
  • In a multipart upload, the reference image field is reference_images, and you can repeat it.
  • You can send image and reference_images together: image sets the opening shot, and the reference images supply the people or objects that should appear.
  • For the limits on real people, see Content restrictions.

Portrait and 1080p

For a portrait clip, send "aspect_ratio": "9:16". You can also use size to set the resolution and the ratio in one field, for example portrait 1080p:
The values size accepts are listed under Request fields. The price follows the matching resolution tier: 1080x1920 is 1080p, so it costs $0.45.

Poll and download

Get the task

While the video renders, status is in_progress and progress gives a rough percentage:
When it completes, the task carries video_url:
A failed task has status: "failed" and the reason in error.message. Its charge has already been refunded:

Download the video

You can also call GET /v1/videos/{id}/content with your Authorization header; it returns the MP4 file. Video links stay available for 7 days, so download the file and store it yourself if you need it for longer.

Minimal Python client

Requires requests (pip install requests):

API reference

Request fields

How size maps to resolution and aspect ratio: Unsupported input is rejected at submission and not charged:
  • Reference video, reference audio, and a last frame (fields such as video_url and last_frame).
  • 2K and 4K, and any aspect ratio other than 16:9 and 9:16.
  • seconds below 3 or above 10.

Output format

  • Format: MP4 with H.264 video and an AAC audio track, at 24 fps.
  • Size and length match the request. For example, 720p with 9:16 gives 720×1280.
  • The file carries Google’s C2PA content credentials and an invisible SynthID watermark. There is no visible watermark on the picture.

Task status

Content restrictions

The model blocks two kinds of content. A blocked task comes back as failed and is refunded in full:
  • Real people: a real person’s name in the prompt is blocked. The model does not generate real people’s likenesses either, so images such as celebrity photos may be blocked.
  • Sexual content and copyright-protected characters.
Ordinary images of people, such as AI-generated portraits, work normally.

Errors

The table lists each error by where it appears:

FAQ

How much does the Gemini Omni 1.2 Flash API cost per video?

The price depends on resolution: $0.10 per video at 360p, $0.30 at 720p, and $0.45 at 1080p, for any length from 3 to 10 seconds. A 10-second clip costs about 43% of Google’s list price; the comparison is under Pricing.

Do I need a Google account or Gemini API key for Gemini Omni?

No. Call POST /v1/videos with a LaoZhang API token in the default group, with the billing mode set to Usage first.

How long can Gemini Omni 1.2 Flash videos be? Does it do 4K?

One clip runs 3 to 10 seconds, and the highest resolution is 1080p; 2K and 4K are not available. For one continuous clip of 20–60 seconds, use Muse. For 2K, use MiniMax H3.

Do Gemini Omni 1.2 Flash videos have a watermark?

There is no visible watermark on the picture. The file carries Google’s C2PA content credentials and an invisible SynthID watermark, which mark the video as AI-generated.

How long does Gemini Omni 1.2 Flash take to generate a video?

Short 360p clips usually take 30–60 seconds, a 10-second 720p clip about 1 minute, and a 10-second 1080p clip about 1.5–2 minutes. The endpoint is asynchronous: submitting and polling both return immediately, so poll every 5–10 seconds.

How do I switch Muse or Sora 2 code to Gemini Omni 1.2 Flash?

The endpoint is the same, so the create and poll paths stay as they are, and so does your token. Change three things:
  • Set model to gemini-omni-1.2-flash.
  • Set seconds to a value from 3 to 10.
  • Add resolution when you want 360p or 1080p; without it you get 720p.