Gemini Omni 1.2 is the third version of Google's video model, after Gemini Omni and Gemini Omni 1.1. The biggest change for your budget: you pay per second of video instead of a flat rate per job. Length is set in one-second steps from 3 to 15 s (previously 4-10 s), resolution from 360p to 4K. Every clip comes with sound. Aspect ratios: 16:9 or 9:16.
There are more inputs than in 1.1: text only, a photo as the first frame, a start-end frame pair, or up to 10 reference images (1.1 took 1 or 3). The vendor also has edit and extend modes for an existing clip, which Jantaris does not expose yet.
Best for
- Cheap 360p drafts - here that tier really costs less, unlike in 1.1
- Transitions between two frames (first and last frame)
- Scenes with several characters or products from reference images
- Longer shots up to 15 s in 4K
How to write prompts
- Check the composition at 360p in a short clip, then raise resolution and length.
- Frame pair:
image_urlis the start,end_image_urlthe end. Do not combine it withimage_urls. - Describe the sound: ambience, steps, background music - the model always generates audio.
- Leave on-screen text out.
FAQ
How much does Gemini Omni 1.2 cost?
from $0.0462 per second. The price depends on resolution and the number of seconds. Failed generations are not charged.
How is it different from Gemini Omni 1.1?
Per-second billing instead of a flat job price, 3-15 s in one-second steps, a frame pair and up to 10 reference images. In 1.1, 360p cost the same as 720p - here it is clearly cheaper.
Which aspect ratios are supported?
16:9 and 9:16.
How to call Gemini Omni 1.2 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-1.2",
"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": 10
}
}'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-1.2",
"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": 10
}
}).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-1.2",
"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": 10
}
}),
})).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 | ||
aspect_ratio | string | 16:9 9:16 | 16:9 |
resolution | string | 360p 720p 1080p 4k | 720p |
duration | integer | 3-15 | 10 |
image_url | string | ||
end_image_url | string | ||
image_urls | array | max 10 |
The same schema is available from GET /v1/models/gemini-omni-1.2.























