跳到主要内容

MiniMax H3 视频生成 API

本文档说明如何通过 Mozia API 的统一视频接口调用 MiniMax H3。接口采用异步任务模式:提交任务、轮询状态、下载结果。

接口总览

方法路径作用
POST/v1/video/generations推荐:提交视频生成任务
GET/v1/video/generations/{task_id}推荐:查询任务状态、进度与结果
GET/v1/video/generations/{task_id}/content推荐:下载生成的视频
POST/v1/videosOpenAI Videos 兼容提交路由
GET/v1/videos/{task_id}OpenAI Videos 兼容查询路由
GET/v1/videos/{task_id}/contentOpenAI Videos 兼容下载路由

基础地址:https://mzsjai.com

所有请求都需要 API Key:

Authorization: Bearer <YOUR_API_KEY>

模型

对外模型名用途素材要求
minimax/minimax-h3-t2va强制文生视频不允许携带素材
minimax/minimax-h3-fl2va文生视频兼容入口、首帧或首尾帧视频空素材自动转 t2va;有素材时按 fl2va 处理
minimax/minimax-h3-ref2va参考素材视频必须携带参考素材

新接入的纯文本调用推荐使用 minimax/minimax-h3-t2va。已有 minimax/minimax-h3-fl2va 客户端无需迁移,空素材请求会由平台自动兼容。

简单的文生视频请求示例

curl --fail-with-body \
-X POST 'https://mzsjai.com/v1/video/generations' \
-H "Authorization: Bearer ${MOZIA_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"model": "minimax/minimax-h3-t2va",
"prompt": "日落时分的无人海滩,镜头贴近沙滩向海面平稳推进",
"duration": 4,
"resolution": "768P",
"ratio": "16:9"
}'

建议每 5~10 秒查询一次:

GET https://mzsjai.com/v1/video/generations/{task_id}
Authorization: Bearer <YOUR_API_KEY>

该接口对外常见状态为 queuedrunningsucceededfailed。任务提交后的第一次查询可能短暂返回 unknown,应继续轮询,不要立即判定失败。

当前能力边界

Mozia 平台当前支持以下 MiniMax H3 能力:

能力当前状态
文生视频支持
首帧图生视频支持
首帧 + 尾帧支持
仅尾帧不支持,尾帧必须与首帧同时提交
参考图支持;稳定建议 1~9 张
参考视频支持,使用 ref2va
参考音频支持,使用 ref2va
保留参考视频原音支持,仅限一个带音轨的参考视频
时长支持 4~15 秒
768P支持
2K请使用 minimax/minimax-h3-2k 模型id
adaptive 比例未作为稳定能力提供
callback_url不会转发给 H3 服务,应使用轮询
usage当前响应不返回

首尾帧不能与任何参考素材混用,包括参考图、参考视频和参考音频。素材应使用模型 Worker 可以访问的 HTTP/HTTPS URL;Data URL、原始 Base64、本地文件路径和 multipart 文件上传不属于当前 V2 H3 接口的稳定输入协议。

ref2va 要求至少提交一个参考素材。

提交任务

POST https://mzsjai.com/v1/video/generations
Content-Type: application/json

请求参数

参数类型必填默认值说明
modelstring-使用上文列出的完整 H3 对外模型名
contentarray推荐-提示词及带角色的图片、视频或音频素材
promptstring条件必填-顶层提示词;与 content 中的文本二选一
durationinteger-视频时长(秒),稳定接口使用 4~15 的整数
resolutionstring平台默认当前仅支持 768P
ratiostring见说明使用 768P 时默认 16:9;未指定清晰度时使用平台默认值
sizestring-尺寸兼容别名;会转换为短边和宽高比,不是任意宽高的精确透传
seedinteger上游默认随机种子
preserve_reference_audiobooleanfalse控制生成结果是否保留参考视频里的原始音轨
metadataobject-H3 扩展参数;其中字段仅在顶层没有同名字段时生效

promptcontent 中至少要有一段非空文本。如果两者同时存在,顶层 prompt 优先。

content 格式

文本项:

{
"type": "text",
"text": "人物沿海边自然行走,镜头平稳跟随"
}

图片项:

{
"type": "image_url",
"role": "reference_image",
"image_url": {
"url": "https://example.com/person.jpg"
}
}

H3 当前支持的素材角色:

typerole数量说明
image_urlfirst_frame0~1视频首帧,仅用于 fl2va
image_urllast_frame0~1视频尾帧,必须同时提供首帧
image_urlreference_image建议 1~9人物、主体、服装、风格或场景参考图
video_urlreference_video稳定建议 1视频运动、身份或场景参考,仅用于 ref2va
audio_urlreference_audio稳定建议 1语义音频参考,仅用于 ref2va

不能在同一个请求中混用 first_frame/last_frame 与任何 reference_* 素材。

分辨率和比例

有两种设置方式,分别是 resolution + ratiosize。新接入推荐使用 resolution + ratiosize 主要用于兼容旧客户端。两种方式不要在同一个请求中混用。

方式一:resolution + ratio

  • resolution 表示清晰度或短边档位,当前 H3 稳定支持 768P
  • ratio 表示画面宽高比,例如横屏 16:9、竖屏 9:16 或方形 1:1
  • 省略 ratio 时默认使用 16:9;这不等同于 adaptive
{
"resolution": "768P",
"ratio": "16:9"
}
resolutionratio典型输出尺寸
768P16:9 或省略1344x768
768P9:16768x1344
768P1:1768x768
768P4:31024x768
768P3:4768x1024

方式二:size

size 将清晰度和宽高比写在一个字符串中,例如:

{
"size": "1344x768"
}

它不是任意像素尺寸的精确透传参数。MoziaH3 会先识别兼容值,再将其转换为模型使用的短边和宽高比:

size转换结果典型输出尺寸
1344x768768x448短边 76816:91344x768
768x1344448x768短边 7689:16768x1344
1024x768短边 7684:31024x768
768x1024短边 7683:4768x1024
768x768短边 7681:1768x768

因此,size: "768x448" 会被当作 768P + 16:9 的兼容别名,不保证最终严格输出 768x448

不要使用表中未列出的 size。当前适配器对未识别值可能回退到默认 768P + 16:9,而不是报错或保证精确宽高。

如果 resolutionratiosize 都不传,默认使用 768P + 16:9。当前不要使用 2Kadaptive

示例:文生视频

curl -X POST "https://mzsjai.com/v1/video/generations" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "minimax/minimax-h3-t2va",
"content": [
{
"type": "text",
"text": "日落时分的无人海滩,镜头贴近沙滩向海面平稳推进,海浪声清晰自然"
}
],
"duration": 5,
"resolution": "768P",
"ratio": "16:9"
}'

示例:首帧图生视频

curl --fail-with-body \
-X POST 'https://mzsjai.com/v1/video/generations' \
-H "Authorization: Bearer ${MOZIA_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"model": "minimax/minimax-h3-fl2va",
"content": [
{
"type": "text",
"text": "人物从静止开始自然向前行走,镜头平稳跟随,生成环境声"
},
{
"type": "image_url",
"role": "first_frame",
"image_url": {
"url": "https://example.com/start.jpg"
}
}
],
"duration": 5,
"resolution": "768P",
"ratio": "16:9"
}'

示例:首帧和尾帧

curl --fail-with-body \
-X POST 'https://mzsjai.com/v1/video/generations' \
-H "Authorization: Bearer ${MOZIA_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"model": "minimax/minimax-h3-fl2va",
"content": [
{
"type": "text",
"text": "从首帧自然过渡到尾帧,保持主体身份、光线和镜头运动连续"
},
{
"type": "image_url",
"role": "first_frame",
"image_url": {
"url": "https://example.com/start.jpg"
}
},
{
"type": "image_url",
"role": "last_frame",
"image_url": {
"url": "https://example.com/end.jpg"
}
}
],
"duration": 8,
"resolution": "768P",
"ratio": "16:9"
}'

示例:多张参考图

多参考图场景可以在提示词中使用 <Picture 1><Picture 2> 等标记,按 reference_imagecontent 中出现的顺序引用图片。

curl --fail-with-body \
-X POST 'https://mzsjai.com/v1/video/generations' \
-H "Authorization: Bearer ${MOZIA_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"model": "minimax/minimax-h3-ref2va",
"content": [
{
"type": "text",
"text": "让 <Picture 1> 中的人物穿着 <Picture 2> 中的服装,在海边自然行走,保持人物身份一致"
},
{
"type": "image_url",
"role": "reference_image",
"image_url": {
"url": "https://example.com/person.jpg"
}
},
{
"type": "image_url",
"role": "reference_image",
"image_url": {
"url": "https://example.com/clothes.jpg"
}
}
],
"duration": 5,
"resolution": "768P",
"ratio": "9:16",
"metadata": {
"num_inference_steps": 20,
"seed": 20260813
}
}'

示例:参考视频

curl --fail-with-body \
-X POST 'https://mzsjai.com/v1/video/generations' \
-H "Authorization: Bearer ${MOZIA_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"model": "minimax/minimax-h3-ref2va",
"content": [
{
"type": "text",
"text": "Use <Video 1> as the motion and identity reference. Keep the subject and camera motion coherent."
},
{
"type": "video_url",
"role": "reference_video",
"video_url": {
"url": "https://example.com/reference.mp4"
}
}
],
"duration": 8,
"resolution": "768P",
"ratio": "16:9"
}'

Ref2VA 是语义参考生成,不是逐像素视频编辑;不保证与参考视频完全相同的构图和时间对齐。

示例:保留参考视频原音轨

curl --fail-with-body \
-X POST 'https://mzsjai.com/v1/video/generations' \
-H "Authorization: Bearer ${MOZIA_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"model": "minimax/minimax-h3-ref2va",
"prompt": "保持参考人物、动作和镜头连续,保留原始音轨",
"content": [
{
"type": "video_url",
"role": "reference_video",
"video_url": {
"url": "https://example.com/reference-with-audio.mp4"
}
}
],
"duration": 8,
"resolution": "768P",
"ratio": "16:9",
"preserve_reference_audio": true
}'

preserve_reference_audio=true 时必须只有一个参考视频,且文件本身必须含有音频流。上游会在生成后将原音轨合并到结果;保留失败时任务会失败,不会静默改用生成音频。

示例:参考音频

curl --fail-with-body \
-X POST 'https://mzsjai.com/v1/video/generations' \
-H "Authorization: Bearer ${MOZIA_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"model": "minimax/minimax-h3-ref2va",
"prompt": "生成与参考音频节奏和氛围一致的电影感画面",
"content": [
{
"type": "audio_url",
"role": "reference_audio",
"audio_url": {
"url": "https://example.com/reference.mp3"
}
}
],
"duration": 8,
"resolution": "768P",
"ratio": "16:9"
}'

H3 扩展参数

下列参数可放在顶层,也可放在 metadata 中。顶层同名字段优先:

参数类型默认值说明
seedinteger上游默认随机种子
num_inference_stepsinteger20推理步数;不要使用无效别名 steps
flow_shiftnumber12.0视频生成 flow shift
audio_flow_shiftnumberFL2VA/T2VA 2.0,Ref2VA 3.0音频生成 flow shift
qualitystringlossless上游输出质量
output_compressioninteger100上游输出压缩参数
preserve_reference_audiobooleanfalse保留唯一参考视频的原音轨

这些是 H3 渠道扩展参数,不是所有 Mozia 视频模型的通用参数。除 seedpreserve_reference_audio 的明确场景外,建议保持默认值。

旧字段兼容

仍兼容顶层 promptimageimagessecondsaspect_ratiosize。新接入应使用 contentdurationresolutionratioinput_reference 虽存在于部分通用视频协议中,但当前 MoziaH3 适配器不会将它转换为 H3 参考素材,不应使用。

images 数组没有角色信息:在 fl2va 模型中,一张表示首帧,两张依次表示首帧和尾帧,不要传入更多图片;在 ref2va 模型中视为参考图;t2va 模型会拒绝该字段。新接入应使用 content[].role 明确表达素材语义。

提交成功响应

HTTP 状态码:200

{
"id": "task_a1b2c3d4",
"task_id": "task_a1b2c3d4",
"object": "video",
"model": "minimax/minimax-h3-t2va",
"status": "queued",
"progress": 0,
"created_at": 1780000000
}

idtask_id 相同,都是 Mozia API 的任务 ID。请保存该 ID,用于后续查询和下载。

查询任务

GET https://mzsjai.com/v1/video/generations/{task_id}
curl "https://mzsjai.com/v1/video/generations/task_a1b2c3d4" \
-H "Authorization: Bearer $API_KEY"

建议每 5~10 秒查询一次。任务状态异步更新,因此连续请求不一定每次都会看到变化。

状态

status说明
queued已创建或正在排队
running正在生成
succeeded生成成功
failed生成失败
cancelled已取消
expired已过期
unknown未识别的状态

progress0100 的整数。成功、失败、取消或过期任务均返回 100;生成中的进度为平台估算值,不代表 H3 工作流的精确渲染百分比。

生成中响应

{
"id": "task_a1b2c3d4",
"task_id": "task_a1b2c3d4",
"object": "video",
"model": "minimax/minimax-h3-t2va",
"status": "running",
"progress": 30,
"created_at": 1780000000,
"updated_at": 1780000060
}

成功响应

{
"id": "task_a1b2c3d4",
"task_id": "task_a1b2c3d4",
"object": "video",
"model": "minimax/minimax-h3-t2va",
"status": "succeeded",
"progress": 100,
"created_at": 1780000000,
"updated_at": 1780000180,
"content": {
"url": "https://mzsjai.com/v1/video/generations/task_a1b2c3d4/content/video.mp4?uid=1&expires=1780086580&signature=...",
"expires_at": 1780086580
},
"resolution": "768P",
"ratio": "16:9",
"duration": 5
}

content 只在任务成功且结果可用时出现。resolutionratioduration 只有平台能够获得对应信息时才出现,调用方不能依赖它们必定存在。当前 GET 响应不返回 usage,也不会用 0 伪造缺失的用量数据。

返回的 content.url 是有效期内可访问的签名地址,过期时间见 content.expires_at。也可以在当前 API Key 鉴权下使用 /v1/video/generations/{task_id}/content 下载。

失败响应

{
"id": "task_a1b2c3d4",
"task_id": "task_a1b2c3d4",
"object": "video",
"model": "minimax/minimax-h3-t2va",
"status": "failed",
"progress": 100,
"created_at": 1780000000,
"updated_at": 1780000045,
"error": {
"code": "task_failed",
"message": "H3 generation failed"
}
}

下载视频

任务状态变为 succeeded 后,可以直接使用查询响应中的 content.url,也可以调用 V2 下载路径:

curl -L "https://mzsjai.com/v1/video/generations/task_a1b2c3d4/content" \
-H "Authorization: Bearer $API_KEY" \
-o result.mp4

下载接口可能返回重定向,因此命令行调用应使用 curl -L

错误格式

请求校验、任务不存在或任务提交失败时,接口返回非 2xx 状态码,例如:

{
"code": "invalid_request",
"message": "last_frame requires first_frame",
"type": "invalid_request_error",
"data": null
}

常见错误包括:缺少模型、提示词或 duration;时长不在 4~15 秒;单独提交尾帧;首尾帧与参考素材混用;t2va 携带素材;ref2va 没有参考素材;保留原音时提交多个视频或提交静音视频;请求 2Kadaptive 或未支持的尺寸;模型暂时不可用;任务 ID 不存在。

从旧接口迁移

/v1/videos 路由仍保留兼容,但会返回旧版 OpenAI Video 响应。新客户端应完整迁移,不要混用两套响应结构:

旧接口/字段V2 接口/字段
POST /v1/videosPOST /v1/video/generations
GET /v1/videos/{id}GET /v1/video/generations/{id}
in_progressrunning
completedsucceeded
content_urlmetadata.urlcontent.url
images 的隐式含义content[].role 的明确角色