Pixazo API→Models→Text to Video API→Gemini Omni 1.2
Pixazo API→Models→Text to Video API→Gemini Omni 1.2

Gemini Omni 1.2 Flash 1.2 Flash API: Pricing, Documentation

by Google

Google's Gemini Omni 1.2 Flash is a multimodal video model that handles text-to-video, image-to-video, reference-to-video, and video-to-video editing through a single API. Clip length is selectable from 3 to 15 seconds via the duration parameter; video-to-video edits inherit the source clip's length. Successor to Gemini Omni 1.1 Flash, with stronger character consistency and lip-sync.

Get API Key
Gemini Omni 1.2 Flash API

Models Version

WELCOME BONUS

Get 10% Cashback on Your First Payment (up to $500)

Add funds and get 10% cashback on your first payment (up to $500).

Claim Your Cashback →

Gemini Omni 1.2 Flash API Documentation

Generate a video from a text prompt only. Asynchronous: submit returns a request_id; poll the status endpoint until the request is COMPLETED. Typical generation time is ~36s.

Backed by Google's gemini-omni-1.2-flash.

POST https://gateway.pixazo.ai/gemini-omni-1-2/v1/text-to-video

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Text to Video - Gemini Omni 1.2 Flash

Request Code

POST https://gateway.pixazo.ai/gemini-omni-1-2/v1/text-to-video
Content-Type: application/json
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "prompt": "A golden retriever running through a sunlit meadow, slow motion, cinematic.",
  "aspect_ratio": "16:9"
}
import requests

url = "https://gateway.pixazo.ai/gemini-omni-1-2/v1/text-to-video"
headers = {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
  "prompt": "A golden retriever running through a sunlit meadow, slow motion, cinematic.",
  "aspect_ratio": "16:9"
}

resp = requests.post(url, json=data, headers=headers)
print(resp.json())
const res = await fetch("https://gateway.pixazo.ai/gemini-omni-1-2/v1/text-to-video", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
  },
  body: JSON.stringify({
  "prompt": "A golden retriever running through a sunlit meadow, slow motion, cinematic.",
  "aspect_ratio": "16:9"
})
});
console.log(await res.json());
curl -X POST 'https://gateway.pixazo.ai/gemini-omni-1-2/v1/text-to-video' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  --data-raw '{"prompt": "A golden retriever running through a sunlit meadow, slow motion, cinematic.", "aspect_ratio": "16:9"}'

Output

{
  "request_id": "gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Instead of polling, you can receive a webhook callback when the request reaches a terminal state. Provide a webhook URL via header on the submit request.

HeaderRequiredDescription
X-Webhook-URLYes (to enable)HTTPS endpoint on your server that will receive the POST callback. Must respond 2xx within a few seconds.
X-Webhook-ModeNoterminal (default) — fires once at the final status (COMPLETED/FAILED/ERROR). sync — fires on every poll cycle plus the terminal event, and caps the queue's polling delay at 15s for tighter progress updates.

Example: enable webhook

curl -X POST 'https://gateway.pixazo.ai/gemini-omni-1-2/v1/text-to-video' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  -H 'X-Webhook-URL: https://your-server.com/webhook/callback' \
  --data-raw '{"prompt": "A golden retriever running through a sunlit meadow, slow motion, cinematic.", "aspect_ratio": "16:9"}'

Callback Payload

Your endpoint receives a POST application/json with the same shape as the GET /v2/requests/status/{request_id} response. Example terminal callback (mode terminal):

{
  "request_id": "gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "gemini-omni-1-2",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/output.mp4"
    ],
    "media_type": "video/mp4"
  },
  "created_at": "2026-07-01T10:00:00.000Z",
  "updated_at": "2026-07-01 10:00:48",
  "completed_at": "2026-07-01 10:00:48"
}

Failure callback shape

{
  "request_id": "gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "gemini-omni-1-2",
  "error": "Description of the failure",
  "output": null,
  "created_at": "2026-07-01T10:00:00.000Z",
  "updated_at": "2026-07-01 10:00:22",
  "completed_at": null
}

Delivery semantics

  • terminal mode: one webhook callback when the request is COMPLETED or ERROR/FAILED.
  • sync mode: a webhook callback on each status change.
  • Callbacks are idempotent on request_id — de-duplicate on it.
  • Respond 200 within a few seconds; the webhook endpoint must be HTTPS.

Request Parameters

ParameterRequiredTypeDefaultAllowed values / rangeDescription
promptYesstring——Text prompt describing the video to generate.
aspect_ratioNostring16:916:9, 9:16Output video aspect ratio.
durationNointeger—3–15 (integer seconds)Length of the generated video, in seconds. Accepted values are integers 3–15. Optional — if you omit it, the video is 10 seconds long. When you send it, it takes precedence over any length mentioned in prompt. Billing follows the actual output length, so a shorter clip costs proportionally less.

Example Request

{
  "prompt": "A golden retriever running through a sunlit meadow, slow motion, cinematic.",
  "aspect_ratio": "16:9"
}

Example Response

{
  "request_id": "gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

HeaderRequiredDescription
Content-TypeYesapplication/json
Ocp-Apim-Subscription-KeyYesYour API subscription key.
X-Webhook-URLNoEnable webhook callbacks (see Webhook section).

Response Handling

Status CodeMeaning
202Accepted — request queued; returns request_id and polling_url.
400Bad request — invalid or missing parameters (e.g. missing prompt, missing source image/video).
401Unauthorized — missing or invalid subscription key.
402Insufficient balance.
403Forbidden.
429Too many requests.
500Internal server error.

Error Responses

{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}

A failed generation is reported via the status endpoint (or webhook) with status: "FAILED" or "ERROR" and an error message. Malformed requests (e.g. a missing required field) are rejected immediately with 400.

Retrieving Results

Poll the status endpoint with the request_id from the submit response until status is COMPLETED (or FAILED/ERROR). Typical generation time is ~36s.

curl 'https://gateway.pixazo.ai/v2/requests/status/gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY'

Completed response

{
  "request_id": "gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "gemini-omni-1-2",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/output.mp4"
    ],
    "media_type": "video/mp4"
  },
  "created_at": "2026-07-01T10:00:00.000Z",
  "updated_at": "2026-07-01 10:00:48",
  "completed_at": "2026-07-01 10:00:48"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier.
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR.
model_idstringThe model that handled the request (gemini-omni-1-2).
output.media_urlarrayURL(s) to the generated MP4 video.
output.media_typestringAlways video/mp4.
created_atstringRequest creation timestamp.
completed_atstringCompletion timestamp.
polling_urlstringStatus URL for this request (submit response only).
errorstringError message when status is FAILED/ERROR.

Status Values & Flow

QUEUED → PROCESSING → COMPLETED (success) or FAILED/ERROR (failure).

Pricing

Billed per second of output video, measured from the generated file, so a shorter clip costs proportionally less. Failed requests are not billed. The current rate is shown on this model's page.

Notes & Limitations

TopicDetail
AudioGenerated automatically for every video — there is no on/off parameter. Describe the sound effects, music, or dialogue you want directly in prompt.
Prompt controlsNo separate negative-prompt, temperature, or sampling parameter. Put exclusions directly in prompt (e.g. “no dialogue”). See the Prompting Guide below.
LanguageEnglish is fully supported; other languages may work but results can vary.
Generation timeVaries with duration, resolution, and current API load — longer or higher-resolution videos take longer.
WatermarkEvery generated video carries an invisible SynthID watermark (not visible to viewers, but programmatically detectable).
Content safetyFilters apply to both your prompt and the generated video, and enforcement is region-dependent. Policy-violating prompts or content are blocked.
Not supportedUploading audio references is not supported in the current API version.

Prompting Guide

The prompt is passed through to the model verbatim, so all of Google’s prompt syntax works as-is.

TechniqueHow to use it
Single sceneBy default the model may split into several shots. Force one continuous shot by saying so — “in a single continuous shot”, “no scene cuts”.
Remove elementsUse simple negatives in the prompt — “no dialogue”, “no embellishments”, “no extra sound effects”.
Prompt the audioDescribe the sound you want — “calm background music”, “a high-energy techno beat”, “a low tinny radio in the background”.
Timing eventsUse natural language (“after 3 seconds a woman enters”) or timecode syntax: [0-5s] walking [5-10s] stops and turns [10-15s] starts running.
On-screen textQuote it exactly — e.g. a street sign that says: “This is an AI generation”.
Meta-promptingAsk for general qualities — “be extremely detailed in your descriptions of characters and environments”.

Gemini Omni 1.2 Flash API Pricing

ResolutionPrice (USD)
Per second of output video$0.07297
Image to Video

Gemini Omni 1.2 Flash API Documentation

Animate a single source image into a video, guided by a text prompt. Asynchronous: submit returns a request_id; poll the status endpoint until the request is COMPLETED. Typical generation time is ~36s.

Backed by Google's gemini-omni-1.2-flash.

POST https://gateway.pixazo.ai/gemini-omni-1-2/v1/image-to-video

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Image to Video - Gemini Omni 1.2 Flash

Request Code

POST https://gateway.pixazo.ai/gemini-omni-1-2/v1/image-to-video
Content-Type: application/json
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "prompt": "Animate the photo with a gentle camera pan and the subject blinking naturally.",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/nano-banana_019f1840-7f48-76a2-3393-d5f174826bae8/output.jpg",
  "aspect_ratio": "9:16"
}
import requests

url = "https://gateway.pixazo.ai/gemini-omni-1-2/v1/image-to-video"
headers = {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
  "prompt": "Animate the photo with a gentle camera pan and the subject blinking naturally.",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/nano-banana_019f1840-7f48-76a2-3393-d5f174826bae8/output.jpg",
  "aspect_ratio": "9:16"
}

resp = requests.post(url, json=data, headers=headers)
print(resp.json())
const res = await fetch("https://gateway.pixazo.ai/gemini-omni-1-2/v1/image-to-video", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
  },
  body: JSON.stringify({
  "prompt": "Animate the photo with a gentle camera pan and the subject blinking naturally.",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/nano-banana_019f1840-7f48-76a2-3393-d5f174826bae8/output.jpg",
  "aspect_ratio": "9:16"
})
});
console.log(await res.json());
curl -X POST 'https://gateway.pixazo.ai/gemini-omni-1-2/v1/image-to-video' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  --data-raw '{"prompt": "Animate the photo with a gentle camera pan and the subject blinking naturally.", "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/nano-banana_019f1840-7f48-76a2-3393-d5f174826bae8/output.jpg", "aspect_ratio": "9:16"}'

Output

{
  "request_id": "gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Instead of polling, you can receive a webhook callback when the request reaches a terminal state. Provide a webhook URL via header on the submit request.

HeaderRequiredDescription
X-Webhook-URLYes (to enable)HTTPS endpoint on your server that will receive the POST callback. Must respond 2xx within a few seconds.
X-Webhook-ModeNoterminal (default) — fires once at the final status (COMPLETED/FAILED/ERROR). sync — fires on every poll cycle plus the terminal event, and caps the queue's polling delay at 15s for tighter progress updates.

Example: enable webhook

curl -X POST 'https://gateway.pixazo.ai/gemini-omni-1-2/v1/image-to-video' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  -H 'X-Webhook-URL: https://your-server.com/webhook/callback' \
  --data-raw '{"prompt": "Animate the photo with a gentle camera pan and the subject blinking naturally.", "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg", "aspect_ratio": "9:16"}'

Callback Payload

Your endpoint receives a POST application/json with the same shape as the GET /v2/requests/status/{request_id} response. Example terminal callback (mode terminal):

{
  "request_id": "gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "gemini-omni-1-2",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/output.mp4"
    ],
    "media_type": "video/mp4"
  },
  "created_at": "2026-07-01T10:00:00.000Z",
  "updated_at": "2026-07-01 10:00:48",
  "completed_at": "2026-07-01 10:00:48"
}

Failure callback shape

{
  "request_id": "gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "gemini-omni-1-2",
  "error": "Description of the failure",
  "output": null,
  "created_at": "2026-07-01T10:00:00.000Z",
  "updated_at": "2026-07-01 10:00:22",
  "completed_at": null
}

Delivery semantics

  • terminal mode: one webhook callback when the request is COMPLETED or ERROR/FAILED.
  • sync mode: a webhook callback on each status change.
  • Callbacks are idempotent on request_id — de-duplicate on it.
  • Respond 200 within a few seconds; the webhook endpoint must be HTTPS.

Request Parameters

ParameterRequiredTypeDefaultAllowed values / rangeDescription
promptYesstring——Text prompt describing the motion/scene to animate the image into.
image_urlYesstring (URL)—JPEG, PNG, WebP, HEIC, or HEIFURL of the source image to animate.
image_urlsNostring[] (URLs)—JPEG, PNG, WebP, HEIC, or HEIFAlternative to image_url. Only the first entry is used by this operation — to combine several images in one video, use the Reference to Video operation instead.
aspect_ratioNostring16:916:9, 9:16Output video aspect ratio.
durationNointeger—3–15 (integer seconds)Length of the generated video, in seconds. Accepted values are integers 3–15. Optional — if you omit it, the video is 10 seconds long. When you send it, it takes precedence over any length mentioned in prompt. Billing follows the actual output length, so a shorter clip costs proportionally less.

Content Item Types & Limits

TypeMaxFormat / SizeDescription
image1JPG, PNG, WEBP, HEIC, HEIF · < 20 MBInput image to animate.

Example Request

{
  "prompt": "Animate the photo with a gentle camera pan and the subject blinking naturally.",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/nano-banana_019f1840-7f48-76a2-3393-d5f174826bae8/output.jpg",
  "aspect_ratio": "9:16"
}

Example Response

{
  "request_id": "gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

HeaderRequiredDescription
Content-TypeYesapplication/json
Ocp-Apim-Subscription-KeyYesYour API subscription key.
X-Webhook-URLNoEnable webhook callbacks (see Webhook section).

Response Handling

Status CodeMeaning
202Accepted — request queued; returns request_id and polling_url.
400Bad request — invalid or missing parameters (e.g. missing prompt, missing source image/video).
401Unauthorized — missing or invalid subscription key.
402Insufficient balance.
403Forbidden.
429Too many requests.
500Internal server error.

Error Responses

{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}

A failed generation is reported via the status endpoint (or webhook) with status: "FAILED" or "ERROR" and an error message. Malformed requests (e.g. a missing required field) are rejected immediately with 400.

Retrieving Results

Poll the status endpoint with the request_id from the submit response until status is COMPLETED (or FAILED/ERROR). Typical generation time is ~36s.

curl 'https://gateway.pixazo.ai/v2/requests/status/gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY'

Completed response

{
  "request_id": "gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "gemini-omni-1-2",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/output.mp4"
    ],
    "media_type": "video/mp4"
  },
  "created_at": "2026-07-01T10:00:00.000Z",
  "updated_at": "2026-07-01 10:00:48",
  "completed_at": "2026-07-01 10:00:48"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier.
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR.
model_idstringThe model that handled the request (gemini-omni-1-2).
output.media_urlarrayURL(s) to the generated MP4 video.
output.media_typestringAlways video/mp4.
created_atstringRequest creation timestamp.
completed_atstringCompletion timestamp.
polling_urlstringStatus URL for this request (submit response only).
errorstringError message when status is FAILED/ERROR.

Status Values & Flow

QUEUED → PROCESSING → COMPLETED (success) or FAILED/ERROR (failure).

Pricing

Billed per second of output video, measured from the generated file, so a shorter clip costs proportionally less. Failed requests are not billed. The current rate is shown on this model's page.

Notes & Limitations

TopicDetail
Input imageJPEG, PNG, WebP, HEIC, or HEIF. Keep the combined inline image data under ~20 MB (Google’s inline-data limit).
AudioGenerated automatically for every video — there is no on/off parameter. Describe the sound effects, music, or dialogue you want directly in prompt.
Prompt controlsNo separate negative-prompt, temperature, or sampling parameter. Put exclusions directly in prompt (e.g. “no dialogue”). See the Prompting Guide below.
LanguageEnglish is fully supported; other languages may work but results can vary.
Generation timeVaries with duration, resolution, and current API load — longer or higher-resolution videos take longer.
WatermarkEvery generated video carries an invisible SynthID watermark (not visible to viewers, but programmatically detectable).
Content safetyFilters apply to both your prompt and the generated video, and enforcement is region-dependent. Policy-violating prompts or content are blocked.
Not supportedUploading audio references is not supported in the current API version.
Regional limitsIn the EEA, Switzerland, and the UK, images containing minors cannot be used. Images of certain recognizable (real, identifiable) people are not supported anywhere.

Prompting Guide

The prompt is passed through to the model verbatim, so all of Google’s prompt syntax works as-is.

TechniqueHow to use it
First frameThe image is used as the start frame. Say so in plain language when the prompt is complex — e.g. starting from the image, a woman starts walking.
No control tagsDo not put control strings such as <FIRST_FRAME> or <IMAGE_REF_0> in prompt: Gemini Omni 1.2 Flash no longer supports them. Describe in plain language how each image should be used instead.
Single sceneBy default the model may split into several shots. Force one continuous shot by saying so — “in a single continuous shot”, “no scene cuts”.
Remove elementsUse simple negatives in the prompt — “no dialogue”, “no embellishments”, “no extra sound effects”.
Prompt the audioDescribe the sound you want — “calm background music”, “a high-energy techno beat”, “a low tinny radio in the background”.
Timing eventsUse natural language (“after 3 seconds a woman enters”) or timecode syntax: [0-5s] walking [5-10s] stops and turns [10-15s] starts running.
On-screen textQuote it exactly — e.g. a street sign that says: “This is an AI generation”.
Meta-promptingAsk for general qualities — “be extremely detailed in your descriptions of characters and environments”.

Gemini Omni 1.2 Flash API Pricing

ResolutionPrice (USD)
Per second of output video$0.07297
Reference to Video (Ref Images + Ref Videos to Video)

Gemini Omni 1.2 Flash API Documentation

Generate a video guided by reference images, short reference videos, or both, plus a text prompt. Asynchronous: submit returns a request_id; poll the status endpoint until the request is COMPLETED. Typical generation time is ~36s with reference images only; reference videos add upload time (our 3-second test with one clip took about 1 min 45 s).

Backed by Google's gemini-omni-1.2-flash.

POST https://gateway.pixazo.ai/gemini-omni-1-2/v1/reference-to-video

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Reference to Video (Ref Images + Ref Videos to Video) - Gemini Omni 1.2 Flash

Request Code

POST https://gateway.pixazo.ai/gemini-omni-1-2/v1/reference-to-video
Content-Type: application/json
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "prompt": "The woman from the reference image meets the subject shown in the reference video on a bright city street, in a single continuous shot.",
  "image_urls": [
    "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg"
  ],
  "video_urls": [
    "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/video/input-3s.mp4"
  ],
  "duration": 5,
  "aspect_ratio": "16:9"
}
import requests

url = "https://gateway.pixazo.ai/gemini-omni-1-2/v1/reference-to-video"
headers = {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
  "prompt": "The woman from the reference image meets the subject shown in the reference video on a bright city street, in a single continuous shot.",
  "image_urls": [
    "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg"
  ],
  "video_urls": [
    "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/video/input-3s.mp4"
  ],
  "duration": 5,
  "aspect_ratio": "16:9"
}

resp = requests.post(url, json=data, headers=headers)
print(resp.json())
const res = await fetch("https://gateway.pixazo.ai/gemini-omni-1-2/v1/reference-to-video", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
  },
  body: JSON.stringify({
  "prompt": "The woman from the reference image meets the subject shown in the reference video on a bright city street, in a single continuous shot.",
  "image_urls": [
    "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg"
  ],
  "video_urls": [
    "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/video/input-3s.mp4"
  ],
  "duration": 5,
  "aspect_ratio": "16:9"
})
});
console.log(await res.json());
curl -X POST 'https://gateway.pixazo.ai/gemini-omni-1-2/v1/reference-to-video' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  --data-raw '{"prompt": "The woman from the reference image meets the subject shown in the reference video on a bright city street, in a single continuous shot.", "image_urls": ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg"], "video_urls": ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/video/input-3s.mp4"], "duration": 5, "aspect_ratio": "16:9"}'

Output

{
  "request_id": "gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Instead of polling, you can receive a webhook callback when the request reaches a terminal state. Provide a webhook URL via header on the submit request.

HeaderRequiredDescription
X-Webhook-URLYes (to enable)HTTPS endpoint on your server that will receive the POST callback. Must respond 2xx within a few seconds.
X-Webhook-ModeNoterminal (default) — fires once at the final status (COMPLETED/FAILED/ERROR). sync — fires on every poll cycle plus the terminal event, and caps the queue's polling delay at 15s for tighter progress updates.

Example: enable webhook

curl -X POST 'https://gateway.pixazo.ai/gemini-omni-1-2/v1/reference-to-video' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  -H 'X-Webhook-URL: https://your-server.com/webhook/callback' \
  --data-raw '{"prompt": "The woman from the reference image meets the subject shown in the reference video on a bright city street, in a single continuous shot.", "image_urls": ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg"], "video_urls": ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/video/input-3s.mp4"], "duration": 5, "aspect_ratio": "16:9"}'

Callback Payload

Your endpoint receives a POST application/json with the same shape as the GET /v2/requests/status/{request_id} response. Example terminal callback (mode terminal):

{
  "request_id": "gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "gemini-omni-1-2",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/output.mp4"
    ],
    "media_type": "video/mp4"
  },
  "created_at": "2026-07-01T10:00:00.000Z",
  "updated_at": "2026-07-01 10:00:48",
  "completed_at": "2026-07-01 10:00:48"
}

Failure callback shape

{
  "request_id": "gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "gemini-omni-1-2",
  "error": "Description of the failure",
  "output": null,
  "created_at": "2026-07-01T10:00:00.000Z",
  "updated_at": "2026-07-01 10:00:22",
  "completed_at": null
}

Delivery semantics

  • terminal mode: one webhook callback when the request is COMPLETED or ERROR/FAILED.
  • sync mode: a webhook callback on each status change.
  • Callbacks are idempotent on request_id — de-duplicate on it.
  • Respond 200 within a few seconds; the webhook endpoint must be HTTPS.

Request Parameters

ParameterRequiredTypeDefaultAllowed values / rangeDescription
promptYesstring——Text prompt describing the scene to generate from the reference images and videos.
image_urlsYes, unless video_urls is sentstring[] (URLs)—JPEG, PNG, WebP, HEIC, or HEIFReference images to incorporate into the video, up to 6 (up to 3 images per character, for up to 2 characters). Say in plain language in prompt how each image is used, e.g. “the woman from the first image”.
image_urlNostring (URL)—JPEG, PNG, WebP, HEIC, or HEIFConvenience alternative to image_urls when you have a single reference image; it is treated as one reference.
video_urlsNostring[] (https URLs)—MP4 or MOV · up to 3 seconds and 50 MB each · 1–3 clipsShort reference videos of a person, character, or object the video should feature; Google says they work best for keeping a visual likeness. Up to 3 when duration is 3–10 (or left out), 1 when it is 11–15. Each must be a public https URL to a regular (not fragmented) MP4 or MOV file. Their sound is ignored. Say in plain language in prompt how each clip is used, e.g. “the man shown in the reference video”. A clip that is longer than 3 seconds, larger than 50 MB, cannot be read, or is one too many is refused with a 400 before anything is charged.
aspect_ratioNostring16:916:9, 9:16Output video aspect ratio.
durationNointeger—3–15 (integer seconds)Length of the generated video, in seconds. Accepted values are integers 3–15. Optional — if you omit it, the video is 10 seconds long. When you send it, it takes precedence over any length mentioned in prompt. Billing follows the actual output length, so a shorter clip costs proportionally less.

Content Item Types & Limits

TypeMaxFormat / SizeDescription
image6JPG, PNG, WEBP, HEIC, HEIF · < 20 MB combinedReference images (image_urls / image_url): up to 6, up to 3 per character for up to 2 characters.
video3 (1 when duration is 11–15)MP4, MOV · up to 3 s · up to 50 MB eachReference videos (video_urls). Audio in them is ignored.

Example Request

{
  "prompt": "Transform both robots into a sleek futuristic sports car through a seamless mechanical transformation, with shifting metal panels, rotating gears, glowing energy, and cinematic motion.",
  "image_urls": [
    "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/nano-banana/nano-banana-a382a80b-f8df-4de1-a0c1-a5dcfd42dae4-1758783383399.jpg",
    "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/flux-schnell-cf/prompt-1782482807515-639182.png"
  ],
  "aspect_ratio": "16:9"
}

Example Response

{
  "request_id": "gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

HeaderRequiredDescription
Content-TypeYesapplication/json
Ocp-Apim-Subscription-KeyYesYour API subscription key.
X-Webhook-URLNoEnable webhook callbacks (see Webhook section).

Response Handling

Status CodeMeaning
202Accepted — request queued; returns request_id and polling_url.
400Bad request — invalid or missing parameters (e.g. missing prompt, missing source image/video, a reference video longer than 3 seconds or larger than 50 MB, or more reference videos than the duration allows).
401Unauthorized — missing or invalid subscription key.
402Insufficient balance.
403Forbidden.
429Too many requests.
500Internal server error.

Error Responses

{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}

A failed generation is reported via the status endpoint (or webhook) with status: "FAILED" or "ERROR" and an error message. Malformed requests (e.g. a missing required field) are rejected immediately with 400.

Retrieving Results

Poll the status endpoint with the request_id from the submit response until status is COMPLETED (or FAILED/ERROR). Typical generation time is ~36s with reference images only; reference videos add upload time (our 3-second test with one clip took about 1 min 45 s).

curl 'https://gateway.pixazo.ai/v2/requests/status/gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY'

Completed response

{
  "request_id": "gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "gemini-omni-1-2",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/output.mp4"
    ],
    "media_type": "video/mp4"
  },
  "created_at": "2026-07-01T10:00:00.000Z",
  "updated_at": "2026-07-01 10:00:48",
  "completed_at": "2026-07-01 10:00:48"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier.
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR.
model_idstringThe model that handled the request (gemini-omni-1-2).
output.media_urlarrayURL(s) to the generated MP4 video.
output.media_typestringAlways video/mp4.
created_atstringRequest creation timestamp.
completed_atstringCompletion timestamp.
polling_urlstringStatus URL for this request (submit response only).
errorstringError message when status is FAILED/ERROR.

Status Values & Flow

QUEUED → PROCESSING → COMPLETED (success) or FAILED/ERROR (failure).

Pricing

Billed per second of output video, measured from the generated file, so a shorter clip costs proportionally less. Failed requests are not billed. The current rate is shown on this model's page.

Notes & Limitations

TopicDetail
Input imagesJPEG, PNG, WebP, HEIC, or HEIF. Keep the combined inline image data under ~20 MB (Google’s inline-data limit).
ReferencesUp to 6 reference images per request (up to 3 images per character, for up to 2 characters), and short reference videos in video_urls: MP4 or MOV, up to 3 seconds and 50 MB each, up to 3 per request for a 3–10 second video and 1 for an 11–15 second video. A request may carry images, videos, or both. The sound of a reference video is ignored. Google notes that reasoning across several videos is not supported and may give unexpected results, so one clip is the most reliable. The price is per second of output video; reference images and videos do not change it.
AudioGenerated automatically for every video — there is no on/off parameter. Describe the sound effects, music, or dialogue you want directly in prompt.
Prompt controlsNo separate negative-prompt, temperature, or sampling parameter. Put exclusions directly in prompt (e.g. “no dialogue”). See the Prompting Guide below.
LanguageEnglish is fully supported; other languages may work but results can vary.
Generation timeVaries with duration, resolution, and current API load — longer or higher-resolution videos take longer. Reference videos add upload and processing time before generation starts.
WatermarkEvery generated video carries an invisible SynthID watermark (not visible to viewers, but programmatically detectable).
Content safetyFilters apply to both your prompt and the generated video, and enforcement is region-dependent. Policy-violating prompts or content are blocked.
Not supportedUploading audio references is not supported in the current API version. Reference videos are accepted only here (Reference to Video), not by Video to Video editing.
Regional limitsIn the EEA, Switzerland, and the UK, images containing minors cannot be used. Images of certain recognizable (real, identifiable) people are not supported anywhere.

Prompting Guide

The prompt is passed through to the model verbatim, so all of Google’s prompt syntax works as-is.

TechniqueHow to use it
Referring to images and videosName each image by its place in image_urls and its role, in plain language — e.g. in the style of the first image, the woman from the second image is walking. Name a reference video the same way — e.g. the man shown in the reference video sits at the cafe table from the first image.
No control tagsDo not put control strings such as <FIRST_FRAME>, <IMAGE_REF_0> or <VIDEO_REF_0> in prompt: Gemini Omni 1.2 Flash no longer supports them. Describe in plain language how each image or video should be used instead.
Multi-image compositionsCombine plain-language references with timecodes — e.g. [0-5s] the woman from the first image holds the bag from the second image [5-10s] the man from the third image holds the hat from the fourth image.
Single sceneBy default the model may split into several shots. Force one continuous shot by saying so — “in a single continuous shot”, “no scene cuts”.
Remove elementsUse simple negatives in the prompt — “no dialogue”, “no embellishments”, “no extra sound effects”.
Prompt the audioDescribe the sound you want — “calm background music”, “a high-energy techno beat”, “a low tinny radio in the background”.
Timing eventsUse natural language (“after 3 seconds a woman enters”) or timecode syntax: [0-5s] walking [5-10s] stops and turns [10-15s] starts running.
On-screen textQuote it exactly — e.g. a street sign that says: “This is an AI generation”.
Meta-promptingAsk for general qualities — “be extremely detailed in your descriptions of characters and environments”.

Gemini Omni 1.2 Flash API Pricing

ResolutionPrice (USD)
Per second of output video$0.07297
Video to Video(video editing)

Gemini Omni 1.2 Flash API Documentation

Edit/transform an existing video using a text prompt (e.g. background swap, style change, object edits). The output inherits the source video's dimensions. Asynchronous: submit returns a request_id; poll the status endpoint until the request is COMPLETED. Typical generation time is ~60-110s.

Backed by Google's gemini-omni-1.2-flash.

POST https://gateway.pixazo.ai/gemini-omni-1-2/v1/video-to-video

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Video to Video - Gemini Omni 1.2 Flash

Request Code

POST https://gateway.pixazo.ai/gemini-omni-1-2/v1/video-to-video
Content-Type: application/json
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "prompt": "Replace the background with a neon cyberpunk city while keeping the subject unchanged.",
  "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/video/input-8s.mp4"
}
import requests

url = "https://gateway.pixazo.ai/gemini-omni-1-2/v1/video-to-video"
headers = {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
  "prompt": "Replace the background with a neon cyberpunk city while keeping the subject unchanged.",
  "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/video/input-8s.mp4"
}

resp = requests.post(url, json=data, headers=headers)
print(resp.json())
const res = await fetch("https://gateway.pixazo.ai/gemini-omni-1-2/v1/video-to-video", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
  },
  body: JSON.stringify({
  "prompt": "Replace the background with a neon cyberpunk city while keeping the subject unchanged.",
  "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/video/input-8s.mp4"
})
});
console.log(await res.json());
curl -X POST 'https://gateway.pixazo.ai/gemini-omni-1-2/v1/video-to-video' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  --data-raw '{"prompt": "Replace the background with a neon cyberpunk city while keeping the subject unchanged.", "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/video/input-8s.mp4"}'

Output

{
  "request_id": "gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Instead of polling, you can receive a webhook callback when the request reaches a terminal state. Provide a webhook URL via header on the submit request.

HeaderRequiredDescription
X-Webhook-URLYes (to enable)HTTPS endpoint on your server that will receive the POST callback. Must respond 2xx within a few seconds.
X-Webhook-ModeNoterminal (default) — fires once at the final status (COMPLETED/FAILED/ERROR). sync — fires on every poll cycle plus the terminal event, and caps the queue's polling delay at 15s for tighter progress updates.

Example: enable webhook

curl -X POST 'https://gateway.pixazo.ai/gemini-omni-1-2/v1/video-to-video' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  -H 'X-Webhook-URL: https://your-server.com/webhook/callback' \
  --data-raw '{"prompt": "Replace the background with a neon cyberpunk city while keeping the subject unchanged.", "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/video/input-8s.mp4"}'

Callback Payload

Your endpoint receives a POST application/json with the same shape as the GET /v2/requests/status/{request_id} response. Example terminal callback (mode terminal):

{
  "request_id": "gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "gemini-omni-1-2",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/output.mp4"
    ],
    "media_type": "video/mp4"
  },
  "created_at": "2026-07-01T10:00:00.000Z",
  "updated_at": "2026-07-01 10:00:48",
  "completed_at": "2026-07-01 10:00:48"
}

Failure callback shape

{
  "request_id": "gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "gemini-omni-1-2",
  "error": "Description of the failure",
  "output": null,
  "created_at": "2026-07-01T10:00:00.000Z",
  "updated_at": "2026-07-01 10:00:22",
  "completed_at": null
}

Delivery semantics

  • terminal mode: one webhook callback when the request is COMPLETED or ERROR/FAILED.
  • sync mode: a webhook callback on each status change.
  • Callbacks are idempotent on request_id — de-duplicate on it.
  • Respond 200 within a few seconds; the webhook endpoint must be HTTPS.

Request Parameters

ParameterRequiredTypeDefaultAllowed values / rangeDescription
promptYesstring——Text describing the edit to apply.
video_urlYesstring (URL)—MP4, MPEG, MOV, AVI, FLV, MPG, WebM, WMV, or 3GPPSource video to edit. Must be a direct, fetchable video file URL — YouTube links and other hosted-platform URLs are not supported. The source clip must be 15 seconds or shorter.
aspect_ratioNostring——Not used for video-to-video — the edited clip keeps the aspect ratio of the source video.
durationNointeger——Not used for video-to-video — the edited clip inherits the length of the source video. Billing follows the actual output length.

Content Item Types & Limits

TypeMaxFormat / SizeDescription
video1MP4, MOV, WEBM, AVI, MPEG, FLV, 3GPSource video to transform.

Example Request

{
  "prompt": "Replace the background with a neon cyberpunk city while keeping the subject unchanged.",
  "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/sync-lipsync-v2-pro_019f1910-7eca-7dc9-c2ef-da59f4839abec/output.mp4"
}

Example Response

{
  "request_id": "gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

HeaderRequiredDescription
Content-TypeYesapplication/json
Ocp-Apim-Subscription-KeyYesYour API subscription key.
X-Webhook-URLNoEnable webhook callbacks (see Webhook section).

Response Handling

Status CodeMeaning
202Accepted — request queued; returns request_id and polling_url.
400Bad request — invalid or missing parameters (e.g. missing prompt, missing source image/video).
401Unauthorized — missing or invalid subscription key.
402Insufficient balance.
403Forbidden.
429Too many requests.
500Internal server error.

Error Responses

{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}

A failed generation is reported via the status endpoint (or webhook) with status: "FAILED" or "ERROR" and an error message. Malformed requests (e.g. a missing required field) are rejected immediately with 400.

Retrieving Results

Poll the status endpoint with the request_id from the submit response until status is COMPLETED (or FAILED/ERROR). Typical generation time is ~60-110s.

curl 'https://gateway.pixazo.ai/v2/requests/status/gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY'

Completed response

{
  "request_id": "gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "gemini-omni-1-2",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/gemini-omni-1-2_01a0xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/output.mp4"
    ],
    "media_type": "video/mp4"
  },
  "created_at": "2026-07-01T10:00:00.000Z",
  "updated_at": "2026-07-01 10:00:48",
  "completed_at": "2026-07-01 10:00:48"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier.
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR.
model_idstringThe model that handled the request (gemini-omni-1-2).
output.media_urlarrayURL(s) to the generated MP4 video.
output.media_typestringAlways video/mp4.
created_atstringRequest creation timestamp.
completed_atstringCompletion timestamp.
polling_urlstringStatus URL for this request (submit response only).
errorstringError message when status is FAILED/ERROR.

Status Values & Flow

QUEUED → PROCESSING → COMPLETED (success) or FAILED/ERROR (failure).

Pricing

Billed per second of output video, measured from the generated file, so a shorter clip costs proportionally less. Failed requests are not billed. The current rate is shown on this model's page.

Notes & Limitations

TopicDetail
Input videoMP4, MPEG, MOV, AVI, FLV, MPG, WebM, WMV, or 3GPP. Use short, modestly-sized clips for best reliability — very large or long videos may be slow or fail.
AudioGenerated automatically for every video — there is no on/off parameter. Describe the sound effects, music, or dialogue you want directly in prompt.
Prompt controlsNo separate negative-prompt, temperature, or sampling parameter. Put exclusions directly in prompt (e.g. “no dialogue”). See the Prompting Guide below.
LanguageEnglish is fully supported; other languages may work but results can vary.
Generation timeVaries with duration, resolution, and current API load — longer or higher-resolution videos take longer.
WatermarkEvery generated video carries an invisible SynthID watermark (not visible to viewers, but programmatically detectable).
Content safetyFilters apply to both your prompt and the generated video, and enforcement is region-dependent. Policy-violating prompts or content are blocked.
Not supportedUploading audio references; chained editing (submit a fresh video_url for each edit); voice/dialogue editing; and video extension or frame interpolation (this operation transforms existing footage, it does not lengthen it or generate new frames).
Regional limitsEditing an uploaded video is not available for users in the EEA, Switzerland, or the UK.

Prompting Guide

The prompt is passed through to the model verbatim, so all of Google’s prompt syntax works as-is.

TechniqueHow to use it
Keep it simpleShort prompts edit best; long paragraphs cause unintended changes. Prefer “Make this video anime” or “Change the lighting to be more dramatic”.
“Keep everything else the same”When editing one aspect, add this phrase to preserve the rest — e.g. “Add a cat that jumps onto his lap. Keep everything else the same.”
Single sceneBy default the model may split into several shots. Force one continuous shot by saying so — “in a single continuous shot”, “no scene cuts”.
Remove elementsUse simple negatives in the prompt — “no dialogue”, “no embellishments”, “no extra sound effects”.
Prompt the audioDescribe the sound you want — “calm background music”, “a high-energy techno beat”, “a low tinny radio in the background”.
Timing eventsUse natural language (“after 3 seconds a woman enters”) or timecode syntax: [0-5s] walking [5-10s] stops and turns [10-15s] starts running.
On-screen textQuote it exactly — e.g. a street sign that says: “This is an AI generation”.
Meta-promptingAsk for general qualities — “be extremely detailed in your descriptions of characters and environments”.

Gemini Omni 1.2 Flash API Pricing

ResolutionPrice (USD)
Per second of output video$0.07297

⚡ Performance

Live usage measured on Pixazo's gateway, split by model version. Generation time is how long a generation takes end-to-end (lower is better). Success rate is the percent of generations that complete (higher is better).

Show data for the last
Generations
2,700last 30d
~90 per day
Success rate
100.0%
of completed generations
Generation time
2.0minavg
p95 2.1min
Requests
Oct 16max 1,500Nov 14
Gemini Omni 1.2 FlashAvg 90/day
Generation Time
Oct 16max 2.1minNov 14
Gemini Omni 1.2 FlashAvg 2.0min
Error Rate
Oct 16max 5.0%Nov 14
Gemini Omni 1.2 FlashAvg 0.0%

〰 Uptime

Percent of generations that succeeded over the selected period, per model version.

Avg. Success Rate (30d)
100.00%
across all generations of this model family
Uptime
Oct 16max 100%Nov 14
SuccessfulAvg 100.00%