MiniMax H3 视频生成(768p / 1440p)
通过 bubu12key 视频 API,可以提交文字描述,也可以加入图片、视频和音频作为参考。接口采用异步任务:提交后保存任务 ID,定时查询状态,完成后从返回的地址下载视频。本文分别说明 768p 与新增 1440p 系列的参数。
minimax-h3 是 API Key 使用的分组。请求中的 model 必须填写完整模型 ID;分组名称和 MiniMax-H3-933-1440p 系列名称都不能直接作为模型 ID。
模型档位与开放情况
| 完整模型 ID | 分辨率 | 输出时长 | 计费方式 |
|---|---|---|---|
Minimax-H3-768p-933-10s | 768p | 固定 10 秒 | 按次 |
Minimax-H3-768p-933-15s | 768p | 固定 15 秒 | 按次 |
Minimax-H3-768p-933-10s-15s | 768p | 10–15 秒整数 | 按秒 |
MiniMax-H3-933-1440p-10s | 1440p | 固定 10 秒 | 按次 |
MiniMax-H3-933-1440p-15s | 1440p | 固定 15 秒 | 按次 |
MiniMax-H3-933-1440p-10-15s | 1440p | 10–15 秒整数 | 按秒 |
768p H3 按秒售价
Minimax-H3-768p-933-10s-15s 使用 minimax-h3 分组,标准售价为 0.10 元/秒,支持 10–15 秒整数,省略时长时默认 10 秒。此价格为 2026-09-17 核对的标准分组客户售价。
10 秒:0.10 × 10 = 1.00 元
12 秒:0.10 × 12 = 1.20 元
15 秒:0.10 × 15 = 1.50 元
768p 按秒示例见下方调用说明;与 Seedance 按秒模型的价格对照见视频按秒计费。固定 -10s / -15s 档仍按次计费。
1440p H3 客户售价
| 模型 ID | bubu12key 标准售价 | 计算示例 |
|---|---|---|
MiniMax-H3-933-1440p-10s | 1.50 元/次 | 固定 10 秒,整次 1.50 |
MiniMax-H3-933-1440p-15s | 2.25 元/次 | 固定 15 秒,整次 2.25 |
MiniMax-H3-933-1440p-10-15s | 0.15 元/秒 | 12 秒为 1.80,10 秒为 1.50,15 秒为 2.25 |
bubu12key 使用 1 元 = 1 美元显示额度的站内计价口径:若界面显示美元符号,1.50 元对应显示额度 1.50,不再按外汇汇率换算。以上为标准售价;账户专属优惠及最终结算以控制台为准。
调用前确认模型权限
768p 可变档已列入 bubu12key 公开价格表,按秒计费。上表说明系列规格,不代表每个 Key 已开放全部档位,1440p 系列也需单独确认权限。请先用当前 Key 调用 GET /v1/models,确认返回包含目标模型再提交;尚未显示的模型请联系支持开通。
本页 1440p 售价已确定,模型开通状态和账户适用价格请在 bubu12key 控制台与公开价格接口确认。
固定档不需要传 seconds 或 duration,选择 -10s / -15s 就确定了时长,整次价格无需再乘秒数。可变档可传 seconds 或 duration,取 10–15 的整数,省略时默认 10 秒;建议显式使用 seconds。两者同时传入时必须一致。
两个系列的可变档后缀不同:768p 是 -10s-15s,1440p 是 -10-15s,请完整复制模型 ID。本文 1440p 三档共用下方多参考参数。
鉴权与接口地址
API 根地址为 https://bubu12key.top。提交和查询使用 Bearer Key;提交请求体使用 JSON。
Authorization: Bearer sk-你的APIKey
Content-Type: application/json
请将 Key 保存在服务端或环境变量中。仅传 X-Api-Key 不能替代视频提交和查询所需的 Authorization。
| 方法 | 路径 | 用途与鉴权 |
|---|---|---|
GET | /v1/models | 查看当前 Key 的模型列表;需要 Bearer Key |
POST | /v1/videos | 创建任务,推荐路径;需要 Bearer Key |
POST | /v1/videos/generations | 创建任务的兼容别名;需要 Bearer Key |
GET | /v1/videos/{task_id} | 查询当前账户的任务;需要 Bearer Key |
GET | /v1/videos/{task_id}/content | 下载已完成视频;当前无需 API Key |
所有档位使用同一个创建路径,通过 JSON 的 model 区分。不要在 /v1/videos/generations 后追加模型名。任务列表 GET /v1/videos 和删除任务 DELETE /v1/videos/{task_id} 当前未开放,请自行保存任务 ID。
768p 按秒调用:生成 12 秒视频
先在终端设置自己的 API Key。以下请求使用 Minimax-H3-768p-933-10s-15s 生成 12 秒视频,标准费用为 0.10 × 12 = 1.20 元:
export BUBU12KEY_API_KEY="sk-你的APIKey"
curl --fail-with-body -sS --max-time 180 https://bubu12key.top/v1/videos \
-H "Authorization: Bearer $BUBU12KEY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "Minimax-H3-768p-933-10s-15s",
"prompt": "清晨薄雾中的湖面,一艘木船缓缓驶过,镜头平稳跟随,水面倒影清晰",
"seconds": 12,
"aspect_ratio": "16:9"
}'
seconds 取 10–15 的整数,省略默认 10 秒;duration 是别名,建议只传一个时长字段。不要填小数、带单位的文字或超出范围的值。768p 分辨率由模型决定,无需传 resolution / size。
提交后保存 id(为空时读取 task_id),再查询 GET /v1/videos/{task_id}。状态与下载方式和固定档相同,详见轮询下载示例。
快速开始:1440p 固定 10 秒
以下为 Bash 示例,需要 curl 和 jq。先设置自己的 Key;目标模型需要已在该 Key 的模型列表中开放。
BASE="https://bubu12key.top"
KEY="sk-你的APIKey"
MODEL="MiniMax-H3-933-1440p-10s"
# 确认 Key 已开放目标模型
MODELS=$(curl --fail-with-body -sS --max-time 30 "$BASE/v1/models" \
-H "Authorization: Bearer $KEY") || exit 1
printf '%s' "$MODELS" | jq -e --arg model "$MODEL" \
'.data | any(.id == $model)' >/dev/null || {
echo "当前 Key 尚未开放目标模型" >&2
exit 1
}
# 固定档无需时长、分辨率参数
BODY=$(jq -n --arg model "$MODEL" '{
model: $model,
prompt: "清晨薄雾中的湖面,一艘木船缓缓驶过,镜头平稳跟随,水面倒影清晰",
aspect_ratio: "16:9"
}')
R=$(curl --fail-with-body -sS --max-time 180 "$BASE/v1/videos" \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
--data-binary "$BODY") || exit 1
ID=$(printf '%s' "$R" | jq -er '.id // .task_id') || exit 1
echo "请保存任务 ID:$ID"
生成 15 秒,将模型改为 MiniMax-H3-933-1440p-15s;使用 768p 固定 10 秒,将模型改为 Minimax-H3-768p-933-10s。拿到 ID 后接下方轮询下载示例。
完整请求参数
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | 已开通档位的完整模型 ID |
prompt | string | 是 | 视频内容描述,支持中文、镜头安排及素材引用;不同系列的长度建议见下表 |
seconds | integer | 否 | 仅可变档:10–15,默认 10;固定档省略 |
duration | integer | 否 | 可变档的时长别名,约束与 seconds 相同;推荐只传一个时长字段 |
aspect_ratio | string | 否 | 支持八种比例,见下表。需要指定画幅时请显式传入 |
images | string[] | 否 | 参考图片,最多 9 张;推荐公网 URL。768p 也支持 base64,1440p 支持 4K 参考图片 |
metadata | object | 否 | 视频、音频参考字段的容器;纯文字或仅图片时可省略 |
metadata.video_urls | string[] | 否 | 参考视频 URL,最多 3 段,每段不超过 15 秒 |
metadata.videos | string[] | 否 | video_urls 的别名,同一请求二选一 |
metadata.audio_urls | string[] | 否 | 参考音频 URL,最多 3 段,每段不超过 15 秒 |
metadata.audios | string[] | 否 | audio_urls 的别名,同一请求二选一 |
resolution / size | — | 否 | 无需传入。清晰度由所选模型决定,画幅通过 aspect_ratio 指定 |
两个系列的能力区别
| 项目 | 768p H3 | 1440p H3 |
|---|---|---|
| 清晰度 | 固定 768p | 固定 1440p |
| 提示词长度 | 建议控制在 2000 汉字内,过长可能降低指令跟随效果 | 支持长文本,包括 3700 余汉字的提示词;该长度不是最大字符数承诺 |
| 各类素材上限 | 图片 9、视频 3、音频 3 | 图片 9、视频 3、音频 3 |
| 混合素材总上限 | 12 个 | 15 个 |
| 素材引用 | 通过 @图片N / @视频N / @音频N 指定 | 支持索引引用,也支持不写引用标签、按描述自主使用素材 |
| 高分辨率参考图 | 按普通参考图使用 | 可使用 4K 参考图,无需仅为分辨率提前压缩 |
各类上限与总上限需要同时满足。例如 9 张图+3 段视频+3 段音频适用于 1440p;768p 使用 9 张图+2 段视频+1 段音频时恰好达到 12 个。纯文字生成可完全省略素材字段。
画幅和输出尺寸
aspect_ratio | 用途举例 | 1440p 输出尺寸说明 |
|---|---|---|
16:9 | 横屏视频 | 2560×1440 |
9:16 | 竖屏短视频 | 1440×2560 |
1:1 | 方形内容 | 按所选画幅生成;具体尺寸以结果文件或可选的 size 字段为准 |
4:3 | 经典横画幅 | |
3:4 | 竖向展示 | |
21:9 | 宽银幕画幅 | |
3:2 | 横向摄影画幅 | |
2:3 | 竖向摄影画幅 |
以上八种比例均适用于本文两个 H3 系列。不要把像素尺寸填入 aspect_ratio,也不要假定省略后一定得到横屏。
参考素材与调用示例
素材 URL 应能从公网直接读取文件内容,不应指向需要登录的网页、本地路径或分享页面。临时签名地址需要在生成期间保持有效。参考视频和音频的 15 秒限制针对每个输入片段,输出时长仍由模型及其时长字段决定。
索引模式:图片+视频+音频
各类素材独立从 1 开始编号,对应其数组顺序:第一张图是 @图片1,第一段视频是 @视频1,第一段音频是 @音频1。上传两个图片后才能引用 @图片2。这些标签写在提示词中,没有额外的编号字段。
下例生成 12 秒 1440p 视频。把素材地址替换为自己的真实文件后,作为 JSON 提交到 POST /v1/videos。
{
"model": "MiniMax-H3-933-1440p-10-15s",
"prompt": "@图片1 中的人物是主角,@图片2 作为海边环境参考;采用 @视频1 的平稳跟拍方式,声音氛围参考 @音频1。主角沿木栈道慢步,远处海浪轻轻拍岸,傍晚暖色光线,人物外观始终一致。",
"seconds": 12,
"aspect_ratio": "16:9",
"images": [
"https://example.com/character.jpg",
"https://example.com/seaside.jpg"
],
"metadata": {
"video_urls": ["https://example.com/camera.mp4"],
"audio_urls": ["https://example.com/ambience.mp3"]
}
}
无索引模式:1440p 图片参考
1440p 系列可以上传参考素材而不写任何 @ 标签,让模型结合描述选择参考信息,无需额外的模式参数。希望精确指定素材用途时使用索引模式。
{
"model": "MiniMax-H3-933-1440p-15s",
"prompt": "保持参考图片中的陶瓷杯造型和纹理,杯子置于木桌上,镜头缓慢环绕,柔和侧光突出釉面细节。",
"aspect_ratio": "9:16",
"images": ["https://example.com/cup.jpg"]
}
768p 固定档与字段别名
768p 可用相同的标准素材字段,也可使用 metadata.videos / metadata.audios。下例使用别名,每类只写一个字段。
{
"model": "Minimax-H3-768p-933-10s",
"prompt": "@图片1 保持建筑外观,参考 @视频1 的镜头移动和 @音频1 的环境氛围,雨后街道,倒影自然。",
"aspect_ratio": "16:9",
"images": ["https://example.com/building.jpg"],
"metadata": {
"videos": ["https://example.com/street.mp4"],
"audios": ["https://example.com/rain.mp3"]
}
}
响应字段与状态
提交成功表示任务已受理,通常返回 HTTP 200 和任务 ID,不表示视频已生成。以下均为结构示例;可选字段可能省略。
{
"id": "task_example_1440p",
"task_id": "task_example_1440p",
"object": "video",
"model": "MiniMax-H3-933-1440p-10-15s",
"status": "queued",
"progress": 0,
"created_at": 1789344000,
"seconds": "12",
"size": "2560x1440"
}
| 字段 | 类型 | 客户端处理 |
|---|---|---|
id / task_id | string | 保存为任务 ID;优先取 id,为空时取 task_id,不要依赖固定长度 |
object | string | 任务类型,通常为 video |
model | string | 实际提交的模型 |
status | string | 判断任务是否完成的依据,见下表 |
progress | number | 进度提示,通常为 0–100,可能停留或回退,不可单独判断成功 |
created_at / completed_at | integer | Unix 秒级时间戳;完成时间可省略,不作为成功依据 |
seconds / size | string,可选 | 例如 "12" / "2560x1440";响应时长可能为字符串,缺少字段不代表失败 |
metadata.url | string,可选 | 成功后的首选视频下载地址;未完成时可为空或不存在 |
url / result_url | string,可选 | 可兼容读取的结果地址,不要求每次同时出现 |
error | object,可选 | 失败原因,读取 error.message 与 error.code |
status | 含义 | 下一步 |
|---|---|---|
queued | 已入队 | 间隔查询 |
in_progress / processing | 视频生成或文件准备中 | 继续查询;包括进度停在 99 的情况 |
completed / succeeded | 视频已完成 | 读取非空结果地址并下载 |
failed | 任务失败 | 停止轮询并检查错误 |
完成响应示例:
{
"id": "task_example_1440p",
"object": "video",
"model": "MiniMax-H3-933-1440p-10-15s",
"status": "completed",
"progress": 100,
"created_at": 1789344000,
"completed_at": 1789344300,
"seconds": "12",
"size": "2560x1440",
"metadata": {
"url": "https://videos.bubu12key.top/videos/2026/09/14/task_example_1440p.mp4"
}
}
轮询并下载完整示例
接快速开始中的 BASE、KEY 和 ID。建议每 5–10 秒查询一次,示例每 10 秒查询、最多查询 180 次;单次请求另有超时限制。达到客户端等待上限后保存任务 ID,稍后继续查,不应直接把任务判为失败或自动重复提交。
for i in $(seq 1 180); do
R=$(curl --fail-with-body -sS --max-time 60 "$BASE/v1/videos/$ID" \
-H "Authorization: Bearer $KEY") || {
echo "查询失败,请保留任务 ID 后重试查询:$ID" >&2
exit 1
}
ST=$(printf '%s' "$R" | jq -er '.status') || exit 1
echo "[$i] status=$ST"
case "$ST" in
completed|succeeded)
URL=$(printf '%s' "$R" | jq -er \
'[.metadata.url, .result_url, .url] | map(select(type == "string" and length > 0)) | first') || {
echo "已完成但未取得视频地址,请记录任务 ID 联系支持:$ID" >&2
exit 1
}
curl --fail --location --retry 2 --max-time 900 "$URL" -o video.mp4 || exit 1
echo "已保存 video.mp4"
exit 0
;;
failed)
printf '%s' "$R" | jq '.error // .fail_reason // "生成失败"'
exit 1
;;
queued|in_progress|processing) ;;
*) echo "遇到未知状态,保留任务 ID 并检查响应:$ID" >&2; exit 1 ;;
esac
sleep 10
done
echo "达到等待上限,任务仍可继续查询:$ID" >&2
exit 1
POST 创建请求超时并不能证明任务未受理。排查前不要启用自动重提,否则可能生成多个任务并重复计费。查询失败时重试已有任务的 GET 请求即可。
下载、播放与保存
| 下载方式 | 鉴权 | 能力与用途 |
|---|---|---|
响应中的 metadata.url,通常为 videos.bubu12key.top 视频直链 | 无需 API Key | 推荐用于下载和播放;支持 Range、拖动进度与断点续传 |
GET https://bubu12key.top/v1/videos/{task_id}/content | 当前无需 API Key | 按任务 ID 下载完整文件;当前不支持 Range,不能据此实现分段读取 |
# 按任务 ID 下载已完成视频
curl --fail --location --max-time 900 \
"https://bubu12key.top/v1/videos/$ID/content" -o video.mp4
优先使用本次查询实际返回的地址,不要自己拼接域名、日期目录或文件名。/content 返回视频二进制流;失败时可能返回 JSON,保存前必须检查 HTTP 状态。该下载路由仅开放 GET,不应使用 HEAD 探测。需要分段读取时请直接向返回的视频直链发出 Range 请求。
bubu12key 视频地址为临时保存服务,保存期限以当前服务策略为准,不提供永久存储承诺。完成后请及时下载到自己的存储;已清理的文件无法保证恢复。持有免鉴权下载链接的人可以访问文件,请按需分发链接。
错误处理与排查
区分 HTTP 请求失败与已受理任务的生成失败:HTTP 非 2xx 时先检查响应体;HTTP 200 的查询仍可能返回 status: failed。错误字段示意:
{
"error": {
"code": "invalid_request",
"message": "请求参数不符合要求"
}
}
| 现象 | 检查与处理 |
|---|---|
400 参数错误 | 检查 JSON、必填字段、整数时长、画幅枚举、参考素材类型和数量。先用 model + prompt 最小请求排查,再逐项加入素材 |
400 task_not_exist | 核对完整任务 ID,使用创建任务所属账户的有效 Key 查询 |
401 | 确认 Key 有效且未禁用,提交与查询均带 Authorization: Bearer |
403 / 权限或额度错误 | 检查模型权限、Key 分组及账户额度,以实际错误信息为准 |
503 model_not_found / 无可用模型 | 从 GET /v1/models 确认模型 ID 与权限;核对可变档后缀,未开放时联系支持 |
404 Invalid URL | 检查路径。创建路径后不追加模型名;列表、删除接口未开放 |
429 | 降低并发与轮询频率;有 Retry-After 时按该值等待,否则逐步增加重试间隔 |
5xx / 网络超时 | 对查询做有限次数退避重试,保留任务 ID;创建请求超时后先核实是否受理,避免重复提交 |
status: failed | 读取 error.message,排查素材可访问性、参数及内容要求;计费和退款结果以控制台账单为准 |
| 完成后下载失败 | 重新查询并使用最新结果地址,检查文件是否已过保存期限;记录 HTTP 状态与任务 ID 联系支持 |
反馈时提供模型 ID、任务 ID、发生时间、HTTP 状态以及响应头中的请求 ID(如 X-Oneapi-Request-Id)。不要提交完整 API Key。