curl --request POST \
--url https://api.modellix.ai/api/v1/minimax/minimax-h3-i2v \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"prompt": "Character speaks: Follow the wind, live free.",
"reference_images": [
"https://example.com/ref1.png"
],
"duration": 5,
"resolution": "2K"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
prompt: 'Character speaks: Follow the wind, live free.',
reference_images: ['https://example.com/ref1.png'],
duration: 5,
resolution: '2K'
})
};
fetch('https://api.modellix.ai/api/v1/minimax/minimax-h3-i2v', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.modellix.ai/api/v1/minimax/minimax-h3-i2v"
payload = {
"prompt": "Character speaks: Follow the wind, live free.",
"reference_images": ["https://example.com/ref1.png"],
"duration": 5,
"resolution": "2K"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.modellix.ai/api/v1/minimax/minimax-h3-i2v"
payload := strings.NewReader("{\n \"prompt\": \"Character speaks: Follow the wind, live free.\",\n \"reference_images\": [\n \"https://example.com/ref1.png\"\n ],\n \"duration\": 5,\n \"resolution\": \"2K\"\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.modellix.ai/api/v1/minimax/minimax-h3-i2v")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"prompt\": \"Character speaks: Follow the wind, live free.\",\n \"reference_images\": [\n \"https://example.com/ref1.png\"\n ],\n \"duration\": 5,\n \"resolution\": \"2K\"\n}")
.asString();const url = 'https://api.modellix.ai/api/v1/minimax/minimax-h3-i2v';
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
prompt: 'Character speaks: Follow the wind, live free.',
reference_images: ['https://example.com/ref1.png'],
duration: 5,
resolution: '2K'
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.modellix.ai/api/v1/minimax/minimax-h3-i2v",
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([
'prompt' => 'Character speaks: Follow the wind, live free.',
'reference_images' => [
'https://example.com/ref1.png'
],
'duration' => 5,
'resolution' => '2K'
]),
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;
}require 'uri'
require 'net/http'
url = URI("https://api.modellix.ai/api/v1/minimax/minimax-h3-i2v")
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 \"prompt\": \"Character speaks: Follow the wind, live free.\",\n \"reference_images\": [\n \"https://example.com/ref1.png\"\n ],\n \"duration\": 5,\n \"resolution\": \"2K\"\n}"
response = http.request(request)
puts response.read_bodyimport Foundation
let parameters = [
"prompt": "Character speaks: Follow the wind, live free.",
"reference_images": ["https://example.com/ref1.png"],
"duration": 5,
"resolution": "2K"
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api.modellix.ai/api/v1/minimax/minimax-h3-i2v")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
]
request.httpBody = postData
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))$headers=@{}
$headers.Add("Authorization", "Bearer <token>")
$headers.Add("Content-Type", "application/json")
$response = Invoke-WebRequest -Uri 'https://api.modellix.ai/api/v1/minimax/minimax-h3-i2v' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"prompt": "Character speaks: Follow the wind, live free.",
"reference_images": [
"https://example.com/ref1.png"
],
"duration": 5,
"resolution": "2K"
}'{
"code": 0,
"message": "success",
"data": {
"status": "pending",
"task_id": "task-abc123",
"model_id": "model-123",
"get_result": {
"method": "GET",
"url": "https://api.modellix.ai/api/v1/tasks/task-abc123"
}
}
}MiniMax H3 I2V
[Core Function] MiniMax H3 I2V generates video from reference images plus a text prompt. [Strengths] It accepts up to 9 reference images and optional reference audios, with 4-15 second duration, 768P or 2K output, and optional aspect ratio defaulting to 16:9. [Best For] Highly recommended for: character or style consistency from stills, product look references, multi-image subject guidance, and prompt-driven scenes featuring a referenced subject. [Limitations] Do NOT use this model for first or last frame transitions or when the primary input is a reference video. prompt, duration, resolution, and reference_images are required. Do NOT send first_frame_image, last_frame_image, or reference_videos on this endpoint. [Routing] Choose MiniMax H3 I2V when the user provides reference stills. For start or end frames, use MiniMax H3 FL2V. For reference videos, use MiniMax H3 V2V. For text only, use MiniMax H3 T2V.
curl --request POST \
--url https://api.modellix.ai/api/v1/minimax/minimax-h3-i2v \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"prompt": "Character speaks: Follow the wind, live free.",
"reference_images": [
"https://example.com/ref1.png"
],
"duration": 5,
"resolution": "2K"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
prompt: 'Character speaks: Follow the wind, live free.',
reference_images: ['https://example.com/ref1.png'],
duration: 5,
resolution: '2K'
})
};
fetch('https://api.modellix.ai/api/v1/minimax/minimax-h3-i2v', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.modellix.ai/api/v1/minimax/minimax-h3-i2v"
payload = {
"prompt": "Character speaks: Follow the wind, live free.",
"reference_images": ["https://example.com/ref1.png"],
"duration": 5,
"resolution": "2K"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.modellix.ai/api/v1/minimax/minimax-h3-i2v"
payload := strings.NewReader("{\n \"prompt\": \"Character speaks: Follow the wind, live free.\",\n \"reference_images\": [\n \"https://example.com/ref1.png\"\n ],\n \"duration\": 5,\n \"resolution\": \"2K\"\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.modellix.ai/api/v1/minimax/minimax-h3-i2v")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"prompt\": \"Character speaks: Follow the wind, live free.\",\n \"reference_images\": [\n \"https://example.com/ref1.png\"\n ],\n \"duration\": 5,\n \"resolution\": \"2K\"\n}")
.asString();const url = 'https://api.modellix.ai/api/v1/minimax/minimax-h3-i2v';
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
prompt: 'Character speaks: Follow the wind, live free.',
reference_images: ['https://example.com/ref1.png'],
duration: 5,
resolution: '2K'
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.modellix.ai/api/v1/minimax/minimax-h3-i2v",
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([
'prompt' => 'Character speaks: Follow the wind, live free.',
'reference_images' => [
'https://example.com/ref1.png'
],
'duration' => 5,
'resolution' => '2K'
]),
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;
}require 'uri'
require 'net/http'
url = URI("https://api.modellix.ai/api/v1/minimax/minimax-h3-i2v")
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 \"prompt\": \"Character speaks: Follow the wind, live free.\",\n \"reference_images\": [\n \"https://example.com/ref1.png\"\n ],\n \"duration\": 5,\n \"resolution\": \"2K\"\n}"
response = http.request(request)
puts response.read_bodyimport Foundation
let parameters = [
"prompt": "Character speaks: Follow the wind, live free.",
"reference_images": ["https://example.com/ref1.png"],
"duration": 5,
"resolution": "2K"
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api.modellix.ai/api/v1/minimax/minimax-h3-i2v")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
]
request.httpBody = postData
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))$headers=@{}
$headers.Add("Authorization", "Bearer <token>")
$headers.Add("Content-Type", "application/json")
$response = Invoke-WebRequest -Uri 'https://api.modellix.ai/api/v1/minimax/minimax-h3-i2v' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"prompt": "Character speaks: Follow the wind, live free.",
"reference_images": [
"https://example.com/ref1.png"
],
"duration": 5,
"resolution": "2K"
}'{
"code": 0,
"message": "success",
"data": {
"status": "pending",
"task_id": "task-abc123",
"model_id": "model-123",
"get_result": {
"method": "GET",
"url": "https://api.modellix.ai/api/v1/tasks/task-abc123"
}
}
}Authorizations
API Key authentication. Format: Bearer YOUR_API_KEY.
Body
Video content description.
1 - 7000Reference image URLs used to guide subject or style (1-9).
1 - 9 elements1Required video duration in seconds.
4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 Required output resolution.
768P, 2K Optional reference audio URLs (up to 3).
31Optional video aspect ratio. One of the listed values. Default: 16:9.
21:9, 16:9, 4:3, 1:1, 3:4, 9:16