Skip to content

MiniMax-H3 Video Generation ​

MiniMax-H3 (MiniMax-H3) is MiniMax's Hailuo-series video generation model. It supports text-to-video, image-to-video (first frame) and video reference, outputting 768P by default with an optional 2K mode. It uses the unified POST /v1/videos endpoint and returns an OpenAI Video style response (id / status / metadata.url), sharing the same task polling mechanism as other video models.

Billing

Billed by actual generated duration (seconds), with different unit prices per resolution tier (768P / 2K). Exact unit prices and billing expressions are shown on the corresponding model card in the console "Model Plaza" (prices are intentionally omitted from this documentation).

Endpoints ​

  • Create task: POST $URL/v1/videos
  • Query task: GET $URL/v1/videos/{task_id}

Compatible alias

An OpenAI Sora-style alias is also supported: POST $URL/v1/video/generations, GET $URL/v1/video/generations/{task_id} — equivalent to the above.

Supported Models ​

Model namePositioningResolutions
MiniMax-H3Video generation, 768P by default, 2K optional768P / 2K

The resolution tier is selected via metadata.resolution (see "Parameters" below).

Parameters ​

ParameterTypeRequiredDescription
modelstringyesMiniMax-H3
promptstringyesVideo description; recommend specifying subject, action, scene, and camera movement
image / imagesstring / arraynoReference image URL(s), used as the first frame for image-to-video
input_referencestringnoReference video URL, for video reference generation
secondsstringnoOutput duration in seconds, e.g. "5", "10"; defaults to 5 seconds
metadata.resolutionstringnoResolution tier: 768P (default) / 2K
metadata.ratiostringnoAspect ratio, defaults to 16:9, e.g. 9:16, 1:1
metadata.durationnumbernoOverride output duration (seconds)
metadata.aigc_watermarkbooleannoWhether to add an AIGC content watermark
metadata.callback_urlstringnoCallback URL for task completion (upstream push)

Reference material

Publicly accessible image/video URLs are supported (the upstream server fetches them; intranet or local addresses will fail).

Request Examples ​

Text-to-video ​

bash
# 1. Create video task (768P, 5 seconds)
curl $URL/v1/videos \
  -H "Authorization: Bearer $YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "MiniMax-H3",
    "prompt": "A dolphin leaping out of the sea at sunset, golden splashes, slow motion, cinematic",
    "seconds": "5"
  }'

# 2. Query task status (replace {task_id} with the id returned above)
curl $URL/v1/videos/{task_id} \
  -H "Authorization: Bearer $YOUR_API_KEY"
python
import time
import requests

url = "$URL/v1/videos"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json",
}
payload = {
    "model": "MiniMax-H3",
    "prompt": "A dolphin leaping out of the sea at sunset, golden splashes, slow motion, cinematic",
    "seconds": "5",
}

task = requests.post(url, json=payload, headers=headers).json()
task_id = task["id"]

while True:
    result = requests.get(f"{url}/{task_id}", headers=headers).json()
    if result["status"] in ("completed", "failed"):
        break
    time.sleep(8)

print(result)

Image-to-video (first frame) ​

bash
curl $URL/v1/videos \
  -H "Authorization: Bearer $YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "MiniMax-H3",
    "prompt": "Make the robot in the picture stand up and wave at the camera",
    "image": "https://example.com/ref.png",
    "seconds": "5"
  }'

Video reference ​

bash
curl $URL/v1/videos \
  -H "Authorization: Bearer $YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "MiniMax-H3",
    "prompt": "Transform the scene in the video into a neon night lighting effect",
    "input_reference": "https://example.com/clip.mp4",
    "seconds": "5"
  }'

Switching to 2K ​

Use metadata.resolution to select the resolution tier:

bash
curl $URL/v1/videos \
  -H "Authorization: Bearer $YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "MiniMax-H3",
    "prompt": "Aerial drone shot of snow-capped mountains above the clouds, golden sunrise, breathtaking panorama",
    "seconds": "5",
    "metadata": {
      "resolution": "2K"
    }
  }'

Response Fields ​

Create and query responses share the same structure (OpenAI Video style):

FieldTypeDescription
idstringTask ID
statusstringTask status (see below)
metadata.urlstringVideo URL after completion (only on completed)
progressintegerGeneration progress, 0–100
completed_atintegerCompletion timestamp (seconds, only on completed)
error.messagestringFailure reason (only on failed)

Task Status ​

StatusMeaningSuggestion
queuedQueuedKeep polling
in_progressGeneratingKeep polling
completedSuccessGet the video URL from metadata.url and download it as soon as possible
failedFailedCheck error.message

Poll every 5–10 seconds

Video URLs are time-limited — download and store the result as soon as possible after completion.

Response Example ​

json
{
  "id": "task_xxxxxxxx",
  "status": "in_progress",
  "progress": 50
}

After completion:

json
{
  "id": "task_xxxxxxxx",
  "status": "completed",
  "progress": 100,
  "metadata": {
    "url": "https://cdn.example.com/.../result.mp4"
  },
  "completed_at": 1786431715
}

FAQ ​

Q: What reference materials are supported?

Reference images (first-frame image-to-video) and reference videos (video reference generation) — just pass publicly accessible URLs (see image / images / input_reference above).

Q: How long does a task take?

It depends on duration and resolution. A 768P 5-second task usually completes within 1–3 minutes; 2K takes longer. Poll the query endpoint for the final status.

Q: Do generated video links expire?

Yes. Video URLs are time-limited, so download and store the result as soon as possible.

Q: Is there an asset library?

No standalone asset library — use publicly accessible image/video URLs as reference material.

© 2026 Euno AI. All rights reserved.