MiniMax 视频生成 API
POST https://api.yu-yu.ai/v1/video/generations
本接口用于创建 MiniMax 视频生成任务(v2 协议):以顶层 prompt 给出文本提示词,并通过 metadata.content 数组传入图片、视频、音频等多模态信息,支持文生视频、图生视频(首帧 / 尾帧 / 首尾帧)与参考生视频。接口为异步接口,提交成功后返回 task_id,再通过查询任务接口轮询状态并获取生成的视频。
模型能力
本接口对外暴露 MiniMax-H3 家族的三个档位。三者的调用方式与参数完全一致(同一端点、同一套请求体字段与校验规则),差异只在 model 取值以及各档位支持的 resolution、duration 取值。
- MiniMax-H3(质量档):通用多模态视频模型,支持文生视频、图生视频(首帧 / 尾帧 / 首尾帧)与参考生视频(参考图 / 参考视频 / 参考音频)。输出分辨率
768P/2K,时长 4–15 秒。适合对画面质量要求较高的成片场景。 - MiniMax-H3-Max(高速档):在 MiniMax-H3 上后训练并优化生成速度的档位,支持文生视频、图生视频(首帧 / 尾帧)与参考生视频。输出分辨率
480P/768P(缺省768P,不支持2K),时长 5–15 秒(4 秒不支持)。 - MiniMax-H3-Fast(速度档):速度档位,调用方式与参数与上述两个档位一致,但可用分辨率更窄——本网关上该档位只接受
480P;该档位专属的补充字段由网关自动补齐,调用方无需传入。
| 档位 | model 取值 | resolution | duration(秒) |
|---|---|---|---|
| 质量档 | MiniMax-H3 | 768P、2K | 4–15 |
| 高速档 | MiniMax-H3-Max | 480P、768P(缺省 768P) | 5–15 |
| 速度档 | MiniMax-H3-Fast | 官方未单列;本网关上只接受 480P | 官方未单列,按 H3 家族同一套参数下发 |
说明
网关侧的档位命名(如「质量档 / 高速档 / 速度档」)与官方定位可能不同,档位能力以上表(官方能力表)为准。
官方 v2 接口文档目前明确列出 MiniMax-H3 与 MiniMax-H3-Max 两个模型名,MiniMax-H3-Fast 未单列独立的取值范围。请以请求实际返回的参数校验结果为准。
鉴权
本接口仅支持 API Key 鉴权,请在 https://api.yu-yu.ai/console 获取 API Key。
请求时在 Header 中携带:
text
Authorization: Bearer <API_KEY>提交任务
POST https://api.yu-yu.ai/v1/video/generations
Body 参数
model string 必选
需要调用的模型 ID,取值:MiniMax-H3、MiniMax-H3-Max、MiniMax-H3-Fast。三个档位的调用方式与参数完全一致,仅档位能力不同,详见上文的模型能力。
prompt string 条件必填
输入给模型的文本提示词,描述期望生成的视频,内容不能为空。与 metadata.content 数组中的非空 text 项至少提供一个。
注意
本入口不接受顶层的 content 数组:官方 v2 的 content 必须写在 metadata.content 下。既没有顶层 prompt、metadata.content 里也没有非空 text 项时,请求会以参数错误被拒绝。
duration integer 可选
生成视频的时长,单位:秒,仅支持整数,写在顶层。可用取值随档位不同:
MiniMax-H3:4–15 秒。MiniMax-H3-Max:5–15 秒(4 秒不支持)。
size string 可选
生成视频的分辨率,与 metadata.resolution 等价,两者同时给出时以 metadata.resolution 为准。可用取值随档位不同:
MiniMax-H3:768P、2K。MiniMax-H3-Max:480P、768P,缺省768P;不支持2K。MiniMax-H3-Fast:只接受480P。
metadata object 可选
H3 的原生参数统一收在 metadata 下,未列出的顶层字段不会生效:
- metadata.content
object[]:官方 v2 的content数组,元素结构见下文。 - metadata.resolution
string:生成视频的分辨率,取值同size;优先级高于顶层size,缺省768P。 - metadata.ratio
string:生成视频的宽高比,说明见下文。 - metadata.callback_url
string:任务状态变化的回调地址,说明见下文。 - metadata.first_frame_image / metadata.last_frame_image
string:首帧 / 尾帧图片地址(不使用metadata.content时的简写形式)。 - metadata.reference_image(或
reference_images)/ metadata.reference_video(或reference_videos)/ metadata.reference_audio(或reference_audios):参考图 / 参考视频 / 参考音频地址,可传字符串或字符串数组。
说明
metadata.content 与「prompt + 首尾帧 / 参考素材简写字段」两条路径互斥:给出 metadata.content 后,网关不再拼装简写字段。
metadata.content 数组元素
metadata.content 是多模态信息数组,每个元素由 type 区分内容类型(text / image_url / video_url / audio_url),并可用 role 标注用途。数组中必须包含一个非空的 text 项(否则需由顶层 prompt 补上)。
支持的输入组合(对应不同的生成场景):
- 文生视频:仅一个
text元素。 - 图生视频-首帧:
text+ 1 个image_url(role=first_frame,或不传role)。 - 图生视频-尾帧:
text+ 1 个image_url(role=last_frame)。 - 图生视频-首尾帧:
text+ 2 个image_url,role分别为first_frame与last_frame。 - 参考生视频:
text+ 参考图(role=reference_image)、参考视频(role=reference_video)、参考音频(role=reference_audio)的任意组合。
注意
图生视频与参考生视频互斥:metadata.content 中只要出现 reference_image / reference_video / reference_audio,就不能再出现 first_frame / last_frame(反之亦然),两者不可混用。
metadata.content 文本元素 object
- metadata.content[].type
string必选:输入内容的类型,此处应为text。 - metadata.content[].text
string必选:输入给模型的文本提示词,描述期望生成的视频。按字符计长度,单个text最多 7000 字符。
metadata.content 图片元素 object
- metadata.content[].type
string必选:输入内容的类型,此处应为image_url。 - metadata.content[].image_url
object必选:输入给模型的图片对象。- metadata.content[].image_url.url
string必选:图片位置。支持公网 URL、mm_file://{file_id}(引用平台已有文件,例如已上传文件或上一次产物的file_id)、data:image/<图片格式>;base64,<Base64编码>(<图片格式>需小写)。
- metadata.content[].image_url.url
- metadata.content[].role
string条件必填:图片的位置或用途。
role 取值
first_frame:首帧图片(图生视频)。只有一张图片且未指定role时,默认按first_frame处理。last_frame:尾帧图片(首尾帧图生视频,需与first_frame配对)。reference_image:参考图(参考生视频)。
图片要求
| 项 | 限制 |
|---|---|
| 格式 | JPG、JPEG、PNG、WEBP、HEIC、HEIF |
| 单文件大小 | ≤ 30 MB |
| 宽高像素 | [256, 5760] px |
| 宽高比(宽/高) | [0.4, 2.5] |
| 数量 | 首帧 ≤ 1、尾帧 ≤ 1、参考图 ≤ 9 |
metadata.content 视频元素 object
仅参考生视频场景使用。
- metadata.content[].type
string必选:输入内容的类型,此处应为video_url。 - metadata.content[].video_url
object必选:参考视频对象。- metadata.content[].video_url.url
string必选:视频位置。支持公网 URL、mm_file://{file_id}、data:video/mp4;base64,<Base64编码>。
- metadata.content[].video_url.url
- metadata.content[].role
string必选:此处应为reference_video。
视频要求
| 项 | 限制 |
|---|---|
| 容器 / 格式 | MP4(.mp4)、MOV(.mov) |
| 编码 | 视频 H.264/AVC、H.265/HEVC;音频 AAC、MP3 |
| 单文件大小 | ≤ 50 MB |
| 数量 | ≤ 3 |
| 单段时长 | [2, 15] s,总时长 ≤ 15 s |
| 宽高像素 | [256, 5760] px |
| 宽高比(宽/高) | [0.4, 2.5] |
| 帧率 | [23.976, 60] |
metadata.content 音频元素 object
仅参考生视频场景使用。
- metadata.content[].type
string必选:输入内容的类型,此处应为audio_url。 - metadata.content[].audio_url
object必选:参考音频对象。- metadata.content[].audio_url.url
string必选:音频位置。支持公网 URL、mm_file://{file_id}、data:audio/<音频格式>;base64,<Base64编码>(<音频格式>需小写)。
- metadata.content[].audio_url.url
- metadata.content[].role
string必选:此处应为reference_audio。
音频要求
| 项 | 限制 |
|---|---|
| 格式 | WAV、MP3 |
| 单文件大小 | ≤ 15 MB |
| 数量 | ≤ 3 |
| 单段时长 | [2, 15] s,总时长 ≤ 15 s |
请求体大小
整个请求体大小不超过 64 MB。Base64 编码会让体积增大约 33%,体积较大的图片 / 视频请优先使用公网 URL 或 mm_file://{file_id}。
metadata.ratio
生成视频的宽高比。缺省 adaptive(根据输入自动选择最合适的比例,实际比例可从查询接口返回的 ratio 字段读取)。
取值:adaptive、21:9、16:9、4:3、1:1、3:4、9:16。
不同生成场景的要求不同:
- 文生视频(
metadata.content只含text):ratio必填,且不能为adaptive,可取21:9、16:9、4:3、1:1、3:4、9:16。 - 图生视频(
metadata.content含first_frame/last_frame图片):宽高比由输入图片决定,ratio恒为adaptive;传入其它合法值不会报错,但会被忽略并按adaptive处理。 - 参考生视频(
metadata.content含reference_image/reference_video/reference_audio):ratio可选,缺省adaptive,也可显式指定上述任一具体比例。
metadata.callback_url
任务状态变化的回调地址。配置后,服务端会先向该地址发送一个带有 challenge 字段的验证请求(需在 3 秒内原样返回 challenge 完成校验);校验通过后,每次任务状态变化都会向该地址 POST 一条更新,推送体结构与查询任务接口的响应一致。
回调的 status 取值为 queued、running、succeeded、failed、cancelled。
查询任务
GET https://api.yu-yu.ai/v1/video/generations/{task_id}
查询单个视频生成任务的状态与结果。
Path 参数
task_id string 必选
提交任务时返回的任务 ID。
说明
上面参数为路径参数,需拼接到 URL 路径中传入。
注意
仅支持查询最近 7 天的任务,时间区间为 [T-7天, T),其中 T 为请求发起时刻的 UTC 时间戳(精确到秒);超出该窗口的 task_id 会返回 invalid task_id。任务产物的视频 URL 有有效期限制,请及时下载或转存。
响应参数
task object
任务对象。
- task.id
string:任务 ID,与提交接口返回的task_id对应。 - task.model
string:任务使用的模型名,例如MiniMax-H3。 - task.status
string:任务状态,取值见任务状态说明。 - task.error
object:错误信息。任务成功时不返回,任务失败时返回code与message。- task.error.code
string:错误码。 - task.error.message
string:错误提示信息。
- task.error.code
- task.created_at
integer:任务创建时间的 Unix 时间戳(秒)。 - task.updated_at
integer:任务状态最近一次更新时间的 Unix 时间戳(秒)。 - task.content
object:任务产出内容,任务成功后返回。- task.content.url
string:生成视频的下载地址,有效期有限,请及时下载或转存。 - task.content.prompt
string:结构化增强后的提示词,仅task_type=h3_context_ir的任务返回。
- task.content.url
- task.resolution
string:任务产出的分辨率。 - task.duration
integer:任务产出的时长,单位:秒。 - task.usage
object:本次请求的用量,仅任务成功后返回。- usage.total_seconds
integer:总计量秒数 = 输入秒数 + 输出秒数。 - usage.input_seconds
integer:输入参考视频的秒数(存在参考视频时计量)。 - usage.output_seconds
integer:输出视频的秒数。 - usage.input_image_count
integer:输入图片总数(首帧 + 尾帧 + 参考图之和)。 - usage.input_audio_seconds
integer:输入参考音频的秒数(分段求和后取整),无参考音频时不返回。 - usage.total_tokens
integer:总 token 数 =prompt_tokens+completion_tokens。视频任务由用量换算得到。 - usage.prompt_tokens
integer:输入 token 数。 - usage.completion_tokens
integer:输出 token 数。
- usage.total_seconds
- task.ratio
string:任务产出的宽高比,对该任务类型不适用时可能为空字符串。 - task.task_type
string:任务类型。视频生成任务为generation;其它可能取值:h3_context_ir(结构化提示词任务)、regeneration(视频重生成任务)。 - task.modality
string:产出模态。视频生成与视频重生成任务为video;h3_context_ir任务为text。
请求示例
文生视频
bash
curl -X POST "https://api.yu-yu.ai/v1/video/generations" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "MiniMax-H3",
"prompt": "一位女船长独自站在巨大的观景窗前,舰队跃迁离去,舰桥震动,镜头缓慢推进",
"duration": 5,
"metadata": {
"resolution": "2K",
"ratio": "16:9"
}
}'完整的 JSON body:
json
{
"model": "MiniMax-H3",
"prompt": "一位女船长独自站在巨大的观景窗前,舰队跃迁离去,舰桥震动,镜头缓慢推进",
"duration": 5,
"metadata": {
"resolution": "2K",
"ratio": "16:9"
}
}图生视频(首帧)
bash
curl -X POST "https://api.yu-yu.ai/v1/video/generations" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "MiniMax-H3",
"prompt": "镜头聚焦到背景中的人物,并让拉面碗里的热气更浓",
"duration": 5,
"metadata": {
"resolution": "2K",
"ratio": "adaptive",
"first_frame_image": "https://your-cdn.example.com/first-frame.png"
}
}'以上是最短写法:文本走顶层 prompt,首帧图走 metadata.first_frame_image。若希望完全按官方 content 数组下发,可把图片写成 metadata.content 元素:
json
{
"model": "MiniMax-H3",
"prompt": "镜头聚焦到背景中的人物,并让拉面碗里的热气更浓",
"duration": 5,
"metadata": {
"resolution": "2K",
"ratio": "adaptive",
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://your-cdn.example.com/first-frame.png"
},
"role": "first_frame"
}
]
}
}参考生视频
bash
curl -X POST "https://api.yu-yu.ai/v1/video/generations" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "MiniMax-H3",
"duration": 5,
"metadata": {
"resolution": "2K",
"ratio": "adaptive",
"content": [
{
"type": "text",
"text": "人物开口说话:随风而行,自由生活。音色参考参考音频 1"
},
{
"type": "video_url",
"video_url": {
"url": "https://your-cdn.example.com/reference.mp4"
},
"role": "reference_video"
},
{
"type": "audio_url",
"audio_url": {
"url": "https://your-cdn.example.com/reference.mp3"
},
"role": "reference_audio"
}
]
}
}'查询任务
bash
curl -X GET "https://api.yu-yu.ai/v1/video/generations/424010985738629" \
-H "Authorization: Bearer YOUR_API_KEY"响应示例
提交成功
json
{
"task_id": "424010985738629"
}获取 task_id 后,通过查询任务接口轮询任务状态;任务成功后从 task.content.url 获取生成的视频。
查询成功(任务已完成)
json
{
"task": {
"id": "424010985738629",
"model": "MiniMax-H3",
"status": "succeeded",
"created_at": 1785125529,
"updated_at": 1785125946,
"content": {
"url": "https://your-cdn.example.com/h3-generated-2k-output.mp4"
},
"resolution": "2K",
"duration": 5,
"usage": {
"total_seconds": 5,
"input_seconds": 0,
"output_seconds": 5,
"input_image_count": 1,
"input_audio_seconds": 6,
"total_tokens": 273890,
"prompt_tokens": 13500,
"completion_tokens": 260390
},
"ratio": "16:9",
"task_type": "generation",
"modality": "video"
}
}查询成功(任务失败)
json
{
"task": {
"id": "424010985738630",
"model": "MiniMax-H3",
"status": "failed",
"error": {
"code": "1026",
"message": "video description contains sensitive content"
},
"created_at": 1785125529,
"updated_at": 1785125700,
"resolution": "2K",
"duration": 5,
"ratio": "16:9",
"task_type": "generation",
"modality": "video"
}
}请求失败
参数错误、鉴权失败、限流等情况返回统一的错误信封:
json
{
"type": "error",
"error": {
"type": "bad_request_error",
"message": "invalid params, content must include a non-empty text item (prompt is required) (2013)",
"http_code": "400"
},
"request_id": "021785229015510a2c883cf675b9804d"
}说明
http_code 是字符串;error.message 末尾括号内为内部错误码。
任务状态说明
status | 说明 | 客户端处理 |
|---|---|---|
queued | 任务排队中 | 继续轮询 |
running | 任务生成中 | 继续轮询 |
succeeded | 任务成功 | 从 task.content.url 读取产物,请及时下载或转存 |
failed | 任务失败 | 读取 task.error.code 与 task.error.message |
cancelled | 任务已取消 | 不再轮询 |
说明
建议按固定间隔轮询查询接口,任务进入终态(succeeded / failed / cancelled)后停止轮询;也可以提交时传入 callback_url,由服务端推送状态变化。
常见错误
HTTP 状态码与 error.type
| HTTP 状态码 | error.type | 说明 | 处理方式 |
|---|---|---|---|
| 400 | bad_request_error | 参数错误,例如 content 缺少非空 text 项、duration / resolution 超出范围 | 检查请求体参数取值 |
| 401 | authorized_error | 鉴权失败 | 检查 Authorization 请求头与 API Key |
| 422 | unprocessable_entity_error | 输入命中敏感内容 | 调整提示词或输入素材 |
| 429 | rate_limit_error | 触发限流 | 稍后重试,或降低请求频率 |
| 500 | server_error | 服务内部错误 | 稍后重试 |
| 529 | overloaded_error | 服务过载 | 稍后重试 |
内部错误码
错误码出现在错误信封的 error.message 末尾括号内;任务级错误出现在 task.error.code:
| 错误码 | 含义 | 处理方式 |
|---|---|---|
| 1000 | 未知错误 | 稍后重试 |
| 1002 | 触发限流 | 稍后重试 |
| 1004 | 鉴权失败 | 检查 API Key 是否正确且处于可用状态 |
| 1026 | 输入包含敏感内容 | 修改输入内容 |
| 1027 | 生成结果包含敏感内容 | 修改输入内容 |
| 2013 | 参数错误 | 检查请求参数 |
注意
task_id 只保留 7 天,超出查询窗口会返回 invalid task_id;视频产物 URL 同样有有效期,请及时下载或转存。
