MiniMax-H3 API
MiniMax-H3 使用 MiniMax V2 的请求和任务响应格式,提供视频生成能力。Base URL 为 https://api.seedance.nz,鉴权使用本站 API Key:Authorization: Bearer <API_KEY>。从 MiniMax V2 客户端迁移时,替换 Base URL 和 API Key,并按下面的能力范围调整请求。
机器可读定义:OpenAPI JSON。完整指南和接口定义可从 /docs/minimax-h3-api.md 和 /docs/minimax-h3-openapi.json 下载。
能力与兼容范围
| 项目 | 本接口 |
|---|---|
| 模型名称 | MiniMax-H3,区分大小写 |
| 文生视频 | 支持,至少一个非空 text 内容项;拼接后提示词最多 10000 字符 |
| 参考素材视频 | 最多 9 张参考图片、3 条参考音频、3 条参考视频,可组合使用 |
| 独立驱动音频 | 额外 1 条 drive_audio,与 3 条参考音频分开计数 |
| 分辨率 | 480P / 768P / 1080P,也接受小写 |
| 时长 | 普通请求整数 4–15 秒;含驱动音频请求整数 4–60 秒 |
| 输出 | 一个视频 URL;最终文件应由调用方及时保存 |
| 首帧、尾帧、首尾帧 | 支持单独 first_frame、单独 last_frame 或同时提供两者,按专用关键帧模式执行 |
| 混合关键帧与参考素材 | 支持关键帧与参考图、音频、视频或驱动音频组合;各类上限独立计数,属于本服务扩展 |
| 2K、MiniMax-H3-Max、Context-IR、视频再生成 | 不属于此模型接口 |
官方当前 MiniMax-H3 的分辨率范围是 768P / 2K、时长为 4–15 秒。本服务的 480P、1080P、drive_audio、audio_control、视频起始偏移、2:3 / 3:2 比例、混合关键帧与参考素材及长驱动音频任务属于扩展。参考站 H3 Gateway 的 /v1/videos、target、conditions、OSS 预签名 PUT 是另一套 SPI,不能直接作为本接口请求体。
价格
按提交请求的输出时长计费,标准零售价如下。参考图片、音频、视频不另加输入费用。
| 分辨率 | 元/秒 | 5 秒 | 10 秒 | 15 秒 | 60 秒驱动音频 |
|---|---|---|---|---|---|
| 480P | 0.15 | 0.75 | 1.50 | 2.25 | 9.00 |
| 768P | 0.30 | 1.50 | 3.00 | 4.50 | 18.00 |
| 1080P | 0.45 | 2.25 | 4.50 | 6.75 | 27.00 |
1080P 保留工作流原生对齐尺寸:16:9 输出 1920×1088,其他比例短边同样为 1088 像素。
提交时预扣,任务失败释放相应预扣额度。删除已完成任务的记录不会退款;取消请求返回错误时,原任务继续执行和结算。账户实际价格以控制台适用的分组及折扣为准。
接口
| 方法 | 路径 | 成功响应 |
|---|---|---|
| POST | /v2/video_generation |
{"task_id":"..."} |
| GET | /v2/query/video_generation/{task_id} |
{"task":{...}} |
| GET | /v2/query/video_generation |
{"items":[...],"total":1} |
| DELETE | /v2/video_generation/{task_id} |
{"task_id":"...","action":"deleted","status":"deleted"} |
| POST | /v1/files/upload |
本站通用素材上传接口,返回 URL 后填入内容项 |
所有任务操作都使用当前 API Key 对应的账户和租户权限。任务 ID 不等于访问授权。已有 /v1/video/generations 入口继续提供本站通用视频协议;MiniMax V2 客户端请使用本节的 /v2/ 路径。
创建任务
请求头:Content-Type: application/json。
| 字段 | 类型 | 要求 |
|---|---|---|
model |
string | 必填,MiniMax-H3 |
content |
array | 必填,至少一个非空 text 项;多段文字按顺序拼接,总计不超过 10000 字符 |
resolution |
string | 必填,480P、768P 或 1080P |
duration |
integer | 必填,普通 4–15;有 drive_audio 时 4–60 |
ratio |
string | 纯文本必填;参考请求省略时采用 16:9;关键帧请求可自适应,见下文 |
audio_control |
object | 可选扩展,包含 mode、denoise_strength、add_drive_as_reference |
callback_url |
string | 可选 HTTPS 地址,仅 443 端口;省略则通过查询接口轮询 |
支持的固定比例依次为 1:1、2:3、3:2、3:4、4:3、9:16、16:9、21:9,其中 2:3、3:2 是扩展比例。纯文本请求必须填写比例。参考请求省略时采用 16:9,显式传 adaptive 或 auto 会报错;这与官方参考模式默认 adaptive 不同。关键帧请求可指定固定比例,或省略/使用 adaptive(也接受扩展别名 auto)读取首帧图比例,仅有尾帧时读取尾帧,并选择 最接近的固定画幅;任务结果返回实际采用的比例。本服务会执行关键帧请求指定的固定比例,而官方会忽略它并使用自适应,因此这部分行为有差异。
内容项格式:
{"type":"text","text":"电影感镜头,人物向镜头挥手。"}
{"type":"image_url","image_url":{"url":"https://example.com/person.jpg"},"role":"reference_image"}
{"type":"video_url","video_url":{"url":"https://example.com/motion.mp4"},"role":"reference_video"}
{"type":"audio_url","audio_url":{"url":"https://example.com/voice.wav"},"role":"reference_audio"}
{"type":"audio_url","audio_url":{"url":"https://example.com/dialogue.wav"},"role":"drive_audio"}
参考图片必须明确使用 reference_image。省略图片角色时按官方规则等同 first_frame;省略音频/视频角色时分别等同 reference_audio / reference_video。本服务允许首帧、尾帧与参考图片、参考音频、参考视频及驱动音频混用,按实际内容自动选择混合模式,无需填写 task_type。关键帧最多各 1 张,额外参考图最多 9 张,其他类别也按各自上限独立计数。这是本服务扩展;官方 V2 将关键帧与参考素材定义为互斥场景。
参考视频内容项还支持扩展字段 start_time_seconds(非负秒数,默认 0),放在 role 同级;服务按 24 FPS 换算起始帧。例如 2.5 秒对应跳过 60 帧。图片和音频不提供这个裁剪参数。
文生视频
export API_KEY='YOUR_API_KEY'
export BASE_URL='https://api.seedance.nz'
curl "$BASE_URL/v2/video_generation" \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "MiniMax-H3",
"content": [{"type":"text","text":"航拍薄雾中的山谷,晨光穿过树梢,镜头平稳前进。"}],
"resolution": "480P",
"duration": 5,
"ratio": "16:9"
}'
HTTP 200 表示已接受任务,不表示视频已完成:
{"task_id":"task_example"}
首帧、尾帧与首尾帧
{
"model":"MiniMax-H3",
"content":[
{"type":"text","text":"人物从首帧姿态自然转身,平稳过渡至尾帧构图。"},
{"type":"image_url","image_url":{"url":"https://example.com/start.jpg"},"role":"first_frame"},
{"type":"image_url","image_url":{"url":"https://example.com/end.jpg"},"role":"last_frame"}
],
"resolution":"768P",
"duration":5,
"ratio":"adaptive"
}
省略尾帧项即为首帧生成;省略首帧项即为尾帧生成。首帧和尾帧最多各一张,角色决定用途,不依赖它们在数组中的顺序。自适应会选择最接近输入图的固定比例,而不是保证任意比例的原尺寸输出。
多模态参考
{
"model":"MiniMax-H3",
"content":[
{"type":"text","text":"保持参考图人物的外貌,参考视频中的镜头运动,使用参考音频的声音风格。"},
{"type":"image_url","image_url":{"url":"https://example.com/person.jpg"},"role":"reference_image"},
{"type":"video_url","video_url":{"url":"https://example.com/motion.mp4"},"role":"reference_video"},
{"type":"audio_url","audio_url":{"url":"https://example.com/voice.wav"},"role":"reference_audio"}
],
"resolution":"768P",
"duration":10,
"ratio":"16:9"
}
驱动音频与声音参考
reference_audio 提供声音参考;drive_audio 提供目标音频驱动。音色参考不等于强制按照音频逐字对口型。需要按台词生成时,在文字提示中同时写出明文台词。
{
"model":"MiniMax-H3",
"content":[
{"type":"text","text":"参考图中的人物正对镜头,口型跟随 <Audio 1>,说:<d>[中文] 今天的天气真好。</d>"},
{"type":"image_url","image_url":{"url":"https://example.com/person.jpg"},"role":"reference_image"},
{"type":"audio_url","audio_url":{"url":"https://example.com/dialogue.wav"},"role":"drive_audio"}
],
"resolution":"480P",
"duration":5,
"ratio":"16:9",
"audio_control":{"mode":"lock_source","denoise_strength":0,"add_drive_as_reference":true}
}
audio_control.mode |
语义 |
|---|---|
lock_source |
保留驱动音频;需要 drive_audio |
remix_source |
基于驱动音频重新生成音轨;需要 drive_audio |
reference_only |
驱动音频只作为参考;需要 drive_audio,add_drive_as_reference 省略时为 true,显式 false 会报错 |
native |
生成原生音轨;也可提供驱动音频,但不会锁定原音轨,是否作为参考由 add_drive_as_reference 决定 |
有驱动音频时缺省使用 lock_source,无驱动音频时缺省使用 native。denoise_strength 范围 0–1,用于调节 remix_source 的音轨重生成;lock_source 的有效值固定为 0,其他模式缺省 0.35。add_drive_as_reference 决定是否把驱动音频同时提供为声音参考;有驱动且为非 native 模式时默认 true,native 模式默认 false。显式 0 和 false 会保留。希望驱动台词同时使用另一条参考声音时,可以设置:
{"audio_control":{"mode":"remix_source","denoise_strength":0.35,"add_drive_as_reference":false}}
seed、num_inference_steps、flow_shift、audio_flow_shift 和 quality 等不是当前开放参数。旧参考网关的 seed 仅记录和校验,没有控制 采样器,本服务不将它表述为可复现性控制。
查询结果
curl "$BASE_URL/v2/query/video_generation/$TASK_ID" \
-H "Authorization: Bearer $API_KEY"
{
"task":{
"id":"task_example",
"model":"MiniMax-H3",
"status":"succeeded",
"created_at":1788500000,
"updated_at":1788500080,
"content":{"url":"https://example.com/generated-video.mp4"},
"resolution":"480P",
"duration":5,
"ratio":"16:9",
"task_type":"generation",
"modality":"video",
"usage":{"amount":0.75,"currency":"CNY"}
}
}
状态为 queued、running、succeeded、failed 或 cancelled。时间戳单位为 Unix 秒。成功读取 task.content.url,无需调用旧版 file_id 文件检索接口;进行中的任务不会包含成功视频 URL。失败查看 task.error.code / task.error.message。
duration 表示请求用于计费的输出时长。工作流按 24 FPS、17n+5 帧对齐,输出播放时长可能略长;费用仍按请求秒数计算。
任务完成最终结算后,task.usage.amount 与 task.usage.currency 才会出现。amount 与用户实际扣费完全一致,不是提交时的预扣金额;失败或取消任务完成退款后返回 0。响应不会暴露预扣额、内部结算 token 或上游供应商成本字段。任务尚未完成最终结算时省略整个 usage 字段。
建议每 5–10 秒查询一次;遇到查询 429 或暂时性 5xx 时退避重试查询。创建请求超时不代表任务未创建,本接口未承诺参考站 SPI 的 request_id 幂等行为,不应无条件重发生成请求。
网关按固定顺序使用主、备用两组上游凭据。仅在未获得任务编号且上游明确拒绝受理时切换一次备用凭据:HTTP 401、402、403、429,或响应中非零的明确业务错误码。已返回任务编号后始终查询原任务,任务运行失败不会重新创建;网络超时、5xx 或无效 JSON 无法确认是否受理,也不会自动换凭据重发。两次均被拒绝时返回最后一次错误,只有容量限制归类为 429。
如果网关已经尝试提交,但收到超时(包括 HTTP 408)或 5xx 等不确定结果,错误响应可带 X-Task-Id 和 Retry-After: 5。正文仍为 V2 错误格式,不另加 task_id。保存该响应头的公共任务 ID 并查询,网关会暂时保留任务记录和预扣,公开状态为 queued,后台尝试关联 bridge 已保存的任务。此时 queued 不表示上游一定尚未运行。只有 bridge 能按公共任务 ID 找回记录时才能恢复;不保证在 任务已受理、但 bridge 未保存 任务 ID 的情况下自动找回。未收到公共任务 ID 时,不要推断提交失败或盲目重提。明确拒绝的参数、授权、额度或容量类 4xx(不含上述提交超时)不走此恢复路径,并释放相应预扣。
Python 完整调用示例
安装 requests,设置环境变量 API_KEY;此示例只提交一次,查询失败不会重新创建付费任务。
import os
import time
import requests
base = os.environ.get("BASE_URL", "https://api.seedance.nz").rstrip("/")
headers = {"Authorization": f"Bearer {os.environ['API_KEY']}"}
payload = {
"model": "MiniMax-H3",
"content": [{"type": "text", "text": "晨光中的森林,镜头缓慢前进。"}],
"resolution": "480P", "duration": 5, "ratio": "16:9",
}
created = requests.post(f"{base}/v2/video_generation", headers=headers,
json=payload, timeout=60)
if created.ok:
task_id = created.json()["task_id"]
else:
task_id = created.headers.get("X-Task-Id")
if not task_id:
created.raise_for_status()
print("提交结果待确认,仅查询已有任务:", task_id)
print("task_id:", task_id) # 保存此 ID,之后可恢复查询
deadline = time.monotonic() + 1800
delay = 10
while time.monotonic() < deadline:
time.sleep(delay)
try:
response = requests.get(f"{base}/v2/query/video_generation/{task_id}",
headers=headers, timeout=30)
except requests.RequestException:
delay = min(delay * 2, 60)
continue
if response.status_code == 429 or response.status_code >= 500:
delay = min(delay * 2, 60)
continue
response.raise_for_status()
try:
task = response.json()["task"]
except (ValueError, KeyError) as exc:
raise RuntimeError(f"查询响应无效;保留任务 ID {task_id}") from exc
delay = 10
if task["status"] == "succeeded":
print("video URL:", task["content"]["url"])
print("actual charge:", task["usage"]["amount"], task["usage"]["currency"])
break
if task["status"] in ("failed", "cancelled"):
raise RuntimeError(task.get("error", task))
else:
raise TimeoutError(f"本地等待超时,任务可能仍在执行:{task_id}")
列表与删除
curl "$BASE_URL/v2/query/video_generation?page_num=1&page_size=20&filter.model=MiniMax-H3&filter.status=succeeded" \
-H "Authorization: Bearer $API_KEY"
查询最近 7 天的任务。使用 page_num / page_size 分页,本网关默认第 1 页、每页 10 条;页码范围 1–10000,每页 1–100 条。支持 filter.status、重复的 filter.task_ids(最多 100 个)、filter.model、filter.task_type。本模型的 filter.task_type 为 generation。返回 items 数组和符合条件的 total。
curl -X DELETE "$BASE_URL/v2/video_generation/$TASK_ID" \
-H "Authorization: Bearer $API_KEY"
已成功、失败或已取消的记录可以删除;允许删除已取消记录是本服务扩展。删除只隐藏公开记录,不重复退款。正在运行的任务不能删除。排队任务的取消只有在上游确认可取消时才能成功;该接口无法确认取消时返回错误,原任务仍有效,也不会提前退款。不能把客户端停止轮询当作任务取消。
回调
设置 callback_url 后,网关先发送包含 challenge 的验证请求;回调服务须在 3 秒内以 HTTP 200 返回同值的 JSON challenge(也接受纯文本同值)。验证成功后通知任务终态,正文与查询接口的 {"task":{...}} 格式一致,并附带 X-MiniMax-Task-Id 请求头。终态通知收到任意 2xx 即视为送达,最多尝试 5 次,失败后的等待间隔依次为 1、2、4、8 分钟;可能重复投递,请按任务 ID 和终态幂等消费。查询接口仍是状态和最终结果的依据。
与官方所有状态变化的推送不同,本实现不承诺每个排队/运行中间状态都有回调。禁止把 API Key 放进回调 URL。
素材
媒体 HTTP(S) URL 必须能由服务端直接读取。可以先使用本站已有的 POST /v1/files/upload 获取临时 URL,再填入 image_url.url / audio_url.url / video_url.url。图片和音频也可使用标准 data:<mime>;base64,...,服务校验后转为临时 URL;不接受裸 Base64、本机路径或浏览器 blob: URL。大文件建议先上传。
curl "$BASE_URL/v1/files/upload" \
-H "Authorization: Bearer $API_KEY" \
-F 'file=@/path/to/person.png'
{"url":"https://example.com/temporary-person.png","file_type":"image","size":3490,"expires_in":86400}
上传为 multipart/form-data,字段名 file;通用上传限制单文件不超过 50 MB,临时 URL 约 24 小时有效。上传成功不代表素材已满足生成模型的全部约束。
参考视频每条应为 2–15 秒;按 24 FPS 解码后必须为 48–360 帧,起始偏移后的素材也须满足此范围。这约束输入参考视频,不限制带驱动音频的输出时长。使用兼容的常见格式:图片 JPEG/PNG/WebP、音频 MP3/WAV、视频 MP4。实际解码和媒体约束由上游工作流检查;无法读取或解析的素材会使请求或任务失败。不要把其他 MiniMax 官方模型的最大尺寸/文件大小保证直接套用到此 服务。
错误
HTTP 错误使用 MiniMax V2 风格的外层 envelope,http_code 为字符串:
{
"type":"error",
"error":{"type":"bad_request_error","message":"invalid request parameters","http_code":"400"},
"request_id":"request_example"
}
参数错误应修正后再提交;401 检查本站 API Key,402 检查额度,429 按响应提示退避,5xx 先查询已有任务。任务自身失败出现在 HTTP 200 的 task.error 中,与请求失败的 envelope 不同。
官方协议参考
这些链接用于核对协议;实际可调用范围以本页的能力、参数和扩展说明为准。