curl --request POST \
--url https://api.evolink.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "minimax-h3-max-image-to-video",
"prompt": "Pull focus from the ramen bowl in the foreground to the people in the background. More steam rises naturally from the bowl as the camera gently pushes forward; preserve the characters and restaurant setting.",
"image_start": "https://cdn.hailuoai.com/prod/hailuo_demo/testsets/H3_AA_I2VA/gallery/sr_v17_variants_seed42_43_20260724/inputs/4a3a90bf9100_KDmcbkhzYo5sjjxr9FqcVmWVnzb.png",
"duration": 5,
"quality": "768p"
}
'{
"created": 1761313744,
"id": "task-unified-1774857405-abc123",
"model": "minimax-h3-max-image-to-video",
"object": "video.generation.task",
"progress": 0,
"status": "pending",
"task_info": {
"can_cancel": false,
"estimated_time": 165,
"video_duration": 5
},
"type": "video",
"usage": {
"billing_rule": "per_second",
"credits_reserved": 44.2,
"user_group": "default"
}
}{
"error": {
"code": "invalid_request",
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}{
"error": {
"code": "unauthorized",
"message": "Invalid or expired token",
"type": "authentication_error"
}
}{
"error": {
"code": "insufficient_quota",
"message": "Insufficient quota. Please top up your account.",
"type": "insufficient_quota"
}
}{
"error": {
"code": "model_access_denied",
"message": "Token does not have access to model: minimax-h3-max-image-to-video",
"type": "invalid_request_error"
}
}{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}{
"error": {
"code": "internal_error",
"message": "Internal server error",
"type": "api_error"
}
}Minimax H3 Max Image-to-Video
- Provide at least one of
image_startorimage_end; first-frame-only, last-frame-only, and first-and-last-frame modes are supported - Output duration:
5–15seconds; resolution480por768p(default) - The model automatically adapts the output aspect ratio to the input image; do not send
aspect_ratio - Asynchronous processing; use the returned task ID to query status
- Generated video URLs are valid for 24 hours; save them promptly
curl --request POST \
--url https://api.evolink.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "minimax-h3-max-image-to-video",
"prompt": "Pull focus from the ramen bowl in the foreground to the people in the background. More steam rises naturally from the bowl as the camera gently pushes forward; preserve the characters and restaurant setting.",
"image_start": "https://cdn.hailuoai.com/prod/hailuo_demo/testsets/H3_AA_I2VA/gallery/sr_v17_variants_seed42_43_20260724/inputs/4a3a90bf9100_KDmcbkhzYo5sjjxr9FqcVmWVnzb.png",
"duration": 5,
"quality": "768p"
}
'{
"created": 1761313744,
"id": "task-unified-1774857405-abc123",
"model": "minimax-h3-max-image-to-video",
"object": "video.generation.task",
"progress": 0,
"status": "pending",
"task_info": {
"can_cancel": false,
"estimated_time": 165,
"video_duration": 5
},
"type": "video",
"usage": {
"billing_rule": "per_second",
"credits_reserved": 44.2,
"user_group": "default"
}
}{
"error": {
"code": "invalid_request",
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}{
"error": {
"code": "unauthorized",
"message": "Invalid or expired token",
"type": "authentication_error"
}
}{
"error": {
"code": "insufficient_quota",
"message": "Insufficient quota. Please top up your account.",
"type": "insufficient_quota"
}
}{
"error": {
"code": "model_access_denied",
"message": "Token does not have access to model: minimax-h3-max-image-to-video",
"type": "invalid_request_error"
}
}{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}{
"error": {
"code": "internal_error",
"message": "Internal server error",
"type": "api_error"
}
}Authorizations
##All endpoints require Bearer Token authentication##
Get API Key:
Visit the API Key Management Page to obtain your API Key
Add to request header:
Authorization: Bearer YOUR_API_KEY
Body
Video generation model name
minimax-h3-max-image-to-video "minimax-h3-max-image-to-video"
Describe how the input image should move, how the camera should change, and the desired video content.
Prompt requirements:
- Required and cannot be empty
- Chinese and English are supported
- Maximum length
7000characters (Chinese and English are both counted by character) - The model may ignore some details in an overly long prompt
Input restrictions:
- Use
image_startand/orimage_endto provide keyframes video_urls, andaudio_urlsare not supported; supplying them returns a parameter error
1 - 7000"Pull focus from the ramen bowl in the foreground to the people in the background. More steam rises naturally from the bowl as the camera gently pushes forward; preserve the characters and restaurant setting."
HTTP(S) URL of the first-frame image.
Combination rules:
- Provide at least one of
image_startandimage_end image_startonly: first-frame image-to-video- Both fields: first-and-last-frame image-to-video
- At most
1first frame; this field accepts one URL
Image requirements:
- Formats: JPG, JPEG, PNG, WEBP, HEIC, HEIF
- File size: no more than
30MB - Width and height: each from
256to5760px - Aspect ratio (width/height):
0.4–2.5 - The URL must use HTTP(S) and be directly accessible by the service
- The complete JSON request body must not exceed
64MB; Base64 andmm_file://inputs are not accepted
"https://cdn.hailuoai.com/prod/hailuo_demo/testsets/H3_AA_I2VA/gallery/sr_v17_variants_seed42_43_20260724/inputs/4a3a90bf9100_KDmcbkhzYo5sjjxr9FqcVmWVnzb.png"
HTTP(S) URL of the last-frame image.
Combination rules:
- Provide at least one of
image_endandimage_start image_endonly: the model generates natural motion that ends on this frame- Both fields: first-and-last-frame image-to-video
- At most
1last frame; this field accepts one URL
Image requirements:
- Formats: JPG, JPEG, PNG, WEBP, HEIC, HEIF
- File size: no more than
30MB - Width and height: each from
256to5760px - Aspect ratio (width/height):
0.4–2.5 - The URL must use HTTP(S) and be directly accessible by the service
- The complete JSON request body must not exceed
64MB; Base64 andmm_file://inputs are not accepted
"https://images.unsplash.com/photo-1515003197210-e0cd71810b5f?auto=format&fit=crop&w=1920&q=85"
Output video duration in seconds. Defaults to 5 seconds.
Value restrictions:
- Only integers from
5through15, inclusive, are supported - Decimals, numeric strings,
auto, and-1are not supported - Output duration directly affects billing
5 <= x <= 155
Output video resolution. Defaults to 768p.
Available values:
480p768p: default
Notes:
- Omitting this parameter produces
768poutput - Output bitrate, frame rate, video codec, and audio codec are selected by the platform and are not configurable
480p, 768p "768p"
HTTPS callback URL for task completion
Callback timing:
- Triggered when the task is completed or failed
- Sent after billing confirmation is complete
Security restrictions:
- Only HTTPS protocol is supported
- Callbacks to private IP addresses are prohibited (127.0.0.1, 10.x.x.x, 172.16-31.x.x, 192.168.x.x, etc.)
- URL length must not exceed
2048characters
Callback mechanism:
- Timeout:
10seconds - Up to
3retries after failure (at1/2/4seconds after failure respectively) - Callback response body format is consistent with the task query endpoint response format
- A 2xx status code is considered successful; other status codes trigger retries
^https://"https://your-domain.com/webhooks/video-task-completed"
Response
Video generation task created successfully
Task creation timestamp
1761313744
Task ID
"task-unified-1774857405-abc123"
Actual model name used
"minimax-h3-max-image-to-video"
Specific type of the task
video.generation.task Task progress percentage (0-100)
0 <= x <= 1000
Task status
pending, processing, completed, failed "pending"
Video task details
Show child attributes
Show child attributes
Output type of the task
text, image, audio, video "video"
Usage and billing information
Show child attributes
Show child attributes