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, 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

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, 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).
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.