← 返回测试中控台 素材资料库
MiniMax H3 · Video Generation API

视频生成 API

提交任务 → 轮询状态 → 下载视频。接口结构与 MiniMax 官方视频 API 一致, 已有脚本只需替换 base_url 与 API Key。

base_url · — API Key · —

1. 鉴权

所有 /v1 接口需要携带请求头:

Authorization: Bearer —

也接受 X-API-Key: <key>。缺少或错误返回 401。

2. 上传参考素材

参考图 / 参考视频 / 参考音频需先上传,拿到 file_id 后在创建任务时引用。 同一个文件重复上传会返回同一个 id。

curl -X POST /v1/files/upload \
  -H "Authorization: Bearer " \
  -F "files=@person.png" \
  -F "files=@car.png" \
  -F "files=@street.png"
{
  "files": [
    {"file_id": "file_6159f1b87149", "kind": "image", "name": "person.png", "size": 1793346},
    {"file_id": "file_07ef78e9d465", "kind": "image", "name": "car.png",    "size": 2726058}
  ],
  "base_resp": {"status_code": 0, "status_msg": "success"}
}

支持 png / jpg / webp / bmp / gif / mp4 / mov / webm / wav / mp3 / flac,单文件上限 2 GB。

3. 创建生成任务

curl -X POST /v1/video_generation \
  -H "Authorization: Bearer " \
  -H "Content-Type: application/json" \
  -d '{
    "model": "h3-pulpcut",
    "prompt": "subject_definitions:\n<Subject 1> is the young woman in <Picture 1> ...",
    "resolution": "1080P",
    "duration": 15,
    "seed": 771002,
    "ref_images": ["file_6159f1b87149", "file_07ef78e9d465", "file_57ca65cd8149"]
  }'
{
  "task_id": "a2e3128b",
  "file_id": "f_a2e3128b",
  "base_resp": {"status_code": 0, "status_msg": "success"}
}

请求参数

字段类型必填说明
modelstring否模型 ID,默认 h3-pulpcut,见下表
promptstring是六段式 ref2va 提示词,≤ 20000 字符
resolutionstring否480P / 720P / 1080P,默认 1080P
durationnumber否秒,1–15,默认 6;帧数自动对齐 17n+5
seedint否随机种子,默认 771002
ref_imagesstring[]是参考图 file_id,1–9 张,顺序对应提示词中的 <Picture 1..N>
ref_videosstring[]否参考视频 file_id,0–3 段,锁定动作与运镜
ref_audiosstring[]否参考音频 file_id,0–3 段,锁定音色与环境声
namestring否任务名称,仅用于后台识别

可选模型

model说明1080P · 15 秒参考耗时

耗时为单条实测值,随提示词长度与参考素材数量浮动。单卡串行执行,任务按提交顺序处理。

4. 查询任务

curl "/v1/query/video_generation?task_id=a2e3128b" \
  -H "Authorization: Bearer "
{
  "task_id": "a2e3128b",
  "status": "Processing",
  "file_id": "f_a2e3128b",
  "model": "h3-pulpcut",
  "base_resp": {"status_code": 0, "status_msg": "success"}
}

状态取值

status含义下一步
Queueing排队中继续轮询,建议间隔 10 秒
Processing生成中继续轮询
Success已完成调用 /v1/files/retrieve 取下载链接
Fail失败查看 base_resp.status_msg

成功时会额外返回 duration_s(本任务实际耗时,秒)与 video_url。

5. 获取下载链接

curl "/v1/files/retrieve?file_id=f_a2e3128b" \
  -H "Authorization: Bearer "
{
  "file": {
    "file_id": "f_a2e3128b",
    "download_url": "https://h3.firstarpc.com/v1/files/web_00001_.mp4",
    "expires_in": 3600
  },
  "base_resp": {"status_code": 0, "status_msg": "success"}
}

download_url 为相对路径,直接拼接 base_url 即可下载,支持断点续传(HTTP Range)。

6. 完整示例(Python)

import time, requests

BASE = ""
KEY  = ""
H    = {"Authorization": f"Bearer {KEY}"}

# 1) 上传参考图
files = [("files", open(p, "rb")) for p in ("person.png", "car.png", "street.png")]
ids = [f["file_id"] for f in
       requests.post(f"{BASE}/v1/files/upload", headers=H, files=files).json()["files"]]

# 2) 创建任务
task = requests.post(f"{BASE}/v1/video_generation", headers=H, json={
    "model": "h3-pulpcut",
    "prompt": open("prompt.txt", encoding="utf-8").read(),
    "resolution": "1080P",
    "duration": 15,
    "ref_images": ids,
}).json()
tid = task["task_id"]
print("task:", tid)

# 3) 轮询
while True:
    q = requests.get(f"{BASE}/v1/query/video_generation",
                     headers=H, params={"task_id": tid}).json()
    print(q["status"])
    if q["status"] in ("Success", "Fail"):
        break
    time.sleep(10)

# 4) 下载
if q["status"] == "Success":
    f = requests.get(f"{BASE}/v1/files/retrieve",
                     headers=H, params={"file_id": q["file_id"]}).json()["file"]
    mp4 = requests.get(BASE + f["download_url"])
    open("out.mp4", "wb").write(mp4.content)

7. 错误码

status_code含义
0成功
1001参数错误(字段缺失、格式不对、取值越界)
1002鉴权失败
1003task_id / file_id 不存在
1004并发超限(同一来源最多 3 个任务排队或运行)
1005生成失败
1006视频尚未生成完成

8. 限制与约定