Grok Imagine Video 1.5
Generate 1–15 second videos at 480p, 720p or 1080p from text, one first frame, or up to seven reference images; billed per second of video.
- Asynchronous: the create call returns a task ID; the video arrives when the task succeeds.
- Three ways in: text only, one first frame, or up to seven reference images (1080p takes at most one).
- Any length from 1 to 15 whole seconds. Leave
durationout and you get 8 seconds at 480p. - Billed per second of video at the resolution you choose, so a 4-second clip costs half of an 8-second one. A failed task costs nothing.
Opens this model in the API Explorer. Enter your BeatAPI API key to create a task: the call is real and is billed to your own balance.
Endpoint and authentication
POST https://api.beatapi.io/v1/videos/tasks
Authorization
string
Required
Your BeatAPI API key, sent as Bearer <BEATAPI_API_KEY>. Create keys in the Dashboard. Keep keys on your server; never ship them in a browser or mobile app.
Send the body as JSON with Content-Type: application/json. Idempotency-Key is optional: send a unique value (at most 255 characters) per logical request and reuse it only to retry that exact body. Within 24 hours a retry with the same key and body returns the first response again with Idempotent-Replayed: true; the same key with a different body returns 409 idempotency_conflict. Responses other than 2xx are not stored, so a retry after a 400 or 402 runs again.
How a request works
Create the task
POST the parameters below to the endpoint. A 201 means the task was accepted and its price reserved from your balance; the work runs in the background. Save data.id.
Wait for it to finish
Call GET /v1/tasks/{task_id} and wait data.poll_after_seconds between calls (5 s for images, 8 s for videos) until status is succeeded or failed. Or register a webhook for task.succeeded and task.failed; keep polling as the fallback, because a task stopped by the processing timeout sends no event.
Save the result
On succeeded, download every data.output.media[].url and store the files you need; BeatAPI does not promise how long result URLs stay available. On failed, read data.error_code and data.error_message: the reserved amount was returned to your balance, and data.retryable says whether sending the same request again can succeed.
Input modes
Request parameters
model
string
Required
The model to run.
Value: grok-imagine-video-1.5
If the value is wrong
- Missing:
"model" is required - An image model sent to this endpoint:
"model" nano-banana-2 is served by POST /v1/images/tasks, not this endpoint
prompt
string
Required
What happens in the video: subject, action, camera movement and style. With reference images, say what each one is for.
Length: 1–4096 characters
- Refer to reference images by position, for example “the first reference image”.
- A very long prompt, or one in a language whose characters take several bytes, can pass this length check and still be refused after the task is created; the failed task says what to shorten and is refunded.
If the value is wrong
- Missing:
"prompt" is required - Empty or longer than the limit:
"prompt" has an unsupported length
images
string[]
Optional
One picture that becomes the first frame of the video.
Items: 1–1
Each item is a public https:// URL. For a local file, upload it first with POST /v1/files and pass the returned data.url.
- Exactly one link. For several pictures that guide the video without being its first frame, use
reference_images. - Do not send
aspect_ratiotogether withimages.
If the value is wrong
- Empty array:
"images" requires at least 1 item - More than one link:
"images" accepts at most 1 items - Combined with
reference_images:Cannot combine "images" with reference inputs in one task - Not an https:// link:
"images[0]" must be a public HTTPS URL - Sent together with
aspect_ratio:Grok Imagine Video 1.5 does not accept aspect_ratio with a single image
reference_images
string[]
Optional
One to seven pictures that guide the characters, products or style of the video.
Items: 1–7
Each item is a public https:// URL. For a local file, upload it first with POST /v1/files and pass the returned data.url.
- Images are used in list order; refer to them in the prompt by position.
- At
1080p, send one reference image at most. For more images, use480por720p.
If the value is wrong
- More than seven links:
"reference_images" accepts at most 7 items - An empty array:
"reference_images" requires at least 1 item - Combined with
images:Cannot combine "images" with reference inputs in one task 1080pwith more than one image:Grok Imagine Video 1.5 1080p accepts at most one image
duration
integer
OptionalDefault: 8
Length of the video in seconds, a whole number. It is what you are billed for.
Default: 8
Range: 1–15
- If you leave it out,
8is used and billed.usage.billable_duration_secondson the task shows the seconds the price is based on.
If the value is wrong
- Outside the range, not a whole number, or sent as a string:
"duration" is outside its supported range
aspect_ratio
string
OptionalDefault: 16:9
Shape of the video as width:height. auto leaves the choice to the model.
Allowed values: 1:1, 16:9, 9:16, 3:2, 2:3, auto
Default: 16:9
- If you leave it out in text or reference mode,
16:9is used. With a single first frame inimages, do not send it: the frame decides the shape.
If the value is wrong
- A value not in the list:
"aspect_ratio" must be one of: [1:1 16:9 9:16 3:2 2:3 auto] - Sent together with
images:Grok Imagine Video 1.5 does not accept aspect_ratio with a single image
resolution
string
OptionalDefault: 480p
Output resolution. A higher resolution costs more per second.
Allowed values: 480p, 720p, 1080p
Default: 480p
- Lower case only. The default is
480p, the cheapest tier. - With
reference_images,1080ptakes one image at most.
If the value is wrong
- A value not in the list (for example
1080P):"resolution" must be one of: [480p 720p 1080p] 1080pwith more than one reference image:Grok Imagine Video 1.5 1080p accepts at most one image
The gateway also checks these combinations before creating the task:
- images cannot be combined with reference inputs
Input media limits
The gateway reads every input before the task is created and refuses one outside these limits with a 400 bad_request that names the input. Nothing is charged.
- The gateway checks only that every image is a public HTTPS link. It does not measure size, format or dimensions before the task is created, so an image the model cannot use fails the task after submission; the message says what to change and the whole reservation is returned.
- Have a local file? Upload it with
POST /v1/filesand pass the returneddata.url.
Fields this model does not accept
Sending one of these is refused before anything is charged, instead of being ignored:
reference_videos,reference_audios,generate_audio,seed,quality,sound,watermark,task_type,output_format→field "reference_videos" is not supported by model grok-imagine-video-1.5(with the field you sent).- Any other unknown field →
unknown field: <name>.
Rules that depend on the mode
- These are checked when the task is created; a request that breaks one is refused with
400 bad_requestand costs nothing.
Request examples
Text to video
An 8-second 480p landscape clip, the cheapest setting.
First frame
The video starts from the image. aspect_ratio is left out on purpose.
Reference images
Two pictures guide the scene. At 1080p you could send only one.
Responses
Create a task (201)
The task object. output is null until the task succeeds. Fields marked “while running” disappear once the task finishes.
Finished task
GET /v1/tasks/{task_id} returns HTTP 200 with status: "succeeded" and the result in data.output.
Output fields
Failed task
A failed task is still HTTP 200 on GET /v1/tasks/{task_id}: the failure is in the body. The reservation is returned in full, so nothing is charged.
Complete example
Create a task, wait for it with the server’s polling hint, and print the result URLs. Set BEATAPI_API_KEY in your environment and install requests.
Billing
- The price is per second of video, at the resolution you choose: the list below shows 8-second clips, so divide by 8 for the rate (about 0.05 at 720p, $0.09 at 1080p).
- The same rate applies to text, first-frame and reference-image requests.
- The number of seconds is
duration, or 8 when you leave it out;usage.billable_duration_secondson the task shows it. - The price is reserved when the task is created and settled when the video is ready. A failed task, including one refused by moderation after submission, is refunded in full.
Current list prices, the same as on Pricing. An account with a negotiated discount pays less; data.usage on the task always shows the amount actually charged.
Common errors
HTTP errors at a glance
Errors before a task exists arrive as a non-2xx response, and nothing is charged. Branch on error.code or error.retryable; message names the problem. The full list and retry policy are on Errors.
Authentication
Send your API key as Authorization: Bearer <BEATAPI_API_KEY>.
Headers
Send the body as JSON with Content-Type: application/json. Idempotency-Key is optional: send a unique value (at most 255 characters) per logical request and reuse it only to retry that exact body. Within 24 hours a retry with the same key and body returns the first response again with Idempotent-Replayed: true; the same key with a different body returns 409 idempotency_conflict. Responses other than 2xx are not stored, so a retry after a 400 or 402 runs again.
Request
The model to run.
Value: grok-imagine-video-1.5
If the value is wrong
- Missing:
"model" is required - An image model sent to this endpoint:
"model" nano-banana-2 is served by POST /v1/images/tasks, not this endpoint
What happens in the video: subject, action, camera movement and style. With reference images, say what each one is for.
Length: 1–4096 characters
- Refer to reference images by position, for example “the first reference image”.
- A very long prompt, or one in a language whose characters take several bytes, can pass this length check and still be refused after the task is created; the failed task says what to shorten and is refunded.
If the value is wrong
- Missing:
"prompt" is required - Empty or longer than the limit:
"prompt" has an unsupported length
Shape of the video as width:height. auto leaves the choice to the model.
Allowed values: 1:1, 16:9, 9:16, 3:2, 2:3, auto
Default: 16:9
- If you leave it out in text or reference mode,
16:9is used. With a single first frame inimages, do not send it: the frame decides the shape.
If the value is wrong
- A value not in the list:
"aspect_ratio" must be one of: [1:1 16:9 9:16 3:2 2:3 auto] - Sent together with
images:Grok Imagine Video 1.5 does not accept aspect_ratio with a single image
Length of the video in seconds, a whole number. It is what you are billed for.
Default: 8
Range: 1–15
- If you leave it out,
8is used and billed.usage.billable_duration_secondson the task shows the seconds the price is based on.
If the value is wrong
- Outside the range, not a whole number, or sent as a string:
"duration" is outside its supported range
One picture that becomes the first frame of the video.
Items: 1–1
Each item is a public https:// URL. For a local file, upload it first with POST /v1/files and pass the returned data.url.
- Exactly one link. For several pictures that guide the video without being its first frame, use
reference_images. - Do not send
aspect_ratiotogether withimages.
If the value is wrong
- Empty array:
"images" requires at least 1 item - More than one link:
"images" accepts at most 1 items - Combined with
reference_images:Cannot combine "images" with reference inputs in one task - Not an https:// link:
"images[0]" must be a public HTTPS URL - Sent together with
aspect_ratio:Grok Imagine Video 1.5 does not accept aspect_ratio with a single image
One to seven pictures that guide the characters, products or style of the video.
Items: 1–7
Each item is a public https:// URL. For a local file, upload it first with POST /v1/files and pass the returned data.url.
- Images are used in list order; refer to them in the prompt by position.
- At
1080p, send one reference image at most. For more images, use480por720p.
If the value is wrong
- More than seven links:
"reference_images" accepts at most 7 items - An empty array:
"reference_images" requires at least 1 item - Combined with
images:Cannot combine "images" with reference inputs in one task 1080pwith more than one image:Grok Imagine Video 1.5 1080p accepts at most one image
Output resolution. A higher resolution costs more per second.
Allowed values: 480p, 720p, 1080p
Default: 480p
- Lower case only. The default is
480p, the cheapest tier. - With
reference_images,1080ptakes one image at most.
If the value is wrong
- A value not in the list (for example
1080P):"resolution" must be one of: [480p 720p 1080p] 1080pwith more than one reference image:Grok Imagine Video 1.5 1080p accepts at most one image
Response
The task object. output is null until the task succeeds. Fields marked “while running” disappear once the task finishes.

