Skip to main content
Two models in the Grok Imagine family produce video. Both run on the async task API with the same envelope as everything else — there is no synchronous video endpoint, so this is the only way to reach them. The two are not a simple old-and-new pair. grok-imagine-video-1.5 generates at higher resolution and can use preset voices; grok-imagine-video is the only one that accepts video as input, which is what editing and extending require. Which one you want depends on whether you are creating a clip or changing one.

The series at a glance

Asking for something a model cannot do fails at submit time, before anything is queued, and the message says which model to use instead:

Modes

input.mode selects what the model does. It takes generate, edit or extend, and defaults to generate. edit rewrites an existing clip from a prompt and keeps its length, so it does not accept resolution — the output follows the source. extend appends new footage to the end.
Measured: a 3.04-second source with duration: 3 produced a 6.04-second clip — the original plus a three-second extension, not a re-render.
The duration range narrows in extend mode. The contract accepts 1–15 seconds, but an extension is actually limited to 2–10 seconds, and the source clip must itself be at least 2 seconds long. Neither limit is checked at submit time, so both come back as a task-level failure after the task is queued:Duration must be between 2 and 10 seconds · Input video must be at least 2 seconds long, got 1.0s

Parameters

Everything below goes inside input. The envelope is described in the async task API. There is no n — video models produce one clip per task.
Unlike the image models, video has no auto aspect ratio and no ultra-wide ratios. The seven values above are the complete list.

Resolution and duration

Measured output pixels, one sample per tier: 1080p is rejected on grok-imagine-video with 1080p is only available on grok-imagine-video-1.5. Clips come back about 0.04 seconds longer than requested — ask for 3 seconds and the file is 3.04 seconds. This is consistent across every sample and does not affect what you are charged, which follows the requested duration.

Reference images, first frames, and voices

Three different things can be fed in, and two of them are mutually exclusive:
  • images is a first frame. Exactly one image, and the clip animates outward from it.
  • reference_images is style and subject guidance, up to three images. Both models accept it, and using it caps the output at 720preference_images with 1080p is rejected with reference images are capped at 720p.
  • Passing both is rejected: cannot be combined with images; a first frame and reference images are different modes.
voice_ids selects preset voices on grok-imagine-video-1.5, up to three per clip. The accepted values are: Custom voices are not available on WideRouter. Note that the voice id itself is not validated at submit time — an unrecognized name is accepted, and the task then fails. Neither voices nor generate_audio: false changes the price.

Pricing

These models are served through the Grok-Official group. WideRouter’s list price matches xAI’s official price exactly — the discount lives in the group multiplier, which is 0.8 for Grok-Official. So what you pay is:
Video is priced per second of output, by resolution. These are list prices: Three rules that the per-second rate alone does not tell you:
  • Media you send in is charged too. A reference image adds roughly $0.01; a source clip for edit or extend is charged per second of its own length, around $0.01 per second.
  • extend does not re-charge the original. Only the new segment is priced at the per-second rate, plus the source clip as an input. Measured: extending a 3.04-second clip by 3 seconds cost $0.18 — three seconds of output at $0.05 plus 3.04 seconds of input at $0.01 — while the result is 6.04 seconds long. Regenerating six seconds from scratch would have cost $0.30.
  • edit costs about the source length twice, once as output and once as input. Measured: a 1.04-second clip edited for $0.06.
A worked example, end to end. Three seconds of 480p on grok-imagine-video:
A completed task carries usage.cost_in_usd_ticks, where 10000000000 ticks is $1. That figure is the list price — before your group multiplier. Multiply it by your group’s rate to get what actually leaves your balance.

Latency

Measured end to end on the async API, submit to completed: Generation is much faster than the “usually several minutes” that video models are often described with, but it is still slow enough that holding a connection open is not an option — which is why there is no synchronous endpoint. Poll every two to three seconds and size your client timeout from the slowest row here, not the fastest.

When a task fails

Video failures land as a failed task with an error object, not as an HTTP error — the read endpoint still returns 200. The common code is upstream_error, and the message is passed through from xAI:
Failures that happen before generation starts are fast — under a second for an unreachable input, about six seconds for a constraint the upstream model enforces.

Next steps

Playground

Submit a real video task from the browser and poll it to completion.

Grok Imagine image

The image half of the family — three variants and the quality grid.