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-text-to-video",
"prompt": "Epic space-opera theatrical teaser: a female captain stands alone before a massive observation window as the last fleet gathers outside. The fleet jumps away in a blinding flash and the bridge shakes; when the light fades, she is left alone in silent deep space. Cinematic lighting, slow dolly-in, grand yet restrained mood.",
"duration": 5,
"quality": "768p",
"aspect_ratio": "16:9"
}
'import requests
url = "https://api.evolink.ai/v1/videos/generations"
payload = {
"model": "minimax-h3-max-text-to-video",
"prompt": "Epic space-opera theatrical teaser: a female captain stands alone before a massive observation window as the last fleet gathers outside. The fleet jumps away in a blinding flash and the bridge shakes; when the light fades, she is left alone in silent deep space. Cinematic lighting, slow dolly-in, grand yet restrained mood.",
"duration": 5,
"quality": "768p",
"aspect_ratio": "16:9"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'minimax-h3-max-text-to-video',
prompt: 'Epic space-opera theatrical teaser: a female captain stands alone before a massive observation window as the last fleet gathers outside. The fleet jumps away in a blinding flash and the bridge shakes; when the light fades, she is left alone in silent deep space. Cinematic lighting, slow dolly-in, grand yet restrained mood.',
duration: 5,
quality: '768p',
aspect_ratio: '16:9'
})
};
fetch('https://api.evolink.ai/v1/videos/generations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.evolink.ai/v1/videos/generations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'minimax-h3-max-text-to-video',
'prompt' => 'Epic space-opera theatrical teaser: a female captain stands alone before a massive observation window as the last fleet gathers outside. The fleet jumps away in a blinding flash and the bridge shakes; when the light fades, she is left alone in silent deep space. Cinematic lighting, slow dolly-in, grand yet restrained mood.',
'duration' => 5,
'quality' => '768p',
'aspect_ratio' => '16:9'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.evolink.ai/v1/videos/generations"
payload := strings.NewReader("{\n \"model\": \"minimax-h3-max-text-to-video\",\n \"prompt\": \"Epic space-opera theatrical teaser: a female captain stands alone before a massive observation window as the last fleet gathers outside. The fleet jumps away in a blinding flash and the bridge shakes; when the light fades, she is left alone in silent deep space. Cinematic lighting, slow dolly-in, grand yet restrained mood.\",\n \"duration\": 5,\n \"quality\": \"768p\",\n \"aspect_ratio\": \"16:9\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.evolink.ai/v1/videos/generations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"minimax-h3-max-text-to-video\",\n \"prompt\": \"Epic space-opera theatrical teaser: a female captain stands alone before a massive observation window as the last fleet gathers outside. The fleet jumps away in a blinding flash and the bridge shakes; when the light fades, she is left alone in silent deep space. Cinematic lighting, slow dolly-in, grand yet restrained mood.\",\n \"duration\": 5,\n \"quality\": \"768p\",\n \"aspect_ratio\": \"16:9\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.evolink.ai/v1/videos/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"minimax-h3-max-text-to-video\",\n \"prompt\": \"Epic space-opera theatrical teaser: a female captain stands alone before a massive observation window as the last fleet gathers outside. The fleet jumps away in a blinding flash and the bridge shakes; when the light fades, she is left alone in silent deep space. Cinematic lighting, slow dolly-in, grand yet restrained mood.\",\n \"duration\": 5,\n \"quality\": \"768p\",\n \"aspect_ratio\": \"16:9\"\n}"
response = http.request(request)
puts response.read_body{
"created": 1761313744,
"id": "task-unified-1774857405-abc123",
"model": "minimax-h3-max-text-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-text-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 Text-to-Video
- Generate video from a non-empty text prompt
- Output duration:
5–15seconds; resolution480por768p(default) - Image, video, and audio inputs are not supported
- 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-text-to-video",
"prompt": "Epic space-opera theatrical teaser: a female captain stands alone before a massive observation window as the last fleet gathers outside. The fleet jumps away in a blinding flash and the bridge shakes; when the light fades, she is left alone in silent deep space. Cinematic lighting, slow dolly-in, grand yet restrained mood.",
"duration": 5,
"quality": "768p",
"aspect_ratio": "16:9"
}
'import requests
url = "https://api.evolink.ai/v1/videos/generations"
payload = {
"model": "minimax-h3-max-text-to-video",
"prompt": "Epic space-opera theatrical teaser: a female captain stands alone before a massive observation window as the last fleet gathers outside. The fleet jumps away in a blinding flash and the bridge shakes; when the light fades, she is left alone in silent deep space. Cinematic lighting, slow dolly-in, grand yet restrained mood.",
"duration": 5,
"quality": "768p",
"aspect_ratio": "16:9"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'minimax-h3-max-text-to-video',
prompt: 'Epic space-opera theatrical teaser: a female captain stands alone before a massive observation window as the last fleet gathers outside. The fleet jumps away in a blinding flash and the bridge shakes; when the light fades, she is left alone in silent deep space. Cinematic lighting, slow dolly-in, grand yet restrained mood.',
duration: 5,
quality: '768p',
aspect_ratio: '16:9'
})
};
fetch('https://api.evolink.ai/v1/videos/generations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.evolink.ai/v1/videos/generations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'minimax-h3-max-text-to-video',
'prompt' => 'Epic space-opera theatrical teaser: a female captain stands alone before a massive observation window as the last fleet gathers outside. The fleet jumps away in a blinding flash and the bridge shakes; when the light fades, she is left alone in silent deep space. Cinematic lighting, slow dolly-in, grand yet restrained mood.',
'duration' => 5,
'quality' => '768p',
'aspect_ratio' => '16:9'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.evolink.ai/v1/videos/generations"
payload := strings.NewReader("{\n \"model\": \"minimax-h3-max-text-to-video\",\n \"prompt\": \"Epic space-opera theatrical teaser: a female captain stands alone before a massive observation window as the last fleet gathers outside. The fleet jumps away in a blinding flash and the bridge shakes; when the light fades, she is left alone in silent deep space. Cinematic lighting, slow dolly-in, grand yet restrained mood.\",\n \"duration\": 5,\n \"quality\": \"768p\",\n \"aspect_ratio\": \"16:9\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.evolink.ai/v1/videos/generations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"minimax-h3-max-text-to-video\",\n \"prompt\": \"Epic space-opera theatrical teaser: a female captain stands alone before a massive observation window as the last fleet gathers outside. The fleet jumps away in a blinding flash and the bridge shakes; when the light fades, she is left alone in silent deep space. Cinematic lighting, slow dolly-in, grand yet restrained mood.\",\n \"duration\": 5,\n \"quality\": \"768p\",\n \"aspect_ratio\": \"16:9\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.evolink.ai/v1/videos/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"minimax-h3-max-text-to-video\",\n \"prompt\": \"Epic space-opera theatrical teaser: a female captain stands alone before a massive observation window as the last fleet gathers outside. The fleet jumps away in a blinding flash and the bridge shakes; when the light fades, she is left alone in silent deep space. Cinematic lighting, slow dolly-in, grand yet restrained mood.\",\n \"duration\": 5,\n \"quality\": \"768p\",\n \"aspect_ratio\": \"16:9\"\n}"
response = http.request(request)
puts response.read_body{
"created": 1761313744,
"id": "task-unified-1774857405-abc123",
"model": "minimax-h3-max-text-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-text-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-text-to-video "minimax-h3-max-text-to-video"
Describe the video you want to generate.
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:
- This is a text-to-video model and accepts text input only
image_start,image_end,image_urls,video_urls, andaudio_urlsare not supported- Supplying any of these media fields returns a parameter error
1 - 7000"Epic space-opera theatrical teaser: a female captain stands alone before a massive observation window as the last fleet gathers outside. The fleet jumps away in a blinding flash and the bridge shakes; when the light fades, she is left alone in silent deep space. Cinematic lighting, slow dolly-in, grand yet restrained mood."
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"
Output video aspect ratio. Defaults to 16:9.
Available values:
16:9: landscape21:9: ultrawide4:3: standard landscape1:1: square3:4: standard portrait9:16: portrait
16:9, 21:9, 4:3, 1:1, 3:4, 9:16 "16:9"
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-text-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