Skip to main content
POST
/
v1
/
videos
/
generations
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"
  }'
{
  "id": "vid_01K8SGYNNNVBQTXNR4MM964S7K",
  "object": "generation.task",
  "model": "MiniMax-Hailuo-02",
  "status": "queued",
  "progress": 0,
  "created_at": 1768380224,
  "metadata": {}
}
  • 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
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 Image API to get URLs.

Authentication

Authorization
string
required
All endpoints require Bearer Token authentication.
Authorization: Bearer YOUR_API_KEY

Request Parameters

model
string
required
Model name, fixed as MiniMax-Hailuo-02.
prompt
string
Video content description, max 2000 characters.
  • Required for text-to-video mode
  • Optional 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
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.

Three Generation Modes

Modeimage_urlsmetadata.last_frame_imageDescription
Text-to-VideoNot providedNot providedGenerate video from text description
Image-to-Video✅ 1 imageNot providedGenerate 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

ResolutionSupported DurationsText-to-VideoImage-to-VideoFirst-Last-Frame
512P6s, 10s
768P6s, 10s
1080P6s

Camera Directives

Use [directive] syntax in prompt to control camera movement:
CategoryDirectives
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]"

Response

id
string
Task ID for querying task status.
object
string
Object type, always generation.task.
model
string
Model 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

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

Image-to-Video

{
  "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

{
  "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

{
  "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

{
  "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
  }
}
Video generation is an async task. Use Get Video Task Status to query progress and results.
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"
  }'
{
  "id": "vid_01K8SGYNNNVBQTXNR4MM964S7K",
  "object": "generation.task",
  "model": "MiniMax-Hailuo-02",
  "status": "queued",
  "progress": 0,
  "created_at": 1768380224,
  "metadata": {}
}