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-10s768p固定 10 秒按次
Minimax-H3-768p-933-15s768p固定 15 秒按次
Minimax-H3-768p-933-10s-15s768p10–15 秒整数按秒
MiniMax-H3-933-1440p-10s1440p固定 10 秒按次
MiniMax-H3-933-1440p-15s1440p固定 15 秒按次
MiniMax-H3-933-1440p-10-15s1440p10–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 客户售价

模型 IDbubu12key 标准售价计算示例
MiniMax-H3-933-1440p-10s1.50 元/次固定 10 秒,整次 1.50
MiniMax-H3-933-1440p-15s2.25 元/次固定 15 秒,整次 2.25
MiniMax-H3-933-1440p-10-15s0.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 后接下方轮询下载示例。

完整请求参数

字段类型必填说明
modelstring是已开通档位的完整模型 ID
promptstring是视频内容描述,支持中文、镜头安排及素材引用;不同系列的长度建议见下表
secondsinteger否仅可变档:10–15,默认 10;固定档省略
durationinteger否可变档的时长别名,约束与 seconds 相同;推荐只传一个时长字段
aspect_ratiostring否支持八种比例,见下表。需要指定画幅时请显式传入
imagesstring[]否参考图片,最多 9 张;推荐公网 URL。768p 也支持 base64,1440p 支持 4K 参考图片
metadataobject否视频、音频参考字段的容器;纯文字或仅图片时可省略
metadata.video_urlsstring[]否参考视频 URL,最多 3 段,每段不超过 15 秒
metadata.videosstring[]否video_urls 的别名,同一请求二选一
metadata.audio_urlsstring[]否参考音频 URL,最多 3 段,每段不超过 15 秒
metadata.audiosstring[]否audio_urls 的别名,同一请求二选一
resolution / size—否无需传入。清晰度由所选模型决定,画幅通过 aspect_ratio 指定

两个系列的能力区别

项目768p H31440p 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_idstring保存为任务 ID;优先取 id,为空时取 task_id,不要依赖固定长度
objectstring任务类型,通常为 video
modelstring实际提交的模型
statusstring判断任务是否完成的依据,见下表
progressnumber进度提示,通常为 0–100,可能停留或回退,不可单独判断成功
created_at / completed_atintegerUnix 秒级时间戳;完成时间可省略,不作为成功依据
seconds / sizestring,可选例如 "12" / "2560x1440";响应时长可能为字符串,缺少字段不代表失败
metadata.urlstring,可选成功后的首选视频下载地址;未完成时可为空或不存在
url / result_urlstring,可选可兼容读取的结果地址,不要求每次同时出现
errorobject,可选失败原因,读取 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。