Gemini Omni is Google's any-input video model, released in May 2026. Google also lists it as Gemini Omni Flash; on Jantaris its id is gemini-omni. It covers text-to-video, image-to-video from one start frame, fusion of three images into one scene, and reference-to-video from a source clip of up to 30 seconds, of which the first 10 seconds are used. Outputs are 4, 6, 8 or 10 seconds long in 16:9 or 9:16 at 720p, 1080p or 4K. Prompts can be up to 2,000 characters, and 6 seconds is the default length.
Best for
- Combining a character, an object and a place from three separate images
- Re-imagining an existing clip with a new prompt
- 10-second 4K shots for trailers
- Animating a single still
Prompting tips
- Three-image fusion needs exactly 3 images; sending 2 is rejected.
- With a reference clip, the output length follows the source and the job is billed at a flat per-job rate.
- Trim reference clips so the important part sits in the first 10 seconds.
- Stay under 2,000 characters and spend them on action and camera.
FAQ
How much does the Gemini Omni API cost?
Gemini Omni costs from $1.45 per video. The estimate is returned before the job runs, and failed generations are not charged.
What is the maximum length of a Gemini Omni video?
10 seconds, with 4, 6, 8 and 10 second options.
Is there a newer version of Gemini Omni?
Yes. Gemini Omni 1.1 keeps the same request shape, adds a 360p tier and is priced lower at every tier.
How to call Gemini Omni via API
curl https://jantaris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $JANTARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-omni",
"input": {
"prompt": "A slow dolly shot through a neon-lit night market in the rain, reflections on wet asphalt, cinematic",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 6
}
}'import os, time, requests
API = "https://jantaris.com/v1"
H = {"Authorization": f"Bearer {os.environ['JANTARIS_API_KEY']}"}
task = requests.post(f"{API}/generate", headers=H, json={
"model": "gemini-omni",
"input": {
"prompt": "A slow dolly shot through a neon-lit night market in the rain, reflections on wet asphalt, cinematic",
"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://jantaris.com/v1";
const headers = { Authorization: `Bearer ${process.env.JANTARIS_API_KEY}`, "Content-Type": "application/json" };
let task = await (await fetch(`${API}/generate`, {
method: "POST",
headers,
body: JSON.stringify({
"model": "gemini-omni",
"input": {
"prompt": "A slow dolly shot through a neon-lit night market in the rain, reflections on wet asphalt, cinematic",
"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));
Parameters
| 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 |
The same schema is available from GET /v1/models/gemini-omni.









