Skip to main content
POST
Gemini Omni Flash
This page covers the two Omni models whose length is decided by the model: 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

A successful submission returns a 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.
See Submit Task for 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_id are 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 or ref_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
The generated video is returned in 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.