Omni Video Series
Omni-Flash-Ext
The fixed-duration Omni video model: text-to-video, first-frame or three-image references, and reference-video rework
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, three reference images, or a reference clip. 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
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, and video_urls reworks an existing clip.string
required
The video description. The more specific the scene, subject, action, setting, camera movement and visual style, the steadier the result.
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).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=frametakes exactly one image as the first frame.generation_type=referencetakes 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
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.