Minimax Video 02
Playground
Try it on WavespeedAI!Hailuo 02 is an AI video generation model fine-tuned for ultra-clear 1080P output and handling complex physics-driven scenes. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
Features
MiniMax Video-02 — minimax/video-02
MiniMax Video-02 generates short video clips from a text prompt, with optional image guidance. Describe the subject, action, scene, and camera movement, and the model produces a coherent, motion-rich clip suitable for story beats, ads, and creative prototyping.
Key capabilities
- Text-to-video generation with strong motion and scene coherence
- Optional image input to anchor composition and style
- Camera-direction friendly prompting (follow, pull back, track, tilt, orbit)
- Prompt expansion option to automatically enhance prompts and enable the safety checker
Use cases
- Cinematic shot generation (camera moves, blocking, atmosphere)
- Storyboarding and pre-visualization for short scenes
- Marketing creatives and social clips with clear action cues
- Image-guided variants (keep a reference look while changing motion/camera)
Pricing
| Resolution | Price per video |
|---|---|
| 720p | $0.0625 |
| 1080p | $0.11 |
Parameters
- prompt (required): What happens in the video (subject, action, scene, camera, style)
- image (optional): Reference image to guide composition/style
- resolution: Output resolution (e.g., 720p, 1080p)
- duration: Video length (seconds)
- enable_prompt_expansion: Enhances the prompt automatically and enables the safety checker
Prompting tips
- Lead with action verbs (runs, spins, juggles, turns, laughs), then add camera language (pull back, track left, tilt up).
- Keep one “main event” per clip; add atmosphere as a second layer (dust, fog, rim light, crowd).
- If using an image, state what must stay consistent (character identity, outfit, composition) and what should change (motion, camera path, mood).
Authentication
For authentication details, please refer to the Authentication Guide.
API Endpoints
Submit Task & Query Result
# Submit the task
curl --location --request POST "https://api.wavespeed.ai/api/v3/minimax/video-02" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}" \
--data-raw '{
"resolution": "768p",
"duration": 6,
"enable_prompt_expansion": false
}'
# Get the result
curl --location --request GET "https://api.wavespeed.ai/api/v3/predictions/${requestId}/result" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}"
Parameters
Task Submission Parameters
Request Parameters
| Parameter | Type | Required | Default | Range | Description |
|---|---|---|---|---|---|
| prompt | string | Yes | - | The positive prompt for the generation. | |
| image | string | No | - | The model generates video with the picture passed in as the first frame.Base64 encoded strings in data:image/jpeg; base64,{data} format for incoming images, or URLs accessible via the public network. The uploaded image needs to meet the following conditions: Format is JPG/JPEG/PNG; The aspect ratio is greater than 2:5 and less than 5:2; Short side pixels greater than 300px; The image file size cannot exceed 20MB. | |
| resolution | string | No | 768p | 768p, 1080p | Video resolution. |
| duration | integer | No | 6 | 6 | The duration of the generated media in seconds. |
| enable_prompt_expansion | boolean | No | false | - | The model automatically optimizes incoming prompts to enhance output quality. This also activates the safety checker, which ensures content safety by detecting and filtering potential risks. |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data.id | string | Unique identifier for the prediction, Task Id |
| data.model | string | Model ID used for the prediction |
| data.outputs | array | Array of URLs to the generated content (empty when status is not completed) |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to retrieve the prediction result |
| data.has_nsfw_contents | array | Array of boolean values indicating NSFW detection for each output |
| data.status | string | Status of the task: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |
Result Request Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | Yes | - | Task ID |
Result Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data | object | The prediction data object containing all details |
| data.id | string | Unique identifier for the prediction, the ID of the prediction to get |
| data.model | string | Model ID used for the prediction |
| data.outputs | string | Array of URLs to the generated content (empty when status is not completed). |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to retrieve the prediction result |
| data.status | string | Status of the task: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |