Omni Video Series
Gemini Omni Flash
The model-chosen-length Gemini Omni video models: text, reference images or a reference video, with multi-turn editing
POST
Gemini Omni Flash
This page covers the two Omni models whose length is decided by the model:
A successful submission returns a
See Submit Task for
The generated video is returned in
gemini-omni-1.1-flash and gemini-omni-flash-preview. They share one request shape and one billing model (resolution tier × seconds); they differ in resolution tiers, reference-material limits, and which image parameters they accept — switching between them means changing model and nothing else. When the clip has to land on exactly 4, 6, 8 or 10 seconds, use Omni-Flash-Ext.
Quick start
task_id. Retrieve the result with GET /v1/tasks/{task_id}, wait inline with Prefer: wait, or configure a webhook.
Working in rounds: submit one generation, take its task_id, and pass it as ref_task_id on the next request to extend or edit that result without re-uploading anything. ref_task_id and video_urls are mutually exclusive — send one or the other.
Request parameters
string
required
Either
gemini-omni-1.1-flash or gemini-omni-flash-preview.string
default:"generate"
Value
generate; it may be omitted. The mode is not selected with action but by what you send: prompt alone is text-to-video, images make it image-to-video, and video_urls or ref_task_id reworks an existing video.string
required
A scene description for text-to-video; an action, style or editing instruction for image-to-video and video rework. Keep edit instructions short, and add “keep everything else the same” when changing only one thing.
string
default:"720p"
Output resolution, case-insensitive.
gemini-omni-1.1-flash: 360p, 720p, 1080p, 4k.gemini-omni-flash-preview: 720p only.string
default:"16:9"
Frame ratio:
16:9 landscape or 9:16 portrait. With video_urls, the output follows the reference video’s ratio.string[]
Reference image URLs, publicly accessible. One image is used as the starting frame by default; several are used as multi-subject or style references — describe each image’s role and how they interact in
prompt.Limits: 10 images in total for gemini-omni-1.1-flash (first and last frames included), 16 for gemini-omni-flash-preview.string
First-frame image URL. On its own it becomes the opening frame; together with
last_frame_image it produces a transition between the two.gemini-omni-1.1-flash only.string
Last-frame image URL, which must be sent together with
first_frame_image. Use the same frame ratio for both images and match it to aspect_ratio.gemini-omni-1.1-flash only.string[]
URLs of the video to edit or extend, as publicly downloadable direct links. At most one clip.Length limit: 10 seconds for
gemini-omni-1.1-flash, 24 seconds for gemini-omni-flash-preview.string
Our task id to extend or conversationally edit (translated to the upstream task id); mutually exclusive with
video_urls.array
Role-tagged images
{url, role} with role first_frame / last_frame / reference; use either this or first_frame_image / last_frame_image.gemini-omni-1.1-flash only.object
Generation-intent object; currently only
task: text_to_video | image_to_video | reference_to_video | edit | extend (inferred when omitted).gemini-omni-1.1-flash only.callback_url, callback_events, Prefer: wait, Idempotency-Key, and the maximum-cost header.
Neither model takes duration: the model decides the length from the content, typically 3–10 seconds, and pacing is steered with natural language in prompt. seed is not supported either. Any other parameter returns 400 and is not billed.
Limits
- One video per task; at most one reference video.
- A reference video and
ref_task_idare mutually exclusive.
Pricing
Billing runs on resolution tier × output seconds: each resolution tier has its own per-second rate, and the seconds are those of the clip the model actually produced. Requests carrying a reference video orref_task_id are billed the same way, on output seconds; reference videos and reference images cost nothing extra.
Because the length is the model’s choice and is unknown at submission, the hold is placed at the model’s maximum length (10 seconds); the task then settles on the actual generated result and the difference is released.
You are only billed for a successfully generated video. Failed and cancelled tasks, and tasks that return no usable video, are refunded in full. What a call actually cost is the cost field on the task response — an integer quota at 500,000 quota = 1 USD, not dollars.
Per-model rates are in
price_config on GET /v1/models and in the console’s Model Market.This section describes the billing dimensions only; it carries no amounts.Response
Completed task
result.videos, where url is an array and expires_at is the link’s expiry as a Unix timestamp in seconds. See Query Task Status for every field.
Available models
Actions, limits and billing are identical on both models, and both accept
ref_task_id.