Pixazo APIModelsGemini Omni
Pixazo APIModelsGemini Omni

Gemini Omni API: Pricing, Documentation

by Google

Gemini Omni API. Through Pixazo's API, developers can leverage Google's flagship multimodal model for diverse video generation workflows.

Get API Key
Gemini Omni API

Models Version

WELCOME BONUS

Get $5 Free Credit on First Payment

No strings attached — add funds and get $5 bonus instantly

Claim Your $5 →

Gemini Omni 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.

POST https://gateway.pixazo.ai/gemini-omni/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

Request Code

POST https://gateway.pixazo.ai/gemini-omni/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/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/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/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_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/gemini-omni_019dxxxx-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/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_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "gemini-omni",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/gemini-omni_019dxxxx-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_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "gemini-omni",
  "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
promptYesstringText prompt describing the video to generate.
aspect_ratioNostring16:916:9, 9:16Output video aspect ratio.

Example Request

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

Example Response

{
  "request_id": "gemini-omni_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/gemini-omni_019dxxxx-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_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY'

Completed response

{
  "request_id": "gemini-omni_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "gemini-omni",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/gemini-omni_019dxxxx-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).
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

QUEUEDPROCESSINGCOMPLETED (success) or FAILED/ERROR (failure).

Pricing

Billed at a flat $0.15 per request, regardless of resolution or output duration.

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-3s] walking [3-6s] stops and turns [6-10s] 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 Flash API Pricing

Your request will cost $0.15 per second of output video.
Image to Video

Gemini Omni 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.

POST https://gateway.pixazo.ai/gemini-omni/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

Request Code

POST https://gateway.pixazo.ai/gemini-omni/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/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/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/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_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/gemini-omni_019dxxxx-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/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://example.com/portrait.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_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "gemini-omni",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/gemini-omni_019dxxxx-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_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "gemini-omni",
  "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
promptYesstringText prompt describing the motion/scene to animate the image into.
image_urlConditionalstring (URL)JPEG, PNG, WebP, HEIC, or HEIFSource image to animate. Required if image_urls is omitted.
aspect_ratioNostring16:916:9, 9:16Output video aspect ratio.

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_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/gemini-omni_019dxxxx-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_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY'

Completed response

{
  "request_id": "gemini-omni_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "gemini-omni",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/gemini-omni_019dxxxx-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).
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

QUEUEDPROCESSINGCOMPLETED (success) or FAILED/ERROR (failure).

Pricing

Billed at a flat $0.15 per request, regardless of resolution or output duration.

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 frame <FIRST_FRAME>Optionally tag the source image’s role in the prompt — e.g. <FIRST_FRAME> a woman is walking. With a single image it is already treated as the start frame; the tag mainly adds clarity in complex prompts.
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-3s] walking [3-6s] stops and turns [6-10s] 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 Flash API Pricing

Your request will cost $0.15 per second of output video.
Reference to Video (Ref Images to Video)

Gemini Omni Flash API Documentation

Generate a video guided by one or more reference images plus a text prompt. Asynchronous: submit returns a request_id; poll the status endpoint until the request is COMPLETED. Typical generation time is ~36s.

POST https://gateway.pixazo.ai/gemini-omni/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 to Video) - Gemini Omni

Request Code

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

{
  "prompt": "Combine the two reference images into a short scene of the product rotating on a table.",
  "image_urls": [
    "https://example.com/ref1.jpg",
    "https://example.com/ref2.jpg"
  ],
  "aspect_ratio": "16:9"
}
import requests

url = "https://gateway.pixazo.ai/gemini-omni/v1/reference-to-video"
headers = {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
  "prompt": "Combine the two reference images into a short scene of the product rotating on a table.",
  "image_urls": [
    "https://example.com/ref1.jpg",
    "https://example.com/ref2.jpg"
  ],
  "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/v1/reference-to-video", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
  },
  body: JSON.stringify({
  "prompt": "Combine the two reference images into a short scene of the product rotating on a table.",
  "image_urls": [
    "https://example.com/ref1.jpg",
    "https://example.com/ref2.jpg"
  ],
  "aspect_ratio": "16:9"
})
});
console.log(await res.json());
curl -X POST 'https://gateway.pixazo.ai/gemini-omni/v1/reference-to-video' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  --data-raw '{"prompt": "Combine the two reference images into a short scene of the product rotating on a table.", "image_urls": ["https://example.com/ref1.jpg", "https://example.com/ref2.jpg"], "aspect_ratio": "16:9"}'

Output

{
  "request_id": "gemini-omni_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/gemini-omni_019dxxxx-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/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": "Combine the two reference images into a short scene of the product rotating on a table.", "image_urls": ["https://example.com/ref1.jpg", "https://example.com/ref2.jpg"], "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_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "gemini-omni",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/gemini-omni_019dxxxx-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_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "gemini-omni",
  "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
promptYesstringText prompt describing the scene to generate from the reference images.
image_urlsConditionalstring[] (URLs)JPEG, PNG, WebP, HEIC, or HEIFReference images used as visual references for the generated video. Required if image_url is omitted.
aspect_ratioNostring16:916:9, 9:16Output video aspect ratio.

Content Item Types & Limits

TypeMaxFormat / SizeDescription
image6JPG, PNG, WEBP, HEIC, HEIF · < 20 MBReference image(s), up to ~6.

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_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/gemini-omni_019dxxxx-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_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY'

Completed response

{
  "request_id": "gemini-omni_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "gemini-omni",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/gemini-omni_019dxxxx-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).
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

QUEUEDPROCESSINGCOMPLETED (success) or FAILED/ERROR (failure).

Pricing

Billed at a flat $0.15 per request, regardless of resolution or output duration.

Notes & Limitations

TopicDetail
Input imagesJPEG, PNG, WebP, HEIC, or HEIF. Keep the combined inline image data under ~20 MB (Google’s inline-data limit).
ReferencesStatic images only — video clips are not accepted as references, and reasoning across multiple videos is not supported. Google’s examples use up to ~6 images; there is no hard maximum, but quality is best within that range.
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
Reference tags <IMAGE_REF_N>Bind each image to a role in the prompt, indexed from 0 in image_urls order — e.g. in the style of <IMAGE_REF_0> a woman <IMAGE_REF_1> is walking.
Multi-image compositionsCombine reference tags with timecodes — e.g. [0-3s] woman <IMAGE_REF_0> holding <IMAGE_REF_1> [3-6s] man <IMAGE_REF_2> holding <IMAGE_REF_3>.
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-3s] walking [3-6s] stops and turns [6-10s] 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 Flash API Pricing

Your request will cost $0.15 per second of output video.
Video to Video(video editing)

Gemini Omni 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.

POST https://gateway.pixazo.ai/gemini-omni/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

Request Code

POST https://gateway.pixazo.ai/gemini-omni/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://example.com/source.mp4"
}
import requests

url = "https://gateway.pixazo.ai/gemini-omni/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://example.com/source.mp4"
}

resp = requests.post(url, json=data, headers=headers)
print(resp.json())
const res = await fetch("https://gateway.pixazo.ai/gemini-omni/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://example.com/source.mp4"
})
});
console.log(await res.json());
curl -X POST 'https://gateway.pixazo.ai/gemini-omni/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://example.com/source.mp4"}'

Output

{
  "request_id": "gemini-omni_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/gemini-omni_019dxxxx-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/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://example.com/source.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_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "gemini-omni",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/gemini-omni_019dxxxx-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_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "gemini-omni",
  "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
promptYesstringText 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.

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_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/gemini-omni_019dxxxx-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_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY'

Completed response

{
  "request_id": "gemini-omni_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "gemini-omni",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/gemini-omni_019dxxxx-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).
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

QUEUEDPROCESSINGCOMPLETED (success) or FAILED/ERROR (failure).

Pricing

Billed at a flat $0.15 per request, regardless of resolution or output duration.

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-3s] walking [3-6s] stops and turns [6-10s] 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 Flash API Pricing

Your request will cost $0.15 per second of output video.