接口一览
全部对外端点。Stage 与节点信息属于内部实现,对外 API 永不暴露。
01鉴权与约定
Base URL: https://api.456.com.cn
Authorization: Bearer <API_KEY>
Content-Type: application/json- 金额一律以微元(1 元 = 1e6)给整数,另给展示串;展示串不要参与运算。
- 时间为 ISO 8601 UTC。
- 写操作支持
Idempotency-Key头,同键返回同一任务、不重复计费。 - 速率限制超出时返回
429并带Retry-After。
02端点
| 方法 | 路径 | 说明 | 备注 |
|---|---|---|---|
| POST | /v1/videos | 创建视频任务 | 返回 202,绝不等生成 |
| GET | /v1/videos | 列出任务(游标分页) | — |
| GET | /v1/videos/{id} | 查询任务 | — |
| GET | /v1/videos/{id}/content | 下载成片 | succeeded 后可用 |
| POST | /v1/videos/{id}/cancel | 取消任务 | 仅结算已完成部分 |
| GET | /v1/videos/{id}/upscale | 查询作品 2K 超分报价 | — |
| POST | /v1/videos/{id}/upscale | 创建作品 2K 超分任务 | 提交当前报价 amount_micro |
| GET | /v1/pricing | 获取当前价格配置 | 需 Bearer 鉴权;金额单位为微元 |
| DELETE | /v1/videos/{id} | 删除任务记录 | — |
| POST | /v1/files | 上传素材 | 类型白名单 + 大小上限,默认保留 30 天后删除 |
| POST | /v1/prompt/optimize | 提示词优化 | 按次计费;provider 为 qwen 时返回导演式分镜与可直接提交的英文 |
| GET | /v1/credits | 余额与近期流水 | — |
| GET | /v1/api-keys | 列出 API Key | 只返回掩码 |
| POST | /v1/api-keys | 创建 API Key | 明文只在此返回一次 |
| DELETE | /v1/api-keys/{id} | 吊销 API Key | — |
创建任务的请求体
| 字段 | 类型 | 默认 | 说明 |
|---|---|---|---|
| prompt | string 1–7000 | 必填 | 提示词。reference_to_video 里可以用 @图片1 / @视频1 / @音频1 指名某一句针对哪件素材,平台会把它翻成模型认的 <Picture 1> / <Video 1> / <Audio j>。引用了没传的素材会被 400 拒(不静默忽略) |
| model_prompt | string 1–7000 | — | 发给模型的提示词,通常是 提示词优化 返回的 prompt。给了它,prompt 只用于任务列表与详情展示;素材引用校验与内容审核对两份都做。带它时不再叠加官方 Context IR,也不收取 Context IR 费用 |
| mode | text_to_video · image_to_video · reference_to_video | text_to_video | 后两者需先传素材 |
| input_image | file_ id | — | 起始帧。image_to_video 时与 end_image 至少给一个。会被拉伸到画幅(不保比例) |
| end_image | file_ id | — | 结束帧,成片收敛到这一帧。按比例居中裁切。只对 image_to_video 有效 |
| references | file_ id[] | — | reference_to_video 时必填。顺序有意义:提示词里的 @图片1 就是按同类素材在这个数组里的先后编号的。每类上限来自模型:9 张图 / 3 段视频 / 3 段音频,视频与音频各自累计 ≤15 秒。是图是视频是音频由平台按 content_type 判,请求里不用声明 |
| reference | file_ id | — | 已废弃,等价于 references: [它]。与 references 同时给会被拒 |
| reference_video_mode | compact · original | 平台默认 | 参考视频使用压缩版或原视频。仅在平台允许自行选择时生效,否则按平台设置处理,传入的值不生效。详见下方「参考视频的处理」 |
| reference_video_keep_audio | boolean | false | 压缩版是否保留原声。同上,仅在平台允许自行选择时生效 |
| reference_video_options | object[] | — | 逐条覆盖上面两项,与 references 按下标对应,每项为 { mode?, keep_audio? },不覆盖或非视频的位置填 null。同上,仅在平台允许自行选择时生效 |
| duration | number 5–15 | 5 | 成片秒数,计费依据。帧数落在模型的 17k+5 栅格上(24fps),实际成片会略长于请求值(6s → 158 帧 ≈ 6.58s),多出的部分不计费。两端贴着模型训练区间:5s = 124 帧、15s = 362 帧 |
| resolution | 768p · 2k · 4k | 768p | 2K、4K 通过超分输出 |
| aspect_ratio | auto · 16:9 · 9:16 · 1:1 · 4:3 · 3:4 · 21:9 | 16:9 | 画布依次为 1344×768 · 768×1344 · 768×768 · 1024×768 · 768×1024 · 1536×672。auto = 按第一件素材的比例挑最接近的一个(建任务时就解析成具体值,任务记录里存的是解析后的结果) |
| acceleration | auto · off | auto | 已由 service_tier 接管,只在 draft 档有意义 |
| service_tier | draft · standard · pro · dedicated | standard | draft 加速档,与标准档同价(画质有折损);pro/dedicated 开对冲 |
| use_context_ir | boolean | false | 是否启用官方 Context IR,实际应用成功才收费;与必需的 H3 编码器不同。用法见 Context IR |
| audio | boolean | true | |
| seed | integer | — | 固定随机种子;结果也受模型与运行参数影响。n>1 时第 i 条自动用 seed + i(否则几条片子一模一样),实际用的种子在任务返回的 seed 里 |
| n | 1 · 2 · 4 | 1 | 这一次出几条片。语义是「建 N 个独立任务」:各自排队、各自计费、各自可取消。n=1 返回单个任务对象(契约不变);n>1 返回一个 object: "list" 的信封,且可能比请求的少(撞上并发上限时只返回真正建成的那几条) |
| webhook_url | uri | — | 终态回调,见 Webhook |
| metadata | object | — | 原样回显 |
H3 不支持反向提示词,请勿依赖旧字段 negative_prompt。控制台高级参数的可见性和默认值由管理后台配置;Context IR 在提示词下方单独选择,账户可保存其默认状态。
任务返回
下例为 5 秒 768P 标准档、未开启 Context IR 的成功任务,按当前价格合计 ¥0.45;完整价目可通过 GET /v1/pricing 查询。
{
"id": "vid_...",
"object": "video.task",
"status": "succeeded",
"progress": 1,
"mode": "text_to_video",
"resolution": "768p",
"duration": 5,
"created_at": "...", "started_at": "...", "completed_at": "...",
"accelerated": true,
"output": {
"video_uri": "...", "width": 1344, "height": 768,
"duration": 5, "has_audio": true, "watermarked": true,
"expires_at": "..."
},
"usage": { "billed_seconds": 5, "amount_micro": 450000, "amount": "0.45", "currency": "CNY" }
}| 字段 | 说明 |
|---|---|
| accelerated | 这次实际有没有走加速通道。请求里的acceleration: auto 只是意愿,没有合格算力时会降级 —— 两者耗时与画面都不同,要看这个字段才知道拿到的是哪一种 |
| output.watermarked | 这份成片实际带不带可见水印,不是恒为 true 的常量 |
| output.expires_at | 下载地址的过期时间,每次查询现签,请勿缓存该 URL |
| fail_reason / fail_detail | 前者是可编程判断的分类,后者是给人看的具体说明 |
since、seconds、reason。reason 为 capacity(算力)、lora(加速能力)或 encoder(编码器)。 它不是一个任务状态,需与 status 一起展示;终态失败原因见 fail_reason 和 fail_detail。官方 Context IR
官方 Context IR 是 MiniMax 提供的托管预处理服务,会在编码前改写并补充提示词,使其更贴合模型的理解方式。 它与生成必需的 H3 编码器是两个不同功能,默认关闭。
启用方式
创建任务时在请求体中传入 "use_context_ir": true:
curl -X POST $H3_BASE/v1/videos \
-H "Authorization: Bearer $H3_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "一只猫在雨中的霓虹街头行走,倒影,电影感",
"duration": 5,
"resolution": "768p",
"aspect_ratio": "16:9",
"use_context_ir": true
}'- 不传该字段或传
false均不启用。控制台账户中的 Context IR 默认设置仅作用于控制台下单,不影响 API 调用。 - 处理内容为提示词、成片时长与画幅;当前不向该服务发送上传的素材。
n>1时每个任务各自处理、各自计费。
计费
- 单价 ¥0.05 / 次,以
GET /v1/pricing返回的official_context_ir_micro为准。 - 创建任务时按启用状态一并冻结该项额度;服务不可用或处理未成功时,任务使用原提示词继续生成,该项不收费,冻结额度在结算时释放。
- 任务
failed时不计费;任务cancelled或rejected时,若 Context IR 已处理完成,该项按已完成部分结算。
确认是否生效
任务成功后,usage.items 中出现 kind 为 official_context_ir 的条目,即表示本次已应用 Context IR; 无此条目表示未应用,且未收取该项费用。
"usage": {
"items": [
{ "kind": "output", "label": "768P 输出", "qty": 5, ... },
{ "kind": "official_context_ir", "label": "Context IR", "qty": 1, "amount_micro": 50000, ... }
],
...
}已有作品超分到 2K
仅支持自己已完成且原视频仍可读取的 768P 作品。先调用 GET /v1/videos/{id}/upscale 获取报价;返回中的 amount_micro 必须原样提交。报价按原视频实际时长计算。
# 1) 获取报价,读取响应 amount_micro
curl $H3_BASE/v1/videos/vid_xxx/upscale -H "Authorization: Bearer $H3_API_KEY"
# 2) 将 AMOUNT_MICRO 替换为上一步返回的整数
curl -X POST $H3_BASE/v1/videos/vid_xxx/upscale \
-H "Authorization: Bearer $H3_API_KEY" \
-H "Content-Type: application/json" \
-d '{"amount_micro": AMOUNT_MICRO}'创建成功返回 202 和新任务。若返回 existing,表示已有进行中或完成的超分任务,直接使用该任务。价格变化会返回 409,需重新获取报价。
超分保留原作品,只收超分阶段费用,不重复收基础生成、编码器和素材费。2K、4K 作品不支持再次调用此入口。
03素材
POST /v1/files 以 multipart 上传,purpose 取input_image(起始帧)、end_image(结束帧) 或 reference(参考素材)。返回含 expires_at;过期后字节会被真正删除,此后再以该文件创建任务将被拒绝。
reference 收三类:图(png/jpeg/webp)、视频(mp4/mov)、音频(mp3/wav/m4a/flac)。 上传时平台会从容器头里读出时长(视频、音频)与像素尺寸(图、视频)—— 前者是计费与 15 秒累计闸的依据, 后者给 aspect_ratio: "auto" 用。音频读不出时长会被 400 拒:15 秒时长限制以该元数据为唯一依据, 接受无法解析时长的文件将使该限制失效。
⚠️ 参考视频会被模型截断到成片帧数:出 5 秒片时, 一段 15 秒的参考视频只有前 5.17 秒进得去(帧数还要向下对齐到 17k+5 栅格)。 这不是平台的选择,是模型本身的行为(ComfyUI 节点里的硬截断,没有开关)。但计费按你上传的时长算 —— 字节我们全都收下、存下、要传给编码器, 成本在上传那一刻就发生了。想让整段素材都生效,把 duration调到不小于素材时长。
参考视频的处理:创建任务时,平台按平台设置为每条参考视频确定使用压缩版或原视频; 平台不允许自行选择时,reference_video_mode、reference_video_keep_audio、reference_video_options 均不生效。压缩版保留整段内容,按平台设置降低分辨率、统一为 24 帧,默认不保留原声, 由算力节点在送入模型前处理,不影响创建任务的响应速度;任务中引用的仍是你上传的文件,计费按原视频时长。 此外,无论使用哪一份,参考视频进入模型前短边超过平台上限的部分都会按比例缩小。
03b提示词优化
POST /v1/prompt/optimize 把一句话改写成适合 H3 的提示词。provider 为 qwen 时, 由平台的千问按电影与漫剧手法拆分镜,返回官方格式的英文和一份中文分镜表;不填时使用官方 Context IR 改写 (与创建任务的 use_context_ir 是两笔独立的费用)。千问优化需管理员开启,未开启返回 403, 服务暂时不可用返回 503。按次计费,单价见 GET /v1/pricing 的 prompt_opt_micro,不要在客户端写死价格。
| 字段 | 类型 | 默认 | 说明 |
|---|---|---|---|
| prompt | string 1–7000 | 必填 | 原话 |
| provider | context_ir · qwen | context_ir | 以下各字段只对 qwen 生效 |
| aspect_ratio | 16:9 · 9:16 · 1:1 · 4:3 · 3:4 · 21:9 | 16:9 | 与将要创建的任务一致,竖屏时镜头以近景为主 |
| duration | number 5–15 | 5 | 按时长安排镜头数与时间码 |
| mode | text_to_video · image_to_video · reference_to_video | 按素材推断 | 决定输出格式,与创建任务的 mode 一致 |
| frames | first · last · first_last | first | 图生视频用了哪几张关键帧 |
| reference_kinds | (image · video · audio)[] | — | 参考素材的种类,按提交顺序,与 @图片1 的编号规则相同 |
| reference_files | file_ id[] | — | 与 reference_kinds 逐项对应。平台识别其中图片的外貌并写进分镜(只读取本账户的素材,视频与音频暂不识别);两份长度不一致时不识别 |
| frame_files | { first?, last? } | — | 图生视频关键帧的 file_ id,用途同上 |
| allow_dialogue | boolean | false | 原话没有台词时,是否允许补一两句;原话里的台词始终逐字保留 |
| style | string ≤40 | 按内容判断 | 画面风格。预设:真人电影 · 国漫 / 漫剧 · 日式动画 · 3D 动画 · 水墨 · 水彩绘本 · 黏土动画 · 复古胶片,选用预设时风格写法固定;其他文字作为参考。图生视频按关键帧的画风,不使用此字段 |
返回的 prompt 是发给模型的提示词,original 是原话;qwen 另返回 storyboard(中文分镜表:概述、风格、各镜头的时间、景别、运镜、内容、台词与声音,以及识别出的素材 materials)。 创建任务时把原话放在 prompt、把返回的 prompt 放在 model_prompt。 本账户在控制台「角色库」保存的角色,其图片出现在 reference_files 中时,外貌与台词音色按角色卡统一写法,多集保持一致。
三条与钱有关的行为:余额不足返回 402 且不扣费; 优化服务出错返回 502 且不扣费;只有成功返回时才扣一笔,在流水里记作 prompt_optimize。 这一笔不挂在任何任务上 —— 你可以优化完不发任务。
04余额
GET /v1/credits 返回余额与近期流水。权威余额是流水求和;返回中的余额快照仅供对账参考,并发写入下可能不是最新值。
05API Key
列表只返回掩码。创建时明文只出现一次,平台仅存哈希 —— 丢了只能吊销重建。
06任务状态机
| 状态 | 含义 | 计费 |
|---|---|---|
| queued | 已受理,等待派发 | 冻结额度 |
| rendering | 扩散生成中 | 冻结额度 |
| encoding | 提示词与素材编码中 | 冻结额度 |
| upscaling | 视频超分中 | 冻结额度 |
| packaging | 转码与封装中 | 冻结额度 |
| succeeded | 完成,可下载 | 计费,见 usage |
| failed | 失败 | 不计费 |
| cancelled | 已取消 | 仅结算已完成部分 |
| rejected | 已拒绝 | 仅结算已完成部分 |
07错误结构
{
"error": {
"type": "invalid_request_error",
"code": "task_not_cancellable",
"message": "…",
"param": "duration",
"request_id": "req_..."
}
}反馈问题时请附上 request_id。各状态码的含义见错误码。