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.
| model | Billing | What differs |
|---|---|---|
| gemini-omni-flash | Per second | T2V / I2V (1 or 3 refs) / video edit; prompt up to 2048 chars |
| gemini-omni-video | Per call | Stable: cheaper and the full suite — up to 7 reference images, video input, voices, characters, seed; prompt up to 20000 chars |
| Name | API | Duration | Price | Note |
|---|---|---|---|---|
| Omni Flash · generate | gemini-omni-flash | 6 / 8 / 10s | 720p $0.06/s · 1080p $0.065/s · 4k $0.12/s | Per second × chosen duration |
| Omni Flash · video edit | gemini-omni-flash | follows input (≤10s) | 720p $0.06/s · 1080p $0.065/s · 4k $0.12/s | Per second of the reference clip |
| Omni Flash (Stable) · 720p / 1080p | gemini-omni-video | 6 / 8 / 10s | $0.4 / $0.5 / $0.6 | Per call (full suite) |
| Omni Flash (Stable) · 4K | gemini-omni-video | 6 / 8 / 10s | $0.8 / $0.9 / $1.0 | Per call |
| Omni Flash (Stable) · video input | gemini-omni-video | auto | 720p/1080p $0.8 · 4K $1.2 | Flat by resolution when video_list is passed |
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://apimodels.app/api/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://apimodels.app/api/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://apimodels.app/api/v1/video/generations?task_id=TASK_ID" \
-H "Authorization: Bearer YOUR_API_KEY"| Field | Required | Type | Description |
|---|---|---|---|
| model | Yes | string | "gemini-omni-flash" (per-second) or "gemini-omni-video" (Stable — per-call, cheaper, full suite) |
| prompt | Yes | string | Scene description. Max 2048 chars for gemini-omni-flash, 20000 for gemini-omni-video |
| duration | Yes | string | Duration in seconds: "4" / "6" / "8" / "10". Ignored when a reference video is passed — output length follows the input video |
| resolution | Yes | string | Resolution: "720p" / "1080p" / "4k" |
| aspect_ratio | No | string | "16:9" or "9:16", optional |
| images | No | array | Reference images (URL or base64). gemini-omni-flash: 1 OR 3 (not 2). gemini-omni-video: up to 7. Omit for text-to-video |
| video_list | No | array | Video-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_ids | No | array | (gemini-omni-video only) Voice IDs (max 3) created via POST /api/v1/omni/audio |
| character_ids | No | array | (gemini-omni-video only) Character IDs (max 3) created via POST /api/v1/omni/character |
| seed | No | number | (gemini-omni-video only) Random seed [0, 2147483647] for reproducibility |
| callback_url | No | string | Webhook URL called when task completes |
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.
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.
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.
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, cheaper, 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.
POST to https://apimodels.app/api/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 7 days, so download or re-host anything you need to keep.