LogoOmniVideo API

Examples

OmniVideo API Code Examples

Copy-ready examples for creating Gemini Omni video tasks and polling task status.

Node.js

const API_KEY = process.env.OMNIVIDEO_API_KEY;
const BASE_URL = 'https://omnivideoapi.com/api';

async function createVideo() {
  const response = await fetch(`${BASE_URL}/generate`, {
    method: 'POST',
    headers: {
      Authorization: `Bearer ${API_KEY}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      model: 'gemini-omni/video',
      input: {
        prompt: 'A cinematic product reveal shot with smooth camera motion',
        mode: 'std',
        aspect_ratio: '16:9',
        duration: '5',
        sound: true
      }
    })
  });

  const result = await response.json();
  return result.data.task_id;
}

async function pollTask(taskId) {
  for (let attempt = 0; attempt < 60; attempt++) {
    const response = await fetch(`${BASE_URL}/status?task_id=${taskId}`, {
      headers: { Authorization: `Bearer ${API_KEY}` }
    });
    const result = await response.json();

    if (result.data?.status === 'SUCCESS') return result.data.response;
    if (result.data?.status === 'FAILED') throw new Error(result.data.error_message || 'Generation failed');

    await new Promise((resolve) => setTimeout(resolve, 5000));
  }
  throw new Error('Timed out waiting for video generation');
}

Python

import os
import time
import requests

API_KEY = os.environ["OMNIVIDEO_API_KEY"]
BASE_URL = "https://omnivideoapi.com/api"

payload = {
    "model": "gemini-omni/video",
    "input": {
        "prompt": "A cinematic product reveal shot with smooth camera motion",
        "mode": "std",
        "aspect_ratio": "16:9",
        "duration": "5",
        "sound": True,
    },
}

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json",
}

task = requests.post(f"{BASE_URL}/generate", json=payload, headers=headers).json()
task_id = task["data"]["task_id"]

for _ in range(60):
    status = requests.get(
        f"{BASE_URL}/status",
        params={"task_id": task_id},
        headers={"Authorization": f"Bearer {API_KEY}"},
    ).json()
    if status["data"]["status"] == "SUCCESS":
        print(status["data"]["response"])
        break
    if status["data"]["status"] == "FAILED":
        raise RuntimeError(status["data"].get("error_message") or "Generation failed")
    time.sleep(5)

cURL Image-to-Video

curl -X POST https://omnivideoapi.com/api/generate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-omni/video",
    "input": {
      "prompt": "Subtle camera push-in with premium product lighting",
      "image_urls": ["https://example.com/product.jpg"],
      "mode": "pro",
      "aspect_ratio": "1:1",
      "duration": "5",
      "sound": false
    }
  }'