Grok Imagine Video 1.5: generating clips billed by the second

grok-imagine-video-1.5 is 0.2× and charged per generated second, not per token. An 8-second 720p clip is $0.224. The call is asynchronous: create, poll, download.

Billing is per second of video, at 0.2×

This model has no context window and no output token limit, because tokens are not the unit. The catalog prices it per generated second, and the 0.2× multiplier applies to that per-second rate the same way it applies to a per-token rate elsewhere.

The official rates are $0.08 per second at 480p, $0.14 at 720p and $0.25 at 1080p. At 0.2× you are charged $0.016, $0.028 and $0.05 per second respectively. An 8-second 720p clip is 8 × $0.028 = $0.224; the same clip at 480p is $0.128 and at 1080p is $0.40.

Clips run from 1 to 15 seconds. The most expensive single generation available is therefore 15 seconds at 1080p: 15 × $0.05 = $0.75. There is no request you can make on this id that costs more than that.

The call is asynchronous: create, poll, download

Generation does not return a video inline. POST to /openai/v1/videos returns a video id immediately; you then poll GET /openai/v1/videos/{video_id} until it reports completion, and fetch the file from GET /openai/v1/videos/{video_id}/content.

That is three calls for one clip, and a client written against the chat-completions pattern will not work. Budget for the wait in your own timeouts rather than in the request: the create call answers fast because it has not made anything yet.

Authentication is the OpenAI-shaped one throughout — Authorization: Bearer $TOKEN_SHARE_KEY on all three calls, including the content download.

Create a clip, poll until it is ready, then download the file.
export TOKEN_SHARE_KEY="<your-pool-api-key>"

# 1. Create. Returns a video id; nothing is rendered yet.
VIDEO_ID=$(curl -sS https://token-share.app/openai/v1/videos \
  -H "Authorization: Bearer $TOKEN_SHARE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "grok-imagine-video-1.5",
    "prompt": "Animate a cinematic sunrise over snow-covered mountains",
    "seconds": "8",
    "resolution": "720p",
    "aspect_ratio": "16:9"
  }' | jq -r '.id')

echo "video id: $VIDEO_ID"

# 2. Poll until the job leaves the in-progress state.
until curl -sS "https://token-share.app/openai/v1/videos/$VIDEO_ID" \
  -H "Authorization: Bearer $TOKEN_SHARE_KEY" \
  | jq -e '.status != "queued" and .status != "in_progress"' >/dev/null; do
  sleep 5
done

# 3. Download the rendered file.
curl -L "https://token-share.app/openai/v1/videos/$VIDEO_ID/content" \
  -H "Authorization: Bearer $TOKEN_SHARE_KEY" \
  -o "$VIDEO_ID.mp4"

What you can ask for

Input can be text alone, a single guiding image, or a set of reference images — up to seven. Output resolutions are 480p, 720p and 1080p, and aspect ratios cover 1:1, 16:9, 9:16, 4:3, 3:4, 3:2 and 2:3, so vertical and square framings are first-class rather than a crop.

The catalog notes that 1080p availability depends on the xAI team attached to the account serving the request. Treat 1080p as a setting to verify on your own key rather than one to assume, and have a 720p fallback in the code path that generates it.

Resolution is a price decision as much as a quality one: 1080p is roughly 3.1× the per-second rate of 480p and 1.8× that of 720p. On a single clip the gap tops out at about half a dollar ($0.75 against $0.24 for 15 seconds); on a pipeline generating hundreds a day it is the largest lever you have on this id.

Estimating a video budget

Because the unit is a second, the estimate is a multiplication rather than a measurement — unlike token-billed models, you know the cost before the request runs. Clips per day × seconds per clip × the consumer per-second rate for your resolution.

Two hundred 6-second clips a day at 720p is 200 × 6 × $0.028 = $33.60 per day, about $1,008 over 30 days. The same volume at 480p is $19.20 a day; at 1080p it is $60. Halving the clip length halves each of those exactly.

One consequence worth designing around: a failed or discarded clip costs the same as a used one, because the charge attaches to the generation, not to whether you liked it. Prompt iteration on 480p and rendering finals at the resolution you ship is the cheapest way to work.

Common questions

Why is there no context window listed for this model?
Because it is not billed on tokens and does not consume a token context. The catalog reports no context or max-output figure for it, and any number you see quoted for those on a video model is invented. The unit here is a second of generated video.
Am I charged if the generation fails?
Billing attaches to an accepted generation and its requested length. A create call that is rejected outright does not produce billable seconds. A clip that renders successfully but that you decide not to use is billed normally — the charge is for generating it, not for keeping it.
Can I use the images endpoint for video, or the chat endpoint?
No. Video has its own route, /openai/v1/videos, with its own retrieve and content paths. The image ids — grok-imagine-image, grok-imagine-image-quality and gpt-image-2 — answer on /v1/images/generations and produce stills only. They are also billed in a different unit: the two Grok image ids carry the same 0.2× but apply it per image — $0.002 and $0.008 a picture — while this video id applies it per second.