Source: https://ailoot.ai/models/en/grok-imagine-video-1-5/
Canonical: https://ailoot.ai/models/en/grok-imagine-video-1-5/
Language: en

# grok-imagine-video-1.5

[Markdown](https://ailoot.ai/models/en/grok-imagine-video-1-5/index.md) · [JSON](https://ailoot.ai/models/en/grok-imagine-video-1-5/facts.json)

## [grok-imagine-video-1.5](https://ailoot.ai/models/en/grok-imagine-video-1-5/)

Grok Imagine Video 1.5 creates 1–15-second videos from text, including 1080p. The model itself supports image animation, visual references, keyframe staging and an audio track.

- [**Ailoot · Video** `POST /v1/videos/generations` `grok-imagine-video-1.5`](https://ailoot.ai/models/en/grok-imagine-video-1-5/#method-0)
- [**Ailoot · Video** `POST /v1/videos/generations` `grok-imagine-video-1.5-2026-05-30`](https://ailoot.ai/models/en/grok-imagine-video-1-5/#method-1)

About the model

This description covers the model’s capabilities. Available in Ailoot inputs, outputs and options are listed for the selected method below.

#### Creating a video scene

Grok Imagine Video 1.5 is an xAI model for generating videos from text descriptions and visual material. Ailoot's current method publishes generation from text; additional modes of the model itself allow image animation, use of references and specification of anchor frames in a scene.

The result is created asynchronously: after a task is submitted, readiness is checked through its identifier. According to xAI, the process may take several minutes depending on scene complexity, duration and resolution. Receiving a task identifier does not yet mean the video is ready.

#### Duration, proportions and resolution

Generated videos last **1 to 15 seconds**. `1:1`, `16:9`, `9:16`, `4:3`, `3:4`, `3:2` or `2:3` can be selected; the standard format for text is `16:9`. Image animation retains the image's proportions by default.

**480p, 720p and 1080p** are available for generation from text and a starting image. 480p is the default; reference mode is limited to 720p. The existence of 1080p in the model does not mean it applies to every mode.

#### Controlling appearance

In reference mode, xAI accepts up to **7 images**. They define people, objects, clothing and other visual characteristics without fixing the initial frame. This method is intended for scenes with a recurring character, product demonstrations and retention of the desired appearance across different stagings.

#### First, last and intermediate frames

Version 1.5 allows the exact first frame, exact last frame or both to be fixed. If only the last is specified, the model constructs the beginning itself and arrives at the supplied image. With both boundaries specified, it creates movement between them; a text instruction can refine motion and camera work.

For storyboarding within a video, up to **4 keyframes** can be fixed. Each time must be strictly after the start and before the end; placement follows a **1/3-second** grid. Two frames that round to the same grid point are rejected. To avoid this, leave at least 1/3 second between them. First and last frames are specified separately from these four intermediate frames.

Anchor frames can be combined with visual references and preset voices. If at least one frame is fixed, a text description is optional: the image sequence itself defines the scene. Keyframes cannot be used with video-editing mode. These xAI capabilities do not mean they are available in Ailoot's published text-based generation.

#### Audio and voices

A generated video contains an audio track by default; a silent result is also provided. In xAI's voice-reference mode, up to **3 preset voices** can be selected and associated with speaking participants in the scene.

Supplying a custom audio file as a voice sample is not a general capability of this model: xAI provides it separately on request. A preset voice and uploaded audio are different types of input.

#### Operating modes

Text-to-video generation creates a new scene; a starting image defines its beginning; references guide appearance; fixed frames specify visual points in time. Each mode has its own limitations, so settings from one method cannot be unconditionally applied to another.

**Ailoot · Video** `POST /v1/videos/generations` `grok-imagine-video-1.5`

[`grok-imagine-video-1.5`](https://ailoot.ai/models/en/#m=grok-imagine-video-1.5&route=Core&caller=grok-imagine-video-1.5&fmt=videos)

xAI /`grok-imagine-video-1.5`

Model ID

- `grok-imagine-video-1.5`
- `grok-imagine-video-1.5-2026-05-30`

### Overview

Grok Imagine Video 1.5 creates 1–15-second videos from text, including 1080p. The model itself supports image animation, visual references, keyframe staging and an audio track.

Accepted inputs

Text

Results

Video

### Available in Ailoot · inputs & methods

**Ailoot · Video** `POST /v1/videos/generations`

Input types

`text`

Output types

`video`

Output format

mp4

| Field | Type | Requirement | Values & limits | Default |
| --- | --- | --- | --- | --- |
| Field`model` | Type`string` | RequirementRequired | Values & limits grok-imagine-video-1.5 | Default— |
| Field`prompt` | Type`string` | RequirementOptional | Values & limits Minimum length: 1 | Default— |
| Field`duration` | Type`integer` | RequirementOptional | Values & limits Minimum: 1 Maximum: 15 Conditions: Do not supply bothdurationandseconds Unit: seconds | Default1 |
| Field`seconds` | Type`integer\|integer_string` | RequirementOptional | Values & limits Minimum: 1 Maximum: 15 Alternative: duration | Default— |
| Field`resolution` | Type`string` | RequirementOptional | Values & limits 480p, 720p, 1080p | Default480p |
| Field`aspect_ratio` | Type`string` | RequirementOptional | Values & limits 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3 Conditions: Ifimageinputsuppliedandratioomitted,providerinheritsimageaspect | Default16:9 |
| Field`size` | Type`string` | RequirementOptional | Values & limits 1280x720, 720x1280, 1920x1080, 1080x1920 Conditions: Mustagreewithresolution/aspect\_ratioifbothspecified | Default— |
| Field`image` | Type`object` | RequirementOptional | Values & limits Conditions: Actualsupportedinputimage; permitsomittingprompt | Default— |

Input material combinations

**Text to video** · Required: prompt

**Image to video** · Required: image

Method parameters and lifecycle

| Parameter | Contract |
| --- | --- |
| Parameter`material_types` | Contracttext |
| Parameter`required` | Contractnull |
| Parameter`optional_controls` | Contractnull |

Lifecycle: `submit_once_poll_original`

`GET /v1/videos/{request_id}`

`GET /v1/videos/generations/{request_id}`

`GET /v1/videos/{request_id}/content`

`GET /v1/videos/generations/{request_id}/content`

Method shapes and IDs are exact; supplier capability is separate from admission.

### Pricing

#### Ailoot method rates

Input

$0.01 *per input image*

Output

$0.25 *per second at 1080p*

Output

$0.08 *per second at 480p*

Output

$0.14 *per second at 720p*

Ailoot reserves an estimated amount before a request. After the result, it settles the final charge from measured usage. Streaming settlement uses the final usage record. [How reservation and settlement work →](https://ailoot.ai/docs/en/billing/reserve/)

### Example requests

#### Ailoot · Video

Video example

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
curl https://api.ailoot.ai/v1/videos/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "grok-imagine-video-1.5", "prompt": "A person walks slowly through a quiet garden as the camera tracks from the side."}'
```

### Receive and save results

#### Ailoot · Video

mp4

- `GET /v1/videos/{request_id}`
- `GET /v1/videos/generations/{request_id}`
- `GET /v1/videos/{request_id}/content`
- `GET /v1/videos/generations/{request_id}/content`

##### Check job status

GET status

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_VIDEO_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_VIDEO_ID
video_id=$(python3 -c 'import os, urllib.parse; print(urllib.parse.quote(os.environ["AILOOT_VIDEO_ID"], safe=""))') || exit 1
curl "https://api.ailoot.ai/v1/videos/generations/$video_id" \
  -H "Authorization: Bearer $AILOOT_API_KEY"
```

Other content reads

GET content

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_VIDEO_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_VIDEO_ID
video_id=$(python3 -c 'import os, urllib.parse; print(urllib.parse.quote(os.environ["AILOOT_VIDEO_ID"], safe=""))') || exit 1
curl "https://api.ailoot.ai/v1/videos/generations/$video_id/content" \
  -H "Authorization: Bearer $AILOOT_API_KEY" \
  --output video.mp4
```

##### Keep all completed results

Save every completed video or returned file; retrieve every actual returned asset URL.

Keep the complete status JSON and the actual request\_id. A completed response with status=done contains video.url with an owned content URL. Preserve the reported duration and every returned result field.

##### If the original response needs checking

Read existing original job; never resubmit unknown send.

Response fields

| Field | Type |
| --- | --- |
| Field`request_id` | Typestring |
| Field`id` | Typestring |
| Field`status` | Typestring |
| Field`video.url` | Typeowned signed content URL |
| Field`video.duration` | Typenumber |
| Field`video.respect_moderation` | Typeboolean |

Errors and next steps

| Response | Condition | Next step |
| --- | --- | --- |
| Response400 · `invalid_request_error` | ConditionInvalid required fields, material representation or parameter value | Next stepCorrect the indicated fields before a new creation request. |
| Response409 · `video_not_ready` | ConditionOriginal result content is not yet available | Next stepPoll the original returned ID and respect Retry-After. |
| Response`server_error` | ConditionThe returned response says the operation or result requires a check | Next stepKeep the original returned operation/task ID, request headers and response; continue supported reads of that original operation. Do not resubmit the creation request. |

### Aliases

#### Model aliases

**Ailoot** [`grok-imagine-video-1.5`](https://ailoot.ai/models/en/#m=grok-imagine-video-1.5&route=Core&caller=grok-imagine-video-1.5&fmt=videos), [`grok-imagine-video-1.5-2026-05-30`](https://ailoot.ai/models/en/#m=grok-imagine-video-1.5&route=Core&caller=grok-imagine-video-1.5-2026-05-30&fmt=videos)

#### Method path aliases

Use the method paths shown above.

#### Related caller IDs

[`grok-imagine-video-1.5`](https://ailoot.ai/models/en/#m=grok-imagine-video-1.5&route=Core&caller=grok-imagine-video-1.5&fmt=videos), [`grok-imagine-video-1.5-2026-05-30`](https://ailoot.ai/models/en/#m=grok-imagine-video-1.5&route=Core&caller=grok-imagine-video-1.5-2026-05-30&fmt=videos)

**Ailoot · Video** `POST /v1/videos/generations` `grok-imagine-video-1.5-2026-05-30`

[`grok-imagine-video-1.5-2026-05-30`](https://ailoot.ai/models/en/#m=grok-imagine-video-1.5&route=Core&caller=grok-imagine-video-1.5-2026-05-30&fmt=videos)

xAI /`grok-imagine-video-1.5-2026-05-30`

Model ID

- `grok-imagine-video-1.5`
- `grok-imagine-video-1.5-2026-05-30`

### Overview

Grok Imagine Video 1.5 creates 1–15-second videos from text, including 1080p. The model itself supports image animation, visual references, keyframe staging and an audio track.

Accepted inputs

Text

Results

Video

### Available in Ailoot · inputs & methods

**Ailoot · Video** `POST /v1/videos/generations`

Input types

`text`

Output types

`video`

Output format

mp4

| Field | Type | Requirement | Values & limits | Default |
| --- | --- | --- | --- | --- |
| Field`model` | Type`string` | RequirementRequired | Values & limits grok-imagine-video-1.5-2026-05-30 | Default— |
| Field`prompt` | Type`string` | RequirementOptional | Values & limits Minimum length: 1 | Default— |
| Field`duration` | Type`integer` | RequirementOptional | Values & limits Minimum: 1 Maximum: 15 Conditions: Do not supply bothdurationandseconds Unit: seconds | Default1 |
| Field`seconds` | Type`integer\|integer_string` | RequirementOptional | Values & limits Minimum: 1 Maximum: 15 Alternative: duration | Default— |
| Field`resolution` | Type`string` | RequirementOptional | Values & limits 480p, 720p, 1080p | Default480p |
| Field`aspect_ratio` | Type`string` | RequirementOptional | Values & limits 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3 Conditions: Ifimageinputsuppliedandratioomitted,providerinheritsimageaspect | Default16:9 |
| Field`size` | Type`string` | RequirementOptional | Values & limits 1280x720, 720x1280, 1920x1080, 1080x1920 Conditions: Mustagreewithresolution/aspect\_ratioifbothspecified | Default— |
| Field`image` | Type`object` | RequirementOptional | Values & limits Conditions: Actualsupportedinputimage; permitsomittingprompt | Default— |

Input material combinations

**Text to video** · Required: prompt

**Image to video** · Required: image

Method parameters and lifecycle

| Parameter | Contract |
| --- | --- |
| Parameter`material_types` | Contracttext |
| Parameter`required` | Contractnull |
| Parameter`optional_controls` | Contractnull |

Lifecycle: `submit_once_poll_original`

`GET /v1/videos/{request_id}`

`GET /v1/videos/generations/{request_id}`

`GET /v1/videos/{request_id}/content`

`GET /v1/videos/generations/{request_id}/content`

Method shapes and IDs are exact; supplier capability is separate from admission.

### Pricing

#### Ailoot method rates

Input

$0.01 *per input image*

Output

$0.25 *per second at 1080p*

Output

$0.08 *per second at 480p*

Output

$0.14 *per second at 720p*

Ailoot reserves an estimated amount before a request. After the result, it settles the final charge from measured usage. Streaming settlement uses the final usage record. [How reservation and settlement work →](https://ailoot.ai/docs/en/billing/reserve/)

### Example requests

#### Ailoot · Video

Video example

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
curl https://api.ailoot.ai/v1/videos/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "grok-imagine-video-1.5-2026-05-30", "prompt": "A person walks slowly through a quiet garden as the camera tracks from the side."}'
```

### Receive and save results

#### Ailoot · Video

mp4

- `GET /v1/videos/{request_id}`
- `GET /v1/videos/generations/{request_id}`
- `GET /v1/videos/{request_id}/content`
- `GET /v1/videos/generations/{request_id}/content`

##### Check job status

GET status

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_VIDEO_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_VIDEO_ID
video_id=$(python3 -c 'import os, urllib.parse; print(urllib.parse.quote(os.environ["AILOOT_VIDEO_ID"], safe=""))') || exit 1
curl "https://api.ailoot.ai/v1/videos/generations/$video_id" \
  -H "Authorization: Bearer $AILOOT_API_KEY"
```

Other content reads

GET content

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_VIDEO_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_VIDEO_ID
video_id=$(python3 -c 'import os, urllib.parse; print(urllib.parse.quote(os.environ["AILOOT_VIDEO_ID"], safe=""))') || exit 1
curl "https://api.ailoot.ai/v1/videos/generations/$video_id/content" \
  -H "Authorization: Bearer $AILOOT_API_KEY" \
  --output video.mp4
```

##### Keep all completed results

Save every completed video or returned file; retrieve every actual returned asset URL.

Keep the complete status JSON and the actual request\_id. A completed response with status=done contains video.url with an owned content URL. Preserve the reported duration and every returned result field.

##### If the original response needs checking

Read existing original job; never resubmit unknown send.

Response fields

| Field | Type |
| --- | --- |
| Field`request_id` | Typestring |
| Field`id` | Typestring |
| Field`status` | Typestring |
| Field`video.url` | Typeowned signed content URL |
| Field`video.duration` | Typenumber |
| Field`video.respect_moderation` | Typeboolean |

Errors and next steps

| Response | Condition | Next step |
| --- | --- | --- |
| Response400 · `invalid_request_error` | ConditionInvalid required fields, material representation or parameter value | Next stepCorrect the indicated fields before a new creation request. |
| Response409 · `video_not_ready` | ConditionOriginal result content is not yet available | Next stepPoll the original returned ID and respect Retry-After. |
| Response`server_error` | ConditionThe returned response says the operation or result requires a check | Next stepKeep the original returned operation/task ID, request headers and response; continue supported reads of that original operation. Do not resubmit the creation request. |

### Aliases

#### Model aliases

**Ailoot** [`grok-imagine-video-1.5`](https://ailoot.ai/models/en/#m=grok-imagine-video-1.5&route=Core&caller=grok-imagine-video-1.5&fmt=videos), [`grok-imagine-video-1.5-2026-05-30`](https://ailoot.ai/models/en/#m=grok-imagine-video-1.5&route=Core&caller=grok-imagine-video-1.5-2026-05-30&fmt=videos)

#### Method path aliases

Use the method paths shown above.

#### Related caller IDs

[`grok-imagine-video-1.5`](https://ailoot.ai/models/en/#m=grok-imagine-video-1.5&route=Core&caller=grok-imagine-video-1.5&fmt=videos), [`grok-imagine-video-1.5-2026-05-30`](https://ailoot.ai/models/en/#m=grok-imagine-video-1.5&route=Core&caller=grok-imagine-video-1.5-2026-05-30&fmt=videos)

FAQ · grok-imagine-video-1.5

What inputs and results are available?

`POST /v1/videos/generations` · `grok-imagine-video-1.5`: `text` → `video` `POST /v1/videos/generations` · `grok-imagine-video-1.5-2026-05-30`: `text` → `video`

Which fields does the request use?

`POST /v1/videos/generations` · `grok-imagine-video-1.5`: `model`, `prompt`, `duration`, `seconds`, `resolution`, `aspect_ratio`, `size`, `image` `POST /v1/videos/generations` · `grok-imagine-video-1.5-2026-05-30`: `model`, `prompt`, `duration`, `seconds`, `resolution`, `aspect_ratio`, `size`, `image`

What limits apply?

`POST /v1/videos/generations` · `grok-imagine-video-1.5`: `duration.minimum`: `1`; `duration.maximum`: `15`; `seconds.minimum`: `1`; `seconds.maximum`: `15` `POST /v1/videos/generations` · `grok-imagine-video-1.5-2026-05-30`: `duration.minimum`: `1`; `duration.maximum`: `15`; `seconds.minimum`: `1`; `seconds.maximum`: `15`

Connect Ailoot to Claude Code, OpenCode, Hermes or your own app.

## The company and its project portfolio

The company and its project portfolio: millions of customers; monthly sales in the billions.

## Buy tokens at a discount.

Subscription discounts for regular use. Promo codes offer up to 50% off token purchases.

Subscription

Choose a discounted plan for your regular requests.

Promo code: up to 50% off

Enter your code at checkout. The price updates to reflect the current promotion.

Spending in your history

The model, tokens and amount are recorded for each request.

[Choose a subscription](https://ailoot.ai/docs/en/billing/subscriptions/) · [View model prices](https://ailoot.ai/models/en/)

## Connect the API to a product you sell.

Use Ailoot in SaaS, apps and bots under its official service offer and licence agreement. Request a reseller licence for resale.

Commercial application

Add text, image, video and audio generation to paid features in your service.

Reseller licence

Send a description of your project and how you provide access. Request written terms for use and resale.

Documents on the website

The service offer, licence agreement and data processing policy are available before you connect.

[Request a reseller licence](mailto:support@ailoot.ai) · [Service offer and licence agreement](https://ailoot.ai/legal/offer?lang=en)

## Ailoot · The company and its project portfolio





Ailoot combines established operating experience, a large client base, stable service and ongoing KPI control.





The company and its project portfolio: millions of customers; monthly sales in the billions.





Ailoot brings that operating experience to API access for AI features in customer products, agents, applications and automations.
