# Grok Imagine Video 1.5 API

> Grok Imagine Video 1.5 — high-quality AI video generation.

- **Provider**: Grok
- **Model id**: `grok-imagine-video-1-5-preview`
- **Modality**: video
- **Price**: 2.16–3.91 credits /sec

## Overview

Grok Imagine Video 1.5 is called in two steps: create a generation task, then poll the task until the result is ready.

## Authentication

All requests require a Bearer Token in the request header:

```
Authorization: Bearer YOUR_API_KEY
```

## Create Task

`POST https://you.bot/api/v1/generate`

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| modelId | string | Yes | Model id: `grok-imagine-video-1-5-preview` |
| input | object | Yes | Input parameters object (see below) |
| callbackUrl | string | No | https URL we POST the finished task to. Signed with `X-Webhook-Signature` once you create a webhook signing key in Dashboard → Settings |

### input object parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| prompt | string | No | Prompt for video generation Max 4096 characters. (example: Create an 8-second cinematic product film. Slow push-in on a matte-black wireless speaker turning a quarter revolution on a brushed-steel plinth, dust motes… — full value in the request example) |
| image_urls | string[] | Yes | Upload an image file to use as input for the API (image URL) |
| aspect_ratio | string | No | Aspect ratio for video generation.If not uploaded, follow the image size. (options: auto \| 1:1 \| 16:9 \| 9:16 \| 3:2 \| 2:3) (default: auto) |
| resolution | string | No | Resolution for video generation. (options: 480p \| 720p) (default: 480p) |
| duration | number | No | Video duration in seconds. Range: [1, 15]. Default: 8. (range 1-15) (default: 8) |
| nsfw_checker | boolean | No | A configurable parameter. Defaults to true in the Playground. (true/false) (default: true) |

### Request example

```json
{
  "modelId": "grok-imagine-video-1-5-preview",
  "input": {
    "prompt": "Create an 8-second cinematic product film. Slow push-in on a matte-black wireless speaker turning a quarter revolution on a brushed-steel plinth, dust motes drifting through a single hard key light. Deep shadows, one warm rim highlight tracing the top edge, shallow depth of field settling on the speaker grille. Steady tripod move, no cuts, no camera shake. Ultra-realistic commercial cinematography. No logos, no brand references, no watermark, no people.",
    "image_urls": [
      "https://you.bot/examples/grok-imagine-text-to-image.jpg"
    ],
    "aspect_ratio": "auto",
    "resolution": "480p",
    "duration": 8,
    "nsfw_checker": true
  }
}
```

### Response example

```json
{
  "taskId": "281e5b0…f39b9",
  "creditsCharged": 17.16
}
```

## Query Task

`GET https://you.bot/api/v1/task/{taskId}?model=grok-imagine-video-1-5-preview`

When `state` is `success`, the output is in `resultUrls`: `{ "state": "success", "resultUrls": [ ... ] }`. (Text models return inline in the create response.)

## Error Codes

| Code | Description |
|------|-------------|
| 200 | Request successful |
| 400 | Invalid request parameters |
| 401 | Authentication failed — check API Key |
| 402 | Insufficient account balance |
| 403 | IP not allowed for this key, or the key is restricted to other models |
| 404 | Task not found, or it has expired |
| 409 | Duplicate request — an identical submit arrived moments ago. Nothing was charged; retry is safe |
| 413 | Payload too large — see the character and file-size limits for this model |
| 429 | Rate limit exceeded — retry after the Retry-After header |
| 500 | Internal server error |
| 504 | Upstream timed out — nothing was delivered; retry is safe |
