Grok Video API (xAI)
High-quality video generation by xAI, with natural, fluid motion. It runs on the same unified video endpoint as everything else on apimodels.app: one POST creates the task, then you poll that same endpoint for the result — identical to VEO, Kling and Seedance, so switching models is a one-string change. Two public model names: grok-video-3 is priced per second — $0.04/s at 480p / 720p and $0.12/s at 1080p — for 6 / 10 / 15-second output, and grok-video-3-10s is billed per clip on flat tiers — 720p $0.30 / $0.50 / $0.70 and 1080p $0.35 / $0.65 / $2.00 for 6 / 10 / 15 seconds. Both support image-to-video.
Models and pricing
| Model | model | Duration | Price | Notes |
|---|---|---|---|---|
| Grok Video 3 | grok-video-3 | 6 / 10 / 15s | $0.24-$0.60 | Image-to-video, $0.04/s ($0.12/s at 1080p) |
| Grok Video 3 (10s) | grok-video-3-10s | 6 / 10 / 15s | $0.30-$2.00 | Image-to-video, flat per clip: 720p $0.30 / $0.50 / $0.70, 1080p $0.35 / $0.65 / $2.00 |
Both names are the same model and differ only in billing shape: grok-video-3 is per-second ($0.04/s at 480p / 720p, $0.12/s at 1080p), grok-video-3-10s is a flat per-clip price on six resolution × length tiers (10 seconds by default). Both do 1080p and output quality is identical, so take whichever is more affordable for your shape: **for 1080p at 6s or 10s use grok-video-3-10s** ($0.35 / $0.65 vs $0.72 / $1.20 per-second), and **for 1080p at 15s use grok-video-3** ($1.80 vs $2.00). 480p is only on grok-video-3, and 720p is more affordable on the per-second one.
Create a task
POST /api/v1/video/generations — async: create, then poll the same endpoint for the result.
# Step 1: Create task
curl -X POST https://api.apimodels.app/v1/video/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "grok-video-3",
"prompt": "A cat playing piano in a jazz club, cinematic lighting",
"aspect_ratio": "16:9"
}'
# Step 2: Poll status
curl "https://api.apimodels.app/v1/video/generations?task_id=TASK_ID" \
-H "Authorization: Bearer YOUR_API_KEY"Request parameters
| Field | Required | Type | Description |
|---|---|---|---|
| model | Yes | string | grok-video-3 / grok-video-3-10s |
| prompt | Yes | string | Text description of the video to generate |
| aspect_ratio | No | string | "16:9" (default), "1:1", "9:16", "2:3", "3:2" |
| duration | No | number | 6, 10 or 15 (default 6 for grok-video-3, 10 for grok-video-3-10s) |
| size | No | string | grok-video-3: "480P" or "720P" (default). grok-video-3-10s: "720P" (default) or "1080P" |
| images | No | string[] | Array of reference image URLs, up to 7 — passing any turns the call into image-to-video. image_urls and image are accepted as aliases. |
| callback_url | No | string | Webhook URL called when task completes |
Getting the result
The create call returns data.taskId right away and the video renders in the background. GET the same endpoint with that task_id and read data.state: pending means still running, completed puts the video URL in data.resultUrls[0], and failed puts the reason in data.failMsg. To skip polling entirely, pass callback_url and we POST you when the task finishes.
- Measured turnaround: a 6-second clip comes back in about 60-85 seconds; a 15-second one with several reference images and a long prompt can take up to 4 minutes. Set client timeouts to 6 minutes or more, or pass callback_url and skip polling entirely.
- Result videos are kept for 30 days and then deleted — download or re-host anything you want to keep.
- You are charged on success; failed tasks are not billed.
Things worth knowing
- Supports 16:9, 9:16, 1:1 and more, so landscape, portrait and square all come out of the same endpoint — no model switching for social formats.
- grok-video-3 is billed per second, with the rate set by resolution: 480p and 720p are both $0.04/s (6s $0.24, 10s $0.40, 15s $0.60), and 1080p is $0.12/s (6s $0.72, 10s $1.20, 15s $1.80). For short 1080p clips (6 / 10s), the flat tiers on grok-video-3-10s are more affordable.
- Image-to-video: put reference image URLs in images (up to 7) and the model follows their subject, setting and style. Omit it for pure text-to-video.
- grok-video-3-10s is billed per clip on flat tiers: 720p $0.30 / $0.50 / $0.70 and 1080p $0.35 / $0.65 / $2.00 for 6 / 10 / 15 seconds — the easier one to budget for batch jobs.
- Auth is the same as every other model: send Authorization: Bearer YOUR_API_KEY. One key covers every video, image, audio and LLM model on the platform.
Related
FAQ
Is there an API for Grok video generation?
Yes. On apimodels.app you POST to /api/v1/video/generations with model "grok-video-3" (or "grok-video-3-10s"), a prompt and an optional aspect_ratio, then poll the same endpoint with the returned task_id until data.state is "completed" — data.resultUrls[0] is the video. It is the same request shape as VEO, Kling and Seedance here, so switching models is a one-string change, and one API key covers all of them.
How much does Grok Video 3 cost per video?
grok-video-3 is billed per second: $0.04/s at 480p and 720p (6 seconds $0.24, 10 seconds $0.40, 15 seconds $0.60) and $0.12/s at 1080p ($0.72 / $1.20 / $1.80). The separate grok-video-3-10s model is billed per clip on flat tiers: 720p $0.30 / $0.50 / $0.70 and 1080p $0.35 / $0.65 / $2.00 for 6 / 10 / 15 seconds. Failed tasks are not billed — you are only charged on success.
What is the difference between grok-video-3 and grok-video-3-10s?
Same model, different billing shape, and both output real 1080p. grok-video-3 gives you 6, 10 or 15-second output billed per second: $0.04/s at 480p / 720p ($0.24-$0.60) and $0.12/s at 1080p ($0.72-$1.80). grok-video-3-10s is billed per clip on six flat tiers — 720p $0.30 / $0.50 / $0.70 and 1080p $0.35 / $0.65 / $2.00 for 6 / 10 / 15 seconds (10 by default) — which is easier to budget for batch jobs. Pick by shape: for 1080p at 6 or 10 seconds grok-video-3-10s comes out lower ($0.35 / $0.65 versus $0.72 / $1.20); for 1080p at 15 seconds, and for 480p or 720p, grok-video-3 comes out lower.
Does Grok Video 3 support image-to-video?
Yes — both grok-video-3 and grok-video-3-10s support image-to-video as well as plain text-to-video, through the same /api/v1/video/generations endpoint. You can try the image workflow directly on the model pages at apimodels.app/models/grok-video-3 and /models/grok-video-3-10s.
What aspect ratios does Grok Video 3 support, and how long does generation take?
aspect_ratio accepts "16:9" (the default), "1:1", "9:16", "2:3" and "3:2", so landscape, portrait and square all come from one endpoint — no model switching for social formats. A 10-second clip typically comes back in about 60 seconds and shorter ones in around 30, so poll every 5-10 seconds, or pass callback_url and let us POST you when the task finishes.
How long is the Grok Video result URL valid?
Result videos are hosted for 30 days and then deleted automatically, so download or re-host anything you need to keep. The URL comes back in data.resultUrls[0] once data.state is "completed"; if the task fails, data.failMsg carries the reason and nothing is charged.