Gemini Omni is Google's video model that accepts nearly anything as a starting point. Write a prompt, give it one image to animate, hand it three images to fuse into a single scene, or upload a clip for it to reinterpret. Google released it in May 2026 and also calls it Gemini Omni Flash; on Kadraris the id is gemini-omni.
A newer version, Gemini Omni 1.1, uses the same request shape at lower rates.
What you can make
- A scene that brings together a character, a prop and a location from three images
- A fresh take on an existing clip with a different style or action
- 10-second 4K shots for a trailer
- A single still turned into a moving opening shot
Settings that matter
duration: 4, 6 (default), 8 or 10 seconds.resolution: 720p (default), 1080p or 4K;aspect_ratio: 16:9 or 9:16.- Fusion needs exactly 3 images in
image_urls; 2 are rejected. - Reference clip: up to 30 seconds, but only the first 10 are used, so trim it. Output length follows the source and the job is billed at a flat rate.
- Prompts are capped at 2,000 characters. Spend them on the action and the camera.
Starter prompt
Turn this street clip into a rainy 1980s night scene:
wet asphalt, neon reflections, same walking path and
camera height, steam from a manhole, slow push-inKeep the line about what stays the same and change the new style around it.
Questions
What does a Gemini Omni video cost?
from $1.45 per video. The estimate arrives before the job runs, and a failed one costs $0.
Should I use 1.1 instead?
Usually yes. Gemini Omni 1.1 keeps the request format, adds a 360p tier and costs less at every level. Keep this version if your pipeline was tuned on it.
Can I make clips longer than 10 seconds?
Not in one request. Generate several 10-second shots and join them in your editor. The how to make AI video guide covers this.
Gemini Omni in your code
curl https://kadraris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $KADRARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-omni",
"input": {
"prompt": "Tracking shot of a cyclist riding through an empty city street at dawn, long shadows, light fog, film look",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 6
}
}'import os, time, requests
API = "https://kadraris.com/v1"
H = {"Authorization": f"Bearer {os.environ['KADRARIS_API_KEY']}"}
task = requests.post(f"{API}/generate", headers=H, json={
"model": "gemini-omni",
"input": {
"prompt": "Tracking shot of a cyclist riding through an empty city street at dawn, long shadows, light fog, film look",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 6
}
}).json()
while task["status"] in ("queued", "running"):
time.sleep(3)
task = requests.get(f"{API}/tasks/{task['id']}", headers=H).json()
print(task["status"], task["cost"], [o["url"] for o in task["output"]])const API = "https://kadraris.com/v1";
const headers = { Authorization: `Bearer ${process.env.KADRARIS_API_KEY}`, "Content-Type": "application/json" };
let task = await (await fetch(`${API}/generate`, {
method: "POST",
headers,
body: JSON.stringify({
"model": "gemini-omni",
"input": {
"prompt": "Tracking shot of a cyclist riding through an empty city street at dawn, long shadows, light fog, film look",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 6
}
}),
})).json();
while (task.status === "queued" || task.status === "running") {
await new Promise((r) => setTimeout(r, 3000));
task = await (await fetch(`${API}/tasks/${task.id}`, { headers })).json();
}
console.log(task.status, task.cost, task.output.map((o) => o.url));
Input fields
| Parameter | Type | Allowed | Default |
|---|---|---|---|
prompt * | string | ≤ 2000 chars | |
aspect_ratio | string | 16:9 9:16 | 16:9 |
resolution | string | 720p 1080p 4k | 720p |
duration | integer | 4 6 8 10 | 6 |
image_url | string | ||
image_urls | array | max 3 | |
video_urls | array | max 1 |
Fetch this list as JSON with GET /v1/models/gemini-omni.























