Gemini Omni 1.2 Flash API
Generate Gemini Omni 1.2 Flash videos from your own code. Five endpoints cover text-to-video, image-to-video (first and optional last frame), reference-to-video, video edit and video extend, any whole-second duration from 3 to 15 seconds with native audio, from 360p drafts up to 4K. Several providers resell this model at very different prices; every request is priced across them and runs on the cheapest one that supports your settings.
57% less than the priciest provider (7 compared). Same model, same output.
As of , Gemini Omni 1.2 Flash costs from $0.02 per second on Scenetra, billed at provider cost with no markup. Each run is priced across 15 providers and runs on the cheapest one that supports your settings.
- 360p
- $0.02/s
- 720p
- $0.045/s
- 1080p
- $0.05/s
- 4K
- $0.11/s
Quickstart
Async by design: submit a generation, get a run id back instantly, poll until it completes (or pass a callbackUrl). Each mode is its own endpoint.
Gemini Omni 1.2 Flash Text to Video API
1 — Start a generation
curl -X POST https://app.scenetra.com/api/v1/generate/gemini-omni-1.2-flash-t2v \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt":"A street musician plays violin under a bridge at dusk, the melody echoing, light rain, slow push-in","duration":"10","resolution":"720p"}'Response (202)
{
"runId": "run_abc123",
"status": "PENDING",
"model": "gemini-omni-1.2-flash-t2v",
"estimatedCredits": 360,
"statusUrl": "/api/v1/runs/run_abc123"
}2 — Poll until COMPLETED (every 2-5 seconds)
curl https://app.scenetra.com/api/v1/runs/run_abc123 \
-H "Authorization: Bearer YOUR_API_KEY"Response
{
"runId": "run_abc123",
"status": "COMPLETED",
"progress": { "completed": 1, "total": 1 },
"outputs": [
{ "type": "video", "url": "https://images.scenetra.com/..." }
],
"error": null,
"estimatedCredits": 360
}Request fields
| Field | Type | Description | Default |
|---|---|---|---|
| prompt* | string | Describe the scene, action, camera and style, and the audio: dialogue, music and sound effects are rendered natively and directed through the prompt. | — |
| duration | string | Length of the video in seconds (3-15; up to 10 with a last frame). Billed per second.3 · 4 · 5 · 6 · 7 · 8 · 9 · 10 · 11 · 12 · 13 · 14 · 15 | 8 |
| resolution | string | 360p is a fast, cheap draft; 720p is native; 1080p and 4k upscale the render.360p · 720p · 1080p · 4k | 720p |
| aspect_ratio | string | 16:9 landscape or 9:16 vertical.16:9 · 9:16 | 16:9 |
| callbackUrl | string (https URL) | Optional. When the run finishes (completed or failed), we POST the final run status to this URL — same shape as the poll response, plus model, params, and chargedCredits. Best-effort; polling remains the source of truth. | |
Unknown fields are rejected with a helpful 400. Media fields take https URLs. There is no provider parameter — every run is routed to the cheapest capable provider automatically.
Gemini Omni 1.2 Flash Image to Video API
1 — Start a generation
curl -X POST https://app.scenetra.com/api/v1/generate/gemini-omni-1.2-flash-i2v \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt":"She turns to camera and laughs, wind in her hair, waves crashing","image":"https://example.com/first-frame.jpg","duration":"8"}'Response (202)
{
"runId": "run_abc123",
"status": "PENDING",
"model": "gemini-omni-1.2-flash-i2v",
"estimatedCredits": 360,
"statusUrl": "/api/v1/runs/run_abc123"
}2 — Poll until COMPLETED (every 2-5 seconds)
curl https://app.scenetra.com/api/v1/runs/run_abc123 \
-H "Authorization: Bearer YOUR_API_KEY"Response
{
"runId": "run_abc123",
"status": "COMPLETED",
"progress": { "completed": 1, "total": 1 },
"outputs": [
{ "type": "video", "url": "https://images.scenetra.com/..." }
],
"error": null,
"estimatedCredits": 360
}Request fields
| Field | Type | Description | Default |
|---|---|---|---|
| prompt* | string | Describe the scene, action, camera and style, and the audio: dialogue, music and sound effects are rendered natively and directed through the prompt. | — |
| image* | string (https URL) | First frame (https URL). The video starts from this image. | — |
| last_image | string (https URL) | Optional last frame (https URL). The video moves from the first frame to this one; duration up to 10s. | — |
| duration | string | Length of the video in seconds (3-15; up to 10 with a last frame). Billed per second.3 · 4 · 5 · 6 · 7 · 8 · 9 · 10 · 11 · 12 · 13 · 14 · 15 | 8 |
| resolution | string | 360p is a fast, cheap draft; 720p is native; 1080p and 4k upscale the render.360p · 720p · 1080p · 4k | 720p |
| aspect_ratio | string | 16:9 landscape or 9:16 vertical.16:9 · 9:16 | 16:9 |
| callbackUrl | string (https URL) | Optional. When the run finishes (completed or failed), we POST the final run status to this URL — same shape as the poll response, plus model, params, and chargedCredits. Best-effort; polling remains the source of truth. | |
Unknown fields are rejected with a helpful 400. Media fields take https URLs. There is no provider parameter — every run is routed to the cheapest capable provider automatically.
Gemini Omni 1.2 Flash Reference to Video API
1 — Start a generation
curl -X POST https://app.scenetra.com/api/v1/generate/gemini-omni-1.2-flash-ref2v \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt":"The woman from the first image presents the perfume from the second in a sunlit bedroom, says \"I'm obsessed\"","reference_images":["https://example.com/person.jpg","https://example.com/product.jpg"],"duration":"10"}'Response (202)
{
"runId": "run_abc123",
"status": "PENDING",
"model": "gemini-omni-1.2-flash-ref2v",
"estimatedCredits": 360,
"statusUrl": "/api/v1/runs/run_abc123"
}2 — Poll until COMPLETED (every 2-5 seconds)
curl https://app.scenetra.com/api/v1/runs/run_abc123 \
-H "Authorization: Bearer YOUR_API_KEY"Response
{
"runId": "run_abc123",
"status": "COMPLETED",
"progress": { "completed": 1, "total": 1 },
"outputs": [
{ "type": "video", "url": "https://images.scenetra.com/..." }
],
"error": null,
"estimatedCredits": 360
}Request fields
| Field | Type | Description | Default |
|---|---|---|---|
| prompt* | string | Describe the scene, action, camera and style, and the audio: dialogue, music and sound effects are rendered natively and directed through the prompt. | — |
| reference_images | string[] (https URLs) | Up to 6 reference images (some providers accept 10) for characters, products, style or scene. | — |
| reference_videos | string[] (https URLs) | Up to 3 short reference clips, 3 seconds or less each (only 1 for videos over 10 seconds). Their audio is ignored. | — |
| duration | string | Length of the video in seconds (3-15; up to 10 with a last frame). Billed per second.3 · 4 · 5 · 6 · 7 · 8 · 9 · 10 · 11 · 12 · 13 · 14 · 15 | 8 |
| resolution | string | 360p is a fast, cheap draft; 720p is native; 1080p and 4k upscale the render.360p · 720p · 1080p · 4k | 720p |
| aspect_ratio | string | 16:9 landscape or 9:16 vertical.16:9 · 9:16 | 16:9 |
| callbackUrl | string (https URL) | Optional. When the run finishes (completed or failed), we POST the final run status to this URL — same shape as the poll response, plus model, params, and chargedCredits. Best-effort; polling remains the source of truth. | |
Unknown fields are rejected with a helpful 400. Media fields take https URLs. There is no provider parameter — every run is routed to the cheapest capable provider automatically.
Gemini Omni 1.2 Flash Video Edit API
1 — Start a generation
curl -X POST https://app.scenetra.com/api/v1/generate/gemini-omni-1.2-flash-edit \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt":"Turn the daytime street into a rainy night with neon reflections. Keep everything else the same.","video_url":"https://example.com/clip.mp4","resolution":"720p"}'Response (202)
{
"runId": "run_abc123",
"status": "PENDING",
"model": "gemini-omni-1.2-flash-edit",
"estimatedCredits": 360,
"statusUrl": "/api/v1/runs/run_abc123"
}2 — Poll until COMPLETED (every 2-5 seconds)
curl https://app.scenetra.com/api/v1/runs/run_abc123 \
-H "Authorization: Bearer YOUR_API_KEY"Response
{
"runId": "run_abc123",
"status": "COMPLETED",
"progress": { "completed": 1, "total": 1 },
"outputs": [
{ "type": "video", "url": "https://images.scenetra.com/..." }
],
"error": null,
"estimatedCredits": 360
}Request fields
| Field | Type | Description | Default |
|---|---|---|---|
| prompt* | string | Describe the scene, action, camera and style, and the audio: dialogue, music and sound effects are rendered natively and directed through the prompt. | — |
| video_url* | string (https URL) | Source video to edit (https URL, up to 15 seconds). Output keeps its length and framing; billed per second of this video. | — |
| resolution | string | 360p is a fast, cheap draft; 720p is native; 1080p and 4k upscale the render.360p · 720p · 1080p · 4k | 720p |
| callbackUrl | string (https URL) | Optional. When the run finishes (completed or failed), we POST the final run status to this URL — same shape as the poll response, plus model, params, and chargedCredits. Best-effort; polling remains the source of truth. | |
Unknown fields are rejected with a helpful 400. Media fields take https URLs. There is no provider parameter — every run is routed to the cheapest capable provider automatically.
Gemini Omni 1.2 Flash Video Extend API
1 — Start a generation
curl -X POST https://app.scenetra.com/api/v1/generate/gemini-omni-1.2-flash-extend \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt":"The camera keeps pulling back to reveal the whole city skyline at night","video_url":"https://example.com/clip.mp4","duration":"8"}'Response (202)
{
"runId": "run_abc123",
"status": "PENDING",
"model": "gemini-omni-1.2-flash-extend",
"estimatedCredits": 533,
"statusUrl": "/api/v1/runs/run_abc123"
}2 — Poll until COMPLETED (every 2-5 seconds)
curl https://app.scenetra.com/api/v1/runs/run_abc123 \
-H "Authorization: Bearer YOUR_API_KEY"Response
{
"runId": "run_abc123",
"status": "COMPLETED",
"progress": { "completed": 1, "total": 1 },
"outputs": [
{ "type": "video", "url": "https://images.scenetra.com/..." }
],
"error": null,
"estimatedCredits": 533
}Request fields
| Field | Type | Description | Default |
|---|---|---|---|
| prompt* | string | Describe the scene, action, camera and style, and the audio: dialogue, music and sound effects are rendered natively and directed through the prompt. | — |
| video_url* | string (https URL) | Source video to continue (https URL, up to 15 seconds). | — |
| duration | string | Seconds of new video to add (3-10). Billed on the new seconds.3 · 4 · 5 · 6 · 7 · 8 · 9 · 10 | 8 |
| resolution | string | 360p is a fast, cheap draft; 720p is native; 1080p and 4k upscale the render.360p · 720p · 1080p · 4k | 720p |
| callbackUrl | string (https URL) | Optional. When the run finishes (completed or failed), we POST the final run status to this URL — same shape as the poll response, plus model, params, and chargedCredits. Best-effort; polling remains the source of truth. | |
Unknown fields are rejected with a helpful 400. Media fields take https URLs. There is no provider parameter — every run is routed to the cheapest capable provider automatically.
Good to know
Billing
Runs bill your account credits at provider cost with 0% markup. The submit response includes the credit estimate; failed generations are refunded automatically. Add ?dryRun=1 to get the estimate without running anything.
Errors
Errors are always { "error": { "code", "message" } } with stable codes: unauthorized, model_not_available, invalid_parameter, insufficient_credits, rate_limited. A failed run is not an HTTP error — poll responses report status: "FAILED" with the reason.
Gemini Omni 1.2 Flash API FAQ
Which endpoints does the Gemini Omni 1.2 Flash API have?+
Five: gemini-omni-1.2-flash-t2v (text), -i2v (first frame, optional last frame), -ref2v (reference images and short clips), -edit (change an existing video with one instruction) and -extend (add 3-10 seconds to a clip). Every mode accepts 360p, 720p, 1080p or 4k.
How are edit and extend billed?+
Edit is billed on the length of your source video (up to 15 seconds), since the output keeps that length. Extend is billed on the new seconds you ask for; some providers also add a small per-second fee for the source clip, and routing accounts for it.
Is this the official Google API?+
No. Scenetra routes each call to a provider that serves Gemini Omni 1.2 Flash (the same model and output) and bills you in Scenetra credits from one balance.
How much does the Gemini Omni 1.2 Flash API cost?+
As of November 9, 2026, Gemini Omni 1.2 Flash costs from $0.02 per second on Scenetra, billed at provider cost with no markup. Each run is priced across 15 providers and runs on the cheapest one that supports your settings. Rates: 360p $0.02/s; 720p $0.045/s; 1080p $0.05/s; 4K $0.11/s. With default settings (720p, 8 seconds), a text to video run is estimated at about 360 credits. The submit response returns the estimate for your exact settings, and adding ?dryRun=1 prices a request without running it.
Which provider runs my request?+
The cheapest one that supports your settings, chosen per request. There is no provider parameter: the same Gemini Omni 1.2 Flash request is priced across every provider we route to and runs on the lowest quote.
Do failed generations cost credits?+
No. Credits are reserved when you submit and refunded automatically if the run fails. A failed run is not an HTTP error: polling returns status FAILED with the reason.
Do I have to poll, or can I get a webhook?+
Both work. Pass callbackUrl and we POST the final run status to it when the run completes or fails. Delivery is best-effort, so polling GET /api/v1/runs/{runId} remains the source of truth.