Grok Imagine Video 1.5 is xAI's June 2026 image-to-video model. It takes exactly one source image (JPEG, PNG or WebP) and animates it into a clip with a native synchronized audio track. Output is 480p or 720p and up to 15 seconds long, with 8 seconds as the default. The prompt can direct motion, camera, atmosphere, and the dialogue or sound in the generated audio. Prompts go up to 10,000 characters. There is no text-only mode: every request needs an image.
Best for
- Bringing portraits and character art to life with a voice
- Product photos turned into short ads with sound
- Animated memes and reaction clips
- Storyboard frames turned into moving previews
Prompting tips
- Write dialogue in quotes and say who speaks and in what tone.
- Describe sound separately from motion: "camera pushes in slowly; wind, distant traffic".
- Pick 16:9, 9:16 or 1:1 to match the framing of your source image.
- Everything visible in the clip starts from your photo, so use a sharp, well-lit source.
FAQ
How much does Grok Imagine Video 1.5 cost?
Grok Imagine Video 1.5 costs from $0.088 per second on Jantaris. You see the estimated cost first, and failed generations are not charged.
Can Grok Imagine Video 1.5 generate video from text only?
No. It needs exactly one source image. For text-to-video, use Grok Imagine 1.0 Video.
Does the audio match the video?
Yes. The audio track is generated together with the picture and synchronized to it, and you steer it through the prompt.
How to call Grok Imagine Video 1.5 via API
curl https://jantaris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $JANTARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "grok-imagine-video-1.5",
"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": "480p",
"duration": 8
}
}'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": "grok-imagine-video-1.5",
"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": "480p",
"duration": 8
}
}).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": "grok-imagine-video-1.5",
"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": "480p",
"duration": 8
}
}),
})).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 | ≤ 10000 chars | |
aspect_ratio | string | 1:1 16:9 9:16 | 16:9 |
resolution | string | 480p 720p | 480p |
duration | integer | 6-15 | 8 |
generate_audio | boolean | true | |
image_url | string |
The same schema is available from GET /v1/models/grok-imagine-video-1.5.









