Model Description
MiniMax-H3 (Video Generation V2) supports text-to-video, image-to-video (with start and end frames), and multimodal reference-to-video capabilities, as well as H3-Context-IR prompt enhancement and 768P-to-2K regeneration.
Functional Interface Details
Create a video generation task
Create a video generation task. The model generates a video based on the incoming multimodal information such as text, images, videos and audios. This interface is an asynchronous interface, and it will return task_idafter successful creation. You need to polling the task status through the task query interface, and obtain the generated video after the task succeeds.
Request URL
Request Header
| Parameter Name | Field Type | Required or not | Description |
|---|---|---|---|
| Authorization | string | Yes | Bearer {YOUR_AK} |
| Content-Type | string |
Yes | Please set the media type of the request body to application/json. |
Request Body Parameters
| Parameter Name | Field Type | Required or not | default value | Description |
|---|---|---|---|---|
| content |
array |
Yes | - | An array of multimodal input content that describes the information used to generate the video. Each element is distinguished by type (text / image_url / video_url / audio_url), and its purpose can be labeled via role.
|
| resolution | string | Yes | - | Video resolution. Current available values:
|
| duration | integer | Yes | - | Video generation duration (in seconds), mandatory, integer. Available values
|
| ratio |
string | Conditions | adaptive |
Specify the aspect ratio for video generation; the default value is Self-Adaptation (automatic mode, where the most suitable aspect ratio is automatically selected based on the input, and the actual ratio can be obtained from the ratio field of the query interface). Supported values: Self-Adaptation, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. |
| callback_url | string | No | - | The callback notification address for task status changes. Once configured, the MiniMax server will first send a verification request containing the challenge field (you need to return the challenge as-is within 3 seconds to complete the verification). After successful verification, a POST push will be sent to this address whenever the task status changes, and the structure of the push payload is consistent with the response of the task query interface. |
| aigc_watermark | boolean |
No | false |
Whether to add an AIGC identification watermark to the generated video, the default is false. |
Description of the content field:
Each request must include a non-empty text item (prompt is required); a parameter error will be returned if missing.
Supported input combinations (corresponding to different generation scenarios):
- Text-to-video: a single text element only.
- Image-to-video (first frame): text + 1 image_url (role=first_frame or left unset).
- Image-to-video (last frame): text + 1 image_url (role=last_frame).
- Image-to-video (first and last frames): text + 2 image_url entries (with roles first_frame and last_frame respectively).
- Multimodal reference-to-video: text + reference image (role=reference_image) + reference video (role=reference_video) + reference audio (role=reference_audio) in combination; audio alone cannot be used as the sole input — at least 1 reference video or image must be included.
> Image-to-video and multimodal reference-to-video are mutually exclusive: if any of reference_image / reference_video / reference_audio appears as a role in content, first_frame / last_frame must not appear (and vice versa); the two cannot be mixed.
Input media restrictions (total request body size ≤ 64 MB; for large files, use a public URL instead of Base64) — see the sub-tables below.
Text-to-video (t2va, where content only contains text): ratiois required and cannot be set to adaptive; valid values are 21:9, 16:9, 4:3, 1:1, 3:4, 9:16.
Image-to-video (i2va, where content includes first_frame/ last_frameimages): The aspect ratio is determined by the input image, and ratiois always adaptive; passing other valid values will not trigger an error, but will be ignored and processed as adaptive.
Multimodal reference video generation (r2va, content includes reference_image/ reference_video/ reference_audio): ratiois optional, defaulting to adaptive; any of the specific ratios above can also be explicitly specified.
content[] element field
| Parameter Name | Field Type | Required or not | default value | Description |
|---|---|---|---|---|
| type | string | Yes | - | The type of input content. Enumeration values: text/ image_url/ video_url/ audio_url. |
| text | string | conditions | - | Text prompt, required: A non-empty textdescribing the video to be generated must be included for all scenarios. The length is calculated by the number of characters, and a single textcan contain up to 7000 characters. |
| image_url | object | Conditions | - | The image object when type= image_url (refer to the content description above for restrictions on format, size, dimensions and quantity). |
| image_url.url | string | Yes | - | Image address, supported formats: public URL;mm_file://{file_id}(referencing existing files on the platform, e. g., file_id of uploaded or historical assets);data: image/<format>;base64,<Base64>data URI (<format>in lowercase). |
| video_url |
object | Conditions | - | When type= video_url, this refers to the video object (reference video, only for multimodal reference scenarios; refer to the content description above for format, size and duration restrictions). |
| video_url.url | string | Yes | - | Video address, supported formats: public URL;mm_file://{file_id}(file_id of an existing file on the platform);data: video/mp4;base64,<Base64>data URI. Note that the total size of the request body must be ≤ 64 MB; Base64 encoding increases the size by approximately 33%, so use a public URL or mm_file:// for large videos. |
| audio_url | object | Conditions | - | When type= audio_url, this refers to the audio object (reference audio, only for multimodal reference scenarios; refer to the content description above for format/size/duration restrictions). |
| audio_url.url | string | Yes | - | Audio address, supported formats: public URL;mm_file://{file_id}(file_id of an existing file on the platform);data: audio/<format>;base64,<Base64>data URI (<format>in lowercase). |
| role | string | Conditions | - | Content position or purpose, required conditionally:
- first_frame: First frame image (for image-to-video; when only one image is provided and role is left unfilled, it will be processed as first_frame by default).
- last_frame: Last frame image (for image-to-video with start and end frames, must be used in pair with first_frame).
- reference_image: Reference image (for multimodal reference-based video generation).
- reference_video: Reference video (for multimodal reference-based video generation).
- reference_audio: Reference audio (for multimodal reference video generation, cannot be input alone). |
Image image_urlRestriction
| item | Restrictions |
|---|---|
| Format | JPG, JPEG, PNG, WEBP, HEIC, HEIF |
| Single file size | ≤ 30 MB |
| Width and Height Range | [256, 5760] px |
| Aspect Ratio (Width/Height) | [0.4, 2.5] |
| Quantity | First frame ≤ 1, last frame ≤ 1, reference image ≤ 9 |
Video video_url (for multimodal reference scenarios only)
| item | Restrictions |
|---|---|
| Container / Format | MP4 (.mp4), MOV (.mov) |
| Encoding | Video: H. 264/AVC, H. 265/HEVC; Audio: AAC, MP3 |
| Single File Size | ≤ 50 MB |
| number | ≤ 3 |
| Single segment duration | [2,15] s; Total duration ≤ 15 s |
| Width and Height Range | [256, 5760] px |
| Aspect Ratio (Width/Height) | [0.4, 2.5] |
| frame rate | [23.976, 60] |
Audio audio_url (for multimodal reference scenarios only)
| item | Restrictions |
|---|---|
| Format | WAV, MP3 |
| Single File Size | ≤ 15 MB |
| number | ≤ 3 |
| Single segment duration | [2,15] s; Total duration ≤ 15 s |
Response Parameters
| Parameter Name | Field Type | Description |
|---|---|---|
| task_id |
string |
Task ID, which is used for subsequent query of task status and results. |
Request Example
Text-to-Video:
curl --location 'https://genaiapi-m2.cloudsway.net/v1/ai/{YOUR_ENDPOINT}/minimax/video_generation' \
--header 'Authorization: Bearer {YOUR_AK}' \
--header 'Content-Type: application/json' \
--data '{
"content": [
{
"type": "text",
"text": "Epic space opera theatrical trailer: A female captain stands alone before a massive observation window as the last fleet assembles and warps away; a blinding flash, the bridge shakes, and she is left behind."
}
],
"resolution": "2K",
"duration": 5,
"ratio": "16:9"
}'
Image-to-Video (First Frame):
curl --location 'https://genaiapi-m2.cloudsway.net/v1/ai/{YOUR_ENDPOINT}/minimax/video_generation' \
--header 'Authorization: Bearer {YOUR_AK}' \
--header 'Content-Type: application/json' \
--data '{
"content": [
{
"type": "text",
"text": "Pull focus to the people in the background and add more steam to the ramen bowl."
},
{
"type": "image_url",
"image_url": {
"url": "https://cdn.hailuoai.com/prod/hailuo_demo/testsets/H3_AA_I2VA/gallery/sr_v17_variants_seed42_43_20260724/inputs/4a3a90bf9100_KDmcbkhzYo5sjjxr9FqcVmWVnzb.png"
},
"role": "first_frame"
}
],
"resolution": "2K",
"duration": 5,
"ratio": "adaptive"
}'
Response Example
Create the H3-Context-IR task
H3-Context-IR deeply understands multimodal contexts such as text, images, audio and videos, analyzes the relationships between creatives as well as between creatives and the target generation output, and conducts complex logical reasoning. The system converts the understanding results into structured expressions, enriching semantic details while preserving the user's original intent as much as possible. This interface only returns enhanced prompts and does not create video generation tasks.
Request URL
Request Header
| Parameter Name | Field Type | Required or not | Description |
|---|---|---|---|
| Authorization | string | Yes | Bearer {YOUR_AK} |
| Content-Type | string | Yes | Please set the media type of the request body to application/json. |
Request Body Parameters
| Parameter Name | Field Type | Required or not | default value | Description |
|---|---|---|---|---|
| content | array | Yes | - | An array of multimodal context inputs, used to describe the relationships between the target video and various creatives. Each element distinguishes its type via type (text/ image_url/ video_url/ audio_url), and can have its usage labeled via role.
Each request must contain a non-empty textitem (prompt is required); a parameter error will be returned if this is missing.
The supported input combinations, mutual exclusion rules and media restrictions are consistent with those specified in "3.1 Create Video Generation Task". |
| duration | integer | Yes | - | Target video duration (in seconds), required, integer. Available values: 4\~ 15. |
| ratio | string | Conditions | adaptive |
The aspect ratio of the target video, defaults to adaptive. Available values: adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16.
Text-to-video (t2va, where content contains only text): ratiois required and cannot be adaptive; available values are 21:9, 16:9, 4:3, 1:1, 3:4, 9:16.
Image-to-video (i2va, where content includes first_frame/ last_frameimages): The aspect ratio is determined by the input image;ratiois always adaptive. Passing other valid values will not trigger an error, but they will be ignored and processed as adaptive.
Multimodal reference generation video (r2va, content includes reference_image/ reference_video/ reference_audio): ratiois optional, defaulting to adaptive; any of the specific ratios mentioned above can also be explicitly specified. |
| callback_url | string | No | - |
The callback notification address for task status changes. After configuration, the MiniMax server will first send a verification request containing the challengefield (you need to return the challenge as-is within 3 seconds to complete the verification). Once the verification succeeds, a POST push will be sent to this address whenever the task status changes, and the structure of the push payload is consistent with the response of the task query interface.
Callback statusvalues: queued (queued), running (running), succeeded (succeeded), failed (failed), cancelled (cancelled). |
content[]The element fields are the same as those in Section 3.1.3.
Response Parameters
| Parameter Name | Field Type | Description |
|---|---|---|
| task_id | string | Task ID, which is used for subsequent query of task status and results. |
Request Example
curl --location 'https://genaiapi-m2.cloudsway.net/v1/ai/{YOUR_ENDPOINT}/minimax/h3_context_ir' \
--header 'Authorization: Bearer {YOUR_AK}' \
--header 'Content-Type: application/json' \
--data '{
"content": [
{
"type": "text",
"text": "A boy playing basketball by the sea"
}
],
"duration": 5,
"ratio": "16:9"
}'
Response Example
Create a video regeneration task
Convert the source video that meets the MiniMax-H3 768P output specifications into a 2K video. Two input modes are supported, and either source_task_idor content (including base_video) must be provided exclusively (a parameter error will be returned if both are provided or neither is provided):
-
Regenerate by Task ID (
source_task_id): Pass in thesource_task_idof an existing successful video generation task to regenerate based on its output as the source. This mode requires allowlist access; the source task must belong to the current account, be insucceededstatus, and still be within the 7-day query window for task queries. No need to passcontentanymore. -
Regeneration based on source video (
base_video): Provide exactly one source video entry withcontentwheretype= video_urlandrole= base_video, and attach the rest of the inputs used to generate this 768P video as-is.
This interface is an asynchronous interface, and will return task_idafter successful creation; you can query the task to polling the task status;task_typeis regeneration.
Request URL
Request Header
| Parameter Name | Field Type | Required or not | Description |
|---|---|---|---|
| Authorization | string | Yes | Bearer {YOUR_AK} |
| Content-Type | string | Yes | Please set the media type of the request body to application/json. |
Request Body Parameters
| Parameter Name | Field Type | Required or not | default value | Description |
|---|---|---|---|---|
| source_task_id | string | conditions | - | task_id of existing successfully completed video generation tasks, to regenerate based on their outputs. Usage restrictions: allowlist access is required; the source task must belong to the current account, be in succeededstatus, and still be queryable via the task inquiry interface (created within the last 7 days). This parameter and content are mutually exclusive and exactly one must be provided. |
| content | array | conditions | - | Array of input content for video regeneration (by source video mode). Please include the following in the array:
- All inputs actually fed into the model when generating the 768P source video must be submitted as-is. Among them, textmust use the final prompt that was actually fed into the model at that time, and the original prompt before H3-Context-IR processing must not be used; all reference images, videos and audios must also be consistent with those used during generation. Any inconsistency in the inputs may lead to failure to achieve the expected regeneration effect
- One 768P source video entry, type= video_urland role= base_video; there must be exactly one such entry.
The base_video must comply with the following MiniMax-H3 768P output specifications. This interface does not support general regeneration of arbitrary videos.
---
Input media restrictions: Total request body size ≤ 64 MB. For large files, please use a public URL instead of Base64.Refer to the restrictions on the format, single file size, etc. of images/videos/audio, which are the same as those in "3.1 Create Video Generation Task". Either source_task_id must be provided, and only one of them can be provided. |
| resolution | string | Yes | - | The target resolution for video regeneration, required. Currently supported 2K. |
| callback_url | string | No | - | Callback URL for task status change, optional. Its behavior is the same as that of the callback_urlfor creating a video generation task. |
| aigc_watermark | boolean | No | - | Whether to add an AIGC watermark to the generated video, optional, defaults to false. |
base_video Specifications
| Project | Specifications |
|---|---|
| soundtrack | Must contain a soundtrack; videos without a soundtrack are not supported |
| frame rate | 24 fps |
| Width / Height | shall all be divisible by 32 |
| Area (width × height) | ≤ 768 × 1344 (1,032,192 pixels) |
| Total Frame Count | 107–362 frames, in increments of 17 frames per step (approximately 4–15 seconds) |
content[] Element Field (Regenerated)
| Parameter Name | Field Type | Required or not | default value | Description |
|---|---|---|---|---|
| type | string | Yes | - | The type of input content. Enumeration values: text/ image_url/ video_url/ audio_url. |
| text | string | conditions | - | You must use the final prompt that was actually fed into the model when generating the 768P source video, and must not use the original prompt before H3-Context-IR processing. The length is calculated by the number of characters, and a single textcan contain a maximum of 7000 characters. |
| image_url | object | conditions | - | The image object when type= image_url (refer to the content description above for restrictions on format, size, dimensions and quantity). |
| image_url.url | string | Yes | - | Image address, supported formats: public URL;mm_file://{file_id}(referencing existing files on the platform, e. g., file_id of uploaded or historical assets);data: image/<format>;base64,<Base64>data URI (<format>in lowercase). |
| video_url | object | conditions | - | When type= video_url, this refers to the video object (reference video, only for multimodal reference scenarios; refer to the content description above for format, size and duration restrictions). |
| video_url.url | string | Yes | - | Video address, supported formats: public URL;mm_file://{file_id}(file_id of an existing file on the platform);data: video/mp4;base64,<Base64>data URI. Note that the total size of the request body must be ≤ 64 MB; Base64 encoding increases the size by approximately 33%, so use a public URL or mm_file:// for large videos. |
| audio_url | object | conditions | - | When type= audio_url, this refers to the audio object (reference audio, only for multimodal reference scenarios; refer to the content description above for format/size/duration restrictions). |
| audio_url.url | string | Yes | - | Audio address, supported formats: public URL;mm_file://{file_id}(file_id of an existing file on the platform);data: audio/<format>;base64,<Base64>data URI (<format>in lowercase). |
| role | string | conditions | - | Position or purpose of the content, required conditionally:
- base_video: source video for video regeneration (for /v2/video_regenerationonly);The source video item must explicitly set this role, and there must be exactly 1 entry in content.
- first_frame: first frame image (for image-to-video; when only one image is provided and no role is filled, it is processed as first_frame by default).
- last_frame: The last frame image (for image-to-video with start and end frames, must be used in pairs with first_frame).
- reference_image: Reference image (for multimodal reference video generation).
- reference_video: Reference video (for multimodal reference video generation).
- reference_audio: Reference audio (for multimodal reference video generation, cannot be input alone). |
Response Parameters
| Parameter Name | Field Type | Description |
|---|---|---|
| task_id | string | Task ID, which is used for subsequent query of task status and results. |
Request Example
curl --location 'https://genaiapi-m2.cloudsway.net/v1/ai/{YOUR_ENDPOINT}/minimax/video_regeneration' \
--header 'Authorization: Bearer {YOUR_AK}' \
--header 'Content-Type: application/json' \
--data '{
"content": [
{
"type": "text",
"text": "Epic space opera theatrical trailer: A female captain stands alone before a massive observation window as the last fleet assembles and warps away; a blinding flash, the bridge shakes, and she is left behind."
},
{
"type": "video_url",
"video_url": {
"url": "https://your-cdn.example.com/h3-t2va-768p.mp4"
},
"role": "base_video"
}
],
"resolution": "2K"
}'
Response Example
Query Task
Query the status and results of a single video generation, H3-Context-IR, or video regeneration task within the last 7 days by task_id. After the task succeeds (status= succeeded), you can obtain the output from content: for video tasks, retrieve content. url; for H3-Context-IR tasks, retrieve the enhanced prompt in content. prompt.
Request URL
GET https://genaiapi-m2.cloudsway.net/v1/ai/{YOUR_ENDPOINT}/minimax/query/video_generation/{task_id}
Request Header
| Parameter Name | Field Type | Required or not | Description |
|---|---|---|---|
| Authorization | string | Yes | Bearer {YOUR_AK} |
Path Parameters
| Parameter Name | Field Type | Required or not | Description |
|---|---|---|---|
| task_id | string | Yes | The ID of the task to be queried (the task_idreturned when the task is created). |
Response Parameters
| Parameter Name | Field Type | Description |
|---|---|---|
| task | object | The task object returned by the H3 shared task query and list interface. |
| task.id | string | Task ID. |
| task.model | string | The name of the model used for the task, e. g. MiniMax-H3. |
| task.status | string | Task status:
- queued: Queued
- running: Running
- succeeded: Succeeded
- failed: Failed
- cancelled: Cancelled |
| task.error | object | Error message, not returned when the task succeeds; returned when the task fails codeand message. |
| task.error.code | string | Error code. |
| task.error.message | string | Error message. |
| task.created_at | integer | The Unix timestamp (in seconds) indicating the time when the task was created. |
| task.updated_at | integer | Unix timestamp (in seconds) indicating the time when the task status was updated. |
| task.content | object | Task output content, which will be returned upon successful task completion. |
| task.content.url | string | This is a time-limited download URL for the video task output. Please download or transfer it in time; you can re-query to obtain it after expiration. |
| task.content.prompt | string | Structured augmented prompt generated by the H3-Context-IR task. Returned only when task_type= h3_context_irand the task succeeds. |
| task.resolution | string | The resolution of the task output. |
| task.duration | integer | Duration of the task output (in seconds). |
| task.usage | object | The billing usage for this request. The video task returns a field measured in seconds; the H3-Context-IR task returns a token usage field. |
| task.usage.total_seconds | integer | Total billable seconds for this session = Input seconds + Output seconds. |
| task.usage.input_seconds | integer | Enter the billing seconds of the reference video (including the time count of the reference video). |
| task.usage.output_seconds | integer | Output the billed seconds of the video. |
| task.usage.input_image_count | integer | The number of images involved in this billing cycle. |
| task.usage.input_audio_seconds | integer | Enter the number of seconds of the reference audio (sum each segment and round to the nearest integer); no value will be returned if there is no reference audio. |
| task.usage.total_tokens | integer | The total number of tokens used in the H3-Context-IR task. |
| task.usage.prompt_tokens | integer | The number of input tokens for the H3-Context-IR task. |
| task.usage.completion_tokens | integer | The number of output tokens for the H3-Context-IR task. |
| task.ratio | string | The aspect ratio of the task output; may return an empty string when it is not applicable to the current task type. |
| task.task_type | string | Task types:
- generation: Video generation
- h3_context_ir: H3-Context-IR (/v2/h3_context_ir)
- regeneration: Video regeneration (/v2/video_regeneration) |
| task.modality | string | Output modality. Video generation and video regeneration tasks return video; the H3-Context-IR task returns text. |
Request Example
curl --location 'https://genaiapi-m2.cloudsway.net/v1/ai/{YOUR_ENDPOINT}/minimax/query/video_generation/{task_id}' \
--header 'Authorization: Bearer {YOUR_AK}'
Response Example
Video generated successfully:
{
"task": {
"id": "424010985738629",
"model": "MiniMax-H3",
"status": "succeeded",
"created_at": 1785125529,
"updated_at": 1785125946,
"content": {
"url": "https://cdn.hailuoai.com/prod/hailuo_demo/testsets/h3_promo_eval_ref2va/gallery/sr_v2p26_trio_seed42_20260724/inputs/89f8c0bbee5b_denoise_ids_0_final.mp4"
},
"resolution": "2K",
"duration": 5,
"usage": {
"total_seconds": 5,
"input_seconds": 0,
"output_seconds": 5,
"input_image_count": 0
},
"ratio": "16:9",
"task_type": "generation",
"modality": "video"
}
}
H3-Context-IR Success:
{
"task": {
"id": "426586401755526",
"model": "MiniMax-H3",
"status": "succeeded",
"created_at": 1785702855,
"updated_at": 1785702884,
"content": {
"prompt": "integrated_multimodal_description: ..."
},
"duration": 5,
"usage": {
"total_tokens": 9090,
"prompt_tokens": 5664,
"completion_tokens": 3426
},
"ratio": "16:9",
"task_type": "h3_context_ir",
"modality": "text"
}
}
Cancel or delete tasks
Cancel or delete video generation, H3-Context-IR and video regeneration tasks according to the current status of the tasks:
| Task Status | Perform the action | Description |
|---|---|---|
queued (Queuing) |
cancelled |
Cancel the task: the task has not started processing and no fee will be deducted |
succeeded (succeeded) |
deleted |
Delete task records |
failed (failed) |
deleted |
Delete task records |
running (in operation) |
— | Not actionable, an error will be returned (cancellation is not allowed during processing) |
cancelled (cancelled) |
— | Not operable, return an error |
Request URL
Request Header
| Parameter Name | Field Type | Required or not | Description |
|---|---|---|---|
| Authorization | string | Yes | Bearer {YOUR_AK} |
Path Parameters
| Parameter Name | Field Type | Required or not | Description |
|---|---|---|---|
| task_id | string | Yes | The ID of the task to be canceled or deleted. |
Response Parameters
| Parameter Name | Field Type | Description |
|---|---|---|
| task_id | string | The ID of the task to be operated on. |
| action | string | Actual operation performed: cancelled (only for tasks in queued status) or deleted (to delete task records regardless of success or failure status). |
| status | string | Operation result status: cancelled (cancelled) or deleted (record deleted). |
Request Example
curl --location --request DELETE 'https://genaiapi-m2.cloudsway.net/v1/ai/{YOUR_ENDPOINT}/minimax/video_generation/{task_id}' \
--header 'Authorization: Bearer {YOUR_AK}'