grok-imagine-video-1.5-official
Grok Imagine Video 1.5 Official Channel — image-to-video with native audio at a lower per-second rate. Required prompt, one reference image, 480p / 720p, 3 to 15 second clips.
Grok Imagine Video 1.5 Official Channel — async image-to-video
with native synchronized audio, distinct from the
grok-imagine-video-1.5-beta channel.
Same one-reference-image workflow at a lower per-second rate, with a
slightly stricter input contract: the prompt is required and clips run
3 to 15 seconds. Model id grok-imagine-video-1.5-official. See current
pricing on the
model page.
Channel differences at a glance. Compared to the beta channel this
surface requires a prompt, narrows aspect_ratio to 1:1 / 16:9 /
9:16 (no auto), starts at 3-second clips, adds an audio toggle, and
has no nsfw_checker parameter. The two channels bill independently —
each has its own per-second rate.
Quick example
curl https://reapi.ai/api/v1/videos/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "grok-imagine-video-1.5-official",
"prompt": "Gentle cinematic push-in, golden-hour light, subtle motion",
"image_urls": ["https://your-cdn.com/source.jpg"],
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 8
}'import requests
resp = requests.post(
"https://reapi.ai/api/v1/videos/generations",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"model": "grok-imagine-video-1.5-official",
"prompt": "Gentle cinematic push-in, golden-hour light, subtle motion",
"image_urls": ["https://your-cdn.com/source.jpg"],
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 8,
},
timeout=30,
)
print(resp.json())const r = await fetch("https://reapi.ai/api/v1/videos/generations", {
method: "POST",
headers: {
Authorization: "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "grok-imagine-video-1.5-official",
prompt: "Gentle cinematic push-in, golden-hour light, subtle motion",
image_urls: ["https://your-cdn.com/source.jpg"],
aspect_ratio: "16:9",
resolution: "720p",
duration: 8,
}),
});
console.log(await r.json());package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
body, _ := json.Marshal(map[string]any{
"model": "grok-imagine-video-1.5-official",
"prompt": "Gentle cinematic push-in, golden-hour light, subtle motion",
"image_urls": []string{"https://your-cdn.com/source.jpg"},
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 8,
})
req, _ := http.NewRequest("POST",
"https://reapi.ai/api/v1/videos/generations", bytes.NewReader(body))
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
out, _ := io.ReadAll(resp.Body)
fmt.Println(string(out))
}Submit response
{
"id": "task_018f5a3a1b6e7d9f8c2b4d6e8f0a2c4e",
"model": "grok-imagine-video-1.5-official",
"status": "processing",
"created_at": 1735000000
}Poll GET /api/v1/tasks/{id} (see the Tasks reference) until
status === "completed". The completed payload's output.video_urls holds the
generated MP4 URL (with audio), valid for 7 days.
Authentication
Every call needs a Bearer token. Generate keys at reapi.ai/settings/apikeys.
Authorization: Bearer YOUR_API_KEYKeys carry the active workspace's billing scope — there is no separate project header.
Endpoint
POST /api/v1/videos/generations
GET /api/v1/tasks/{id}Submission is async. The POST returns immediately with a task_id; the task
endpoint returns the same envelope until completion. Polling does not consume
credits.
This is an image-to-video model — exactly one reference image is required
on every request. There is no text-to-video mode, no last-frame or reference
image input, and no mode parameter.
Request body
model — required
string. Must be "grok-imagine-video-1.5-official".
prompt — string, required
Describes the motion, camera, atmosphere, and any dialogue or sound you want in the generated audio. Required on this channel (the beta channel accepts image-only requests; this one does not).
image_urls — string[], required
Array with exactly one public HTTP(S) image URL — the first frame the model animates. Accepted source formats: JPEG, PNG, WebP.
No data: URIs. reAPI rejects base64 inputs platform-wide — the image URL
must be a public HTTP(S) link. Upload to your own object storage (S3, R2, OSS, …)
and pass the URL. More than one entry is rejected.
aspect_ratio — string, default "16:9"
Output framing. auto is not available on this channel. Output pixel
size follows the ratio × resolution matrix:
| Value | 480p | 720p |
|---|---|---|
1:1 | 544×544 | 960×960 |
16:9 | 736×400 | 1280×720 |
9:16 | 400×736 | 720×1280 |
resolution — string, default "480p"
480p or 720p. 720p costs 2× per second — see Pricing.
duration — integer, default 8
Output length in seconds. Any integer in [3, 15] — note the 3-second
minimum (the beta channel starts at 1). Out-of-range → 400. Drives pricing
linearly.
Send a number, not a string. "duration": "8" is rejected with 400.
audio — boolean, default true
Whether the generated clip carries a native synchronized audio track. Set
false for a silent video at the same per-second rate.
Each request produces exactly one video. For multiple takes, submit concurrent requests — each bills and refunds independently.
Response envelope
Submit and poll share the same shape — only status and output fill in over
time.
{
"id": "task_018f5a3a1b6e7d9f8c2b4d6e8f0a2c4e",
"model": "grok-imagine-video-1.5-official",
"status": "completed",
"created_at": 1735000000,
"output": {
"video_urls": ["https://cdn.reapi.ai/media/tasks/018f5a3a1b6e7d9f8c2b4d6e8f0a2c4e/0.mp4"]
},
"error": null
}| Field | Type | Notes |
|---|---|---|
id | string | Task identifier — keep it for polling and audit |
model | string | Echo of the submitted model |
status | string | processing / completed / failed |
created_at | integer | Submission unix timestamp |
output | object | null | null until completion. output.video_urls holds MP4s |
error | object | null | Populated on failed — { code, message } |
output.video_urls URLs are valid for 7 days — re-host to your own
storage if you need them longer.
Validation errors
Pattern-match on code, not message — message strings carry request-specific
context (field names, observed values) and are not a stable contract.
| Trigger | Code | Message (illustrative) |
|---|---|---|
prompt missing or empty | 20002 | prompt is required |
image_urls missing | 20002 | image_urls is required |
image_urls with more than one entry | 20003 | image_urls allows at most 1 entry |
duration outside [3, 15] | 20003 | duration must be 3-15 seconds |
Unknown resolution | 20003 | invalid resolution (allowed: 480p / 720p) |
aspect_ratio outside 1:1 / 16:9 / 9:16 | 20003 | invalid aspect_ratio |
image_urls carrying a data: URI or non-http(s) | 20003 | image_urls entries must be public http(s) URLs |
The full envelope is { "error": { "code", "message", "request_id" } } — see
the Errors catalog for the wire format and request_id
correlation tips.
Recipes
Minimum request
{
"model": "grok-imagine-video-1.5-official",
"prompt": "Slow push-in with ambient room tone",
"image_urls": ["https://your-cdn.com/source.jpg"]
}Directed motion + HD
{
"model": "grok-imagine-video-1.5-official",
"prompt": "Slow dolly forward, wind moving the hair, warm cinematic light",
"image_urls": ["https://your-cdn.com/portrait.jpg"],
"resolution": "720p",
"duration": 10
}Vertical social clip, no audio
{
"model": "grok-imagine-video-1.5-official",
"prompt": "Energetic motion, quick handheld feel",
"image_urls": ["https://your-cdn.com/poster.jpg"],
"aspect_ratio": "9:16",
"resolution": "720p",
"duration": 6,
"audio": false
}Polling pattern
The task endpoint behaves identically to other video tasks. A pragmatic schedule:
0–5 minutes: poll every 5s
5 min – 1 h: back off gradually toward 1 min
≥ 1 h: cap at 3 min between pollsA typical task completes in about a minute. The worker's wall-clock cap is 48 hours, comfortably above any realistic queue.
Pricing
Per-second rate by resolution — 720p costs 2× the 480p rate. This
channel is priced independently of (and lower than) the beta channel. See
current rates on the
Grok Imagine Video 1.5 model page.
Bill formula (1 credit = $0.001):
credits = ceil(per_second_usd × duration × 1000)Failed jobs refund automatically.
Tips
- Write the prompt like a shot direction. It is required here — lean into it: camera move, subject motion, atmosphere, and the sound you want.
- One clear subject image works best. A centered, well-lit reference with clean composition tracks identity and motion far better than a busy frame.
- Sweet-spot duration: 5–10 seconds. Longer clips raise wall-time without changing the per-second rate.
- Pick
720pfor hero shots,480pto save. The 720p rate is exactly 2× the 480p rate on this channel.