> ## Documentation Index
> Fetch the complete documentation index at: https://docs.toapis.com/llms.txt
> Use this file to discover all available pages before exploring further.

# MiniMax-Hailuo-02 動画生成

> Generate videos using MiniMax Hailuo 02 model, supporting text-to-video, image-to-video, and first-last-frame generation

> [!NOTE]
>
> **中国本土のユーザー向け：** 中国本土のユーザーは `https://toapis.cn` を API エンドポイント（Base URL）としてご利用ください。本ドキュメント内の例では `https://toapis.com` を `https://toapis.cn` に置き換えてください。

* Async task API, returns task ID upon submission
* Supported model: `MiniMax-Hailuo-02`
* Three generation modes: text-to-video, image-to-video, first-last-frame generation
* Supports 512P / 768P / 1080P resolution, 6-second and 10-second duration

> [!WARNING]
>
> Please provide publicly accessible image URLs. Do not pass base64 image data directly in `image_urls` or `metadata`; upload local images first using the [Upload 画像API](https://docs.toapis.com/docs/ja/api-reference/uploads/images.md) to get URLs.

## 認証

**Authorization** `string` *required*

All endpoints require Bearer Token authentication.

```
Authorization: Bearer YOUR_API_KEY
```

## リクエストパラメータ

**model** `string` *required*

モデル name, fixed as `MiniMax-Hailuo-02`.

**prompt** `string`

Video content description, max **2000 characters**.

* **必須** for text-to-video mode
* 任意 for image-to-video and first-last-frame modes (can describe desired motion)

Supports 15 camera directives (e.g., `[Push in]`, `[Pull out]`, `[Pan left, Pedestal up]`), see the Camera Directives table below.

Example: `"A mouse runs toward the camera, smiling and blinking"`

**duration** `integer` (default: 6)

Video duration in seconds.

Options: `6` or `10`

> [!WARNING]
>
> When using `1080P` resolution, only `6` seconds is supported.

**resolution** `string` (default: 768P)

Video resolution.

Options:

* `512P` - Standard definition (available for image-to-video)
* `768P` - HD (default)
* `1080P` - Full HD (6-second duration only)

**image\_urls** `string[]`

First frame image URL array.

* Not provided: text-to-video
* 1 image: image-to-video, image used as video starting frame

Image requirements:

* Format: JPG, JPEG, PNG, WebP
* Size: under 20MB
* Dimensions: short side > 300px, aspect ratio between 2:5 and 5:2

Example: `["https://example.com/first-frame.jpg"]`

**metadata** `object`

Extended parameters.

**Show metadata fields**

**last\_frame\_image** `string`

Last frame image URL for **first-last-frame generation mode**.

When provided, the system generates a transition video from the first frame to the last frame.

* When both `image_urls` (first frame) and `last_frame_image` (last frame) are provided, video dimensions follow the first frame
* If first and last frame sizes differ, the model crops the last frame based on the first frame
* First-last-frame mode **does not support 512P** resolution

Image requirements are the same as `image_urls`.

Example: `"https://example.com/last-frame.jpg"`

**prompt\_optimizer** `boolean` (default: true)

Auto-optimize prompt. Set to `false` for more precise control.

**fast\_pretreatment** `boolean` (default: false)

Shorten prompt optimization time. Speeds up processing when enabled.

**aigc\_watermark** `boolean` (default: false)

Whether to add watermark to the generated video.

**callback\_url** `string`

ToAPIs 最終 Task Webhook。Token URL と secret を設定してください。[Webhook](https://docs.toapis.com/docs/ja/api-reference/webhooks/task-webhooks.md)。

## Three Generation Modes

| Mode | image\_urls | metadata.last\_frame\_image | 説明 |
| - | :-: | :-: | - |
| Text-to-Video | Not provided | Not provided | Generate video from text description |
| Image-to-Video | ✅ 1 image | Not provided | Generate video with image as first frame |
| First-Last-Frame | ✅ 1 image (first frame) | ✅ Provided (last frame) | Generate transition video from first to last frame |

## Resolution and Duration Combinations

| Resolution | Supported Durations | Text-to-Video | Image-to-Video | First-Last-Frame |
| - | - | :-: | :-: | :-: |
| 512P | 6s, 10s | ✅ | ✅ | ❌ |
| 768P | 6s, 10s | ✅ | ✅ | ✅ |
| 1080P | 6s | ✅ | ✅ | ✅ |

## Camera Directives

Use `[directive]` syntax in `prompt` to control camera movement:

| Category | Directives |
| - | - |
| Pan | `[Pan left]` `[Pan right]` |
| Tilt | `[Tilt up]` `[Tilt down]` |
| Push/Pull | `[Push in]` `[Pull out]` |
| Pedestal | `[Pedestal up]` `[Pedestal down]` |
| Truck | `[Truck left]` `[Truck right]` |
| Zoom | `[Zoom in]` `[Zoom out]` |
| Other | `[Shake]` `[Tracking shot]` `[Static shot]` |

**Usage rules:**

* Combine up to 3 directives in one bracket for simultaneous movement, e.g., `[Pan left, Pedestal up]`
* Sequence directives in the prompt for ordered camera moves, e.g., `"...[Push in], then...[Pull out]"`

## レスポンス

**id** `string`

Task ID for querying task status.

**object** `string`

Object type, always `generation.task`.

**model** `string`

モデル name used for this request.

**status** `string`

Task status: `queued`, `in_progress`, `completed`, or `failed`.

**created\_at** `integer`

Task creation timestamp.

## Examples

### Text-to-Video

```json theme={null}
{
  "model": "MiniMax-Hailuo-02",
  "prompt": "City night scene, neon lights flickering, traffic flowing [Push in]",
  "duration": 6,
  "resolution": "1080P"
}
```

### Image-to-Video

```json theme={null}
{
  "model": "MiniMax-Hailuo-02",
  "prompt": "Person slowly turns around, smiling",
  "image_urls": ["https://example.com/portrait.jpg"],
  "duration": 6,
  "resolution": "768P"
}
```

### First-Last-Frame Generation

```json theme={null}
{
  "model": "MiniMax-Hailuo-02",
  "prompt": "A little girl grows up",
  "image_urls": ["https://example.com/child.jpg"],
  "duration": 6,
  "resolution": "1080P",
  "metadata": {
    "last_frame_image": "https://example.com/adult.jpg"
  }
}
```

### Camera Control

```json theme={null}
{
  "model": "MiniMax-Hailuo-02",
  "prompt": "A man picks up a book [Pedestal up], then reads [Static shot]",
  "duration": 6,
  "resolution": "768P"
}
```

### 10-Second Long Video + Fast Preprocessing

```json theme={null}
{
  "model": "MiniMax-Hailuo-02",
  "prompt": "Waves crashing on the beach at sunset, golden light shimmering on the water",
  "duration": 10,
  "resolution": "768P",
  "metadata": {
    "prompt_optimizer": true,
    "fast_pretreatment": true
  }
}
```

> [!NOTE]
>
> Video generation is an async task. Use [Get Video Task ステータス](https://docs.toapis.com/docs/ja/api-reference/tasks/video-status.md) to query progress and results.

```bash cURL theme={null}
curl --request POST \
  --url https://toapis.com/v1/videos/generations \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "MiniMax-Hailuo-02",
    "prompt": "City night scene, neon lights flickering, traffic flowing",
    "duration": 6,
    "resolution": "1080P"
  }'
```

```python Python theme={null}
import requests

response = requests.post(
    "https://toapis.com/v1/videos/generations",
    headers={
        "Authorization": "Bearer your-ToAPIs-key",
        "Content-Type": "application/json",
    },
    json={
        "model": "MiniMax-Hailuo-02",
        "prompt": "City night scene, neon lights flickering, traffic flowing",
        "duration": 6,
        "resolution": "1080P",
    },
)

print(response.json())
```

```javascript JavaScript theme={null}
const response = await fetch("https://toapis.com/v1/videos/generations", {
  method: "POST",
  headers: {
    Authorization: "Bearer your-ToAPIs-key",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    model: "MiniMax-Hailuo-02",
    prompt: "City night scene, neon lights flickering, traffic flowing",
    duration: 6,
    resolution: "1080P"
  })
});

console.log(await response.json());
```

```json 200 theme={null}
{
  "id": "vid_01K8SGYNNNVBQTXNR4MM964S7K",
  "object": "generation.task",
  "model": "MiniMax-Hailuo-02",
  "status": "queued",
  "progress": 0,
  "created_at": 1768380224,
  "metadata": {}
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.