Skip to main content
POST
Omni-Flash-Ext
omni-flash-ext is the Omni model whose length you control: duration is 4, 6, 8 or 10 seconds, output runs from 360p to 4K, and the input can be a prompt alone, one first-frame image, 1 or 3 reference images fused into one scene, or one reference video of up to 10 seconds used as a motion reference (optionally with images as identity or composition references). When the model should pick the length itself, or you want to keep editing the same clip over several rounds, use Gemini Omni Flash.

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.

Request parameters

string
required
Must be omni-flash-ext.
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, image_urls makes it image-to-video or reference fusion, and video_urls uses a reference video as motion reference.
string
required
The video description: scene, subject, action, setting, camera movement and visual style.
integer
default:"6"
Clip length in seconds: 4, 6, 8 or 10.Do not send this field together with video_urls — the reference video determines the length.
string
default:"720p"
Output resolution: 360p, 720p, 1080p or 4k, case-insensitive.
string
default:"16:9"
Frame ratio: 16:9 landscape or 9:16 portrait. With video_urls, the output usually follows the reference video’s ratio.
string[]
Reference image URLs, publicly accessible. Send none, one, or three; how the count maps to generation_type is under “Limits”.It can be combined with video_urls: the images act as identity or composition references while the video acts as the motion reference.
string[]
Reference video URLs, publicly downloadable direct links. At most one clip, up to 10 seconds. Do not send duration alongside it.
string
How images are used: frame (exactly 1) or reference (1 or 3).
See Submit Task for callback_url, callback_events, Prefer: wait, Idempotency-Key, and the maximum-cost header. This model does not support seed, first_frame_image, last_frame_image or ref_task_id; a first frame is expressed as generation_type: "frame" with one image in image_urls. Any other parameter returns 400 and is not billed.

Limits

  • One video per task; 0, 1 or 3 images (2 images are rejected upstream).
  • generation_type=frame takes exactly one image as the first frame.
  • generation_type=reference takes 1 or 3 reference images.
  • With a reference video duration cannot be sent (omit it); at most one video of ≤ 10 s, billed per second of the reference video.

Pricing

Without a reference video, billing is a whole-clip price by resolution × duration: resolution and duration are the only two billing dimensions, every combination of the four resolutions and four durations has its own price, and the cost of a call is known before you submit it. Reference images cost nothing extra. With a reference video (video_urls) the shape changes: billing runs per second of the reference video and the whole-clip price is not charged. Each resolution tier has its own per-second rate, and a reference video may be at most 10 seconds. How reference-video seconds are rounded is covered in Video Generation Overview. Submitting a task places a hold; 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.