APIMODELSAPIMODELS

Omni Flash (Gemini) video API

Gemini-powered unified video generator — one slug covers text-to-video, image-to-video AND video editing: send a prompt for T2V; attach 1 or 3 reference images for single-image animation / multi-image fusion (2 images is NOT supported upstream); or pass a reference video (10s or shorter) for video rewriting, with reference images riding along as identity refs. 720p / 1080p / 4K, 6 / 8 / 10s, optional 16:9 or 9:16. Billed per second: 720p $0.06/s, 1080p $0.065/s, 4k $0.12/s — text/image-to-video is rate × duration, video editing is billed on the reference clip length. For reusable voice / consistent character features, see Omni Flash (Stable), gemini-omni-video.

Newer generation available — Gemini Omni 1.1 Flash: first/last-frame control, up to 7 reference images, video editing and real 4K, from $0.07/s (30% below the official rate). Gemini Omni 1.1 Flash API docs · model page & playground

Read these two upstream limits first

  • Image-to-video takes exactly 1 OR 3 reference images — 2 is rejected. That is the upstream gemini-omni-flash model, not a check we added. With exactly two assets, merge them into one, pad to three, or switch to gemini-omni-video (up to 7).
  • A reference video must be 10 seconds or shorter (Google upstream limit, BOTH models). A longer source is rejected at task creation with a 400 "Reference video must be 10 seconds or shorter" — no task queued, no credits frozen. The start / ends fields in video_list trim the take; they do NOT rescue an over-length source.

Which of the two models

modelBillingWhat differs
gemini-omni-flashPer secondT2V / I2V (1 or 3 refs) / video edit; prompt up to 2048 chars
gemini-omni-videoPer callStable: more affordable and the full suite — up to 7 reference images, video input, voices, characters, seed; prompt up to 20000 chars

Models and pricing

NameAPIDurationPriceNote
Omni Flash · generategemini-omni-flash6 / 8 / 10s720p $0.06/s · 1080p $0.065/s · 4k $0.12/sPer second × chosen duration
Omni Flash · video editgemini-omni-flashfollows input (≤10s)720p $0.06/s · 1080p $0.065/s · 4k $0.12/sPer second of the reference clip
Omni Flash (Stable) · 720p / 1080pgemini-omni-video6 / 8 / 10s$0.4 / $0.5 / $0.6Per call (full suite)
Omni Flash (Stable) · 4Kgemini-omni-video6 / 8 / 10s$0.8 / $0.9 / $1.0Per call
Omni Flash (Stable) · video inputgemini-omni-videoauto720p/1080p $0.8 · 4K $1.2Flat by resolution when video_list is passed

Create a task

POST /api/v1/video/generations — async: create, then poll the same endpoint, same flow as the rest of the video family.

Text-to-video versus image-to-video is decided by images alone: omit it and the request routes to text-to-video, send 1 or 3 and it routes to image-to-video. The model string never changes.

# Omni Flash — one slug for both T2V and I2V. The backend routes to
# /gemini-omni-flash/text-to-video when no images are provided, and to
# /gemini-omni-flash/image-to-video when 1 or 3 images are present.
# (2 images is NOT supported by the upstream model.)
curl -X POST https://api.apimodels.app/v1/video/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-omni-flash",
    "prompt": "a beautiful sunset over the ocean with seagulls flying",
    "duration": "6",
    "resolution": "720p",
    "aspect_ratio": "16:9"
  }'

# Image-to-video — attach 1 or 3 reference images
curl -X POST https://api.apimodels.app/v1/video/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-omni-flash",
    "prompt": "make the character smile and slowly turn around, cinematic camera motion",
    "duration": "6",
    "resolution": "720p",
    "aspect_ratio": "16:9",
    "images": ["https://example.com/reference.jpg"]
  }'

# Poll status (shared endpoint with the rest of the video family)
curl "https://api.apimodels.app/v1/video/generations?task_id=TASK_ID" \
  -H "Authorization: Bearer YOUR_API_KEY"

Request parameters

FieldRequiredTypeDescription
modelYesstring"gemini-omni-flash" (per-second) or "gemini-omni-video" (Stable — per-call, more affordable, full suite)
promptYesstringScene description. Max 2048 chars for gemini-omni-flash, 20000 for gemini-omni-video
durationYesstringDuration in seconds: "4" / "6" / "8" / "10". Ignored when a reference video is passed — output length follows the input video
resolutionYesstringResolution: "720p" / "1080p" / "4k"
aspect_ratioNostring"16:9" or "9:16", optional
imagesNoarrayReference images (URL or base64). gemini-omni-flash: 1 OR 3 (not 2). gemini-omni-video: up to 7. Omit for text-to-video
video_listNoarrayVideo-to-video input, max 1: [{ url, start, ends }]. Source video must be 10s or shorter (hard upstream model limit — longer videos are rejected at creation with a 400; the start/ends trim does NOT rescue a longer source). gemini-omni-flash also accepts a video_url string shorthand (10MB mp4 max) and allows images alongside as identity refs
audio_idsNoarray(gemini-omni-video only) Voice IDs (max 3) created via POST /api/v1/omni/audio
character_idsNoarray(gemini-omni-video only) Character IDs (max 3) created via POST /api/v1/omni/character
seedNonumber(gemini-omni-video only) Random seed [0, 2147483647] for reproducibility
callback_urlNostringWebhook URL called when task completes

Billing and limits

  • Async endpoint: create-task + poll, same flow as other video models.
  • Two models: gemini-omni-flash (per-second) and gemini-omni-video (Stable — per-call, more affordable, supports video input / voice / character).
  • gemini-omni-flash I2V supports exactly 1 OR 3 references (2 rejected); gemini-omni-video allows up to 7.
  • Reference videos must be 10 seconds or shorter (Google upstream limit, BOTH models): longer videos are rejected at task creation with a 400 "Reference video must be 10 seconds or shorter" — no task queued, no credits frozen.
  • (gemini-omni-video) Quota: images×1 + videos×2 + character_ids×1 ≤ 7; with video_list, billing is flat by resolution.
  • Creating voices/characters (/api/v1/omni/audio, /api/v1/omni/character) is free — billing happens only on video generation.
  • Result URL auto-deleted after 30 days — download promptly; generation ~30-120s, poll every 10s.

Related

FAQ

How much does the Gemini Omni Flash video API cost?

gemini-omni-flash on apimodels.app is billed per second: 720p $0.06/s, 1080p $0.065/s and 4k $0.12/s. Text-to-video and image-to-video are the rate times the duration you choose, so a 6-second 720p clip is $0.36; video editing is billed on the actual length of the reference clip instead. The Stable model gemini-omni-video is billed per call: $0.4 / $0.5 / $0.6 for 6 / 8 / 10s at 720p or 1080p, $0.8 / $0.9 / $1.0 at 4K, and a flat $0.8 (720p/1080p) or $1.2 (4K) when a video input is passed.

Why does Omni Flash reject 2 reference images?

gemini-omni-flash accepts exactly 1 OR 3 reference images in the images array — 2 is not supported by the upstream model, so it is rejected. One image animates that image, three fuse together. If you have exactly two assets, merge them into a single image, pad up to three, or switch to the Stable model gemini-omni-video, which takes up to 7 reference images. Omitting images entirely routes the same request to text-to-video.

Can I edit an existing video with Gemini Omni Flash?

Yes. Pass video_list with at most one entry ([{ url, start, ends }]) and describe the change in the prompt; gemini-omni-flash also accepts a video_url string shorthand for an mp4 of 10MB or less, and reference images can ride along as identity refs. The source clip must be 10 seconds or shorter — a hard Google upstream limit that applies to both models — and a longer file is rejected at task creation with a 400 "Reference video must be 10 seconds or shorter", with no task queued and no credits frozen. The start/ends fields trim the take but do not rescue an over-length source. With a reference video the duration parameter is ignored: output length follows the input, and billing follows the reference clip length.

What is the difference between gemini-omni-flash and gemini-omni-video?

gemini-omni-flash is billed per second and covers text-to-video, image-to-video with 1 or 3 references, and video editing, with a prompt limit of 2048 characters. gemini-omni-video is the Stable model: billed per call, more affordable, and the full suite — up to 7 reference images, video input, reusable voice IDs (audio_ids, max 3) and consistent character IDs (character_ids, max 3) created via POST /api/v1/omni/audio and /api/v1/omni/character, an optional seed, and a 20000-character prompt limit. Its per-job quota is images x1 + videos x2 + characters x1 no more than 7. Creating voices and characters is free; you are only billed on video generation.

How do I call the Omni Flash API, and what resolutions and durations are supported?

POST to https://api.apimodels.app/v1/video/generations with model "gemini-omni-flash", a prompt, duration ("4" / "6" / "8" / "10") and resolution ("720p" / "1080p" / "4k"); aspect_ratio ("16:9" or "9:16") is optional. It is async: take the returned taskId and poll the same endpoint with ?task_id=, or supply callback_url. Generation takes roughly 30-120 seconds, so poll about every 10 seconds. Result URLs are auto-deleted after 30 days, so download or re-host anything you need to keep.