MiniMax-H3 video api
base · https://h3.yiling.ink
内部部署 · 视频+音频生成

MiniMax-H3 视频生成 API

一套 OpenAI 风格的异步接口:提交文本/图像/参考素材,生成带原生立体声的视频。部署在自有双 A800 服务器,Bearer Token 鉴权,私有可控。

在线 可用 最高 1366×768 · 24fps 4–15 秒 · 32kHz 立体声 最快 2.3 分钟/条 t2va · fl2va · ref2va

01 概览

H3 是一个全模态视频生成模型,在一次前向里联合生成画面与同步立体声(人声、音效、音乐)。接口为异步:提交任务立即拿到 id,再轮询状态、完成后取件。

Base URL
h3.yiling.ink
协议
HTTPS · REST
请求体
multipart/form-data
鉴权
Bearer Token
并发
串行 1 路 · 异步排队
输出
MP4(H.264 + AAC)
兼容性接口按 OpenAI Sora-2/v1/videos 规范设计(响应里 model 字段显示 MiniMax-H3),但由本地 H3 引擎生成。已有 Sora 客户端稍改即可接入。

02 鉴权

每个请求(提交/查询/下载)都需在请求头带上 Bearer Token,否则返回 401。Token 校验在 nginx 网关层完成,后端服务只监听内网,外部扫描无法直连。

Authorization header
Authorization: Bearer h3-c7203631286407cd4e86136b11b4ab2e8cc601f5879902ce
私钥,请妥善保管以上是你的专属 Token。泄露即可被他人调用消耗 GPU;需要轮换时改一处 nginx 配置即可失效旧 Token。

03 快速开始

文生视频(t2va),8 步快档,约 2–3 分钟出片。三个必填字段:tasktargetprompt

curl · 提交
curl https://h3.yiling.ink/v1/videos \
  -H "Authorization: Bearer h3-c72036…901f5879902ce" \
  -F task=t2va \
  -F 'target={"short_edge":768,"aspect_ratio":"16:9","duration_seconds":5}' \
  -F prompt=一只橘猫在钢琴键上散步,阳光洒进房间,轻柔的钢琴声 \
  -F num_inference_steps=8 \
  -F seed=42

# → {"id":"7932b6bd-…","status":"queued","progress":0, …}
Python · 提交 + 轮询 + 下载
import requests, time

BASE  = "https://h3.yiling.ink"
TOKEN = "h3-c7203631286407cd4e86136b11b4ab2e8cc601f5879902ce"
H     = {"Authorization": f"Bearer {TOKEN}"}

# 1) 提交任务(multipart 表单)
r = requests.post(f"{BASE}/v1/videos", headers=H, data={
    "task": "t2va",
    "target": '{"short_edge":768,"aspect_ratio":"16:9","duration_seconds":5}',
    "prompt": "一只橘猫在钢琴键上散步,阳光洒进房间",
    "num_inference_steps": 8,
    "seed": 42,
})
vid = r.json()["id"]

# 2) 轮询直到完成
while True:
    s = requests.get(f"{BASE}/v1/videos/{vid}", headers=H).json()
    if s["status"] in ("completed", "failed"): break
    time.sleep(5)

# 3) 取件:s["inference_time_s"], s["file_paths"], 或 /content 下载
print(s["status"], s["inference_time_s"])

04 端点

POST/v1/videos提交生成任务,返回 job id(立即返回,不阻塞)
GET/v1/videos/{id}查询任务状态与结果(轮询用)
GET/v1/videos/{id}/content下载生成的 MP4 文件
GET/v1/videos列出历史任务

辅助端点:GET /health 健康检查 · GET /model_info 模型信息 · GET /openapi.json 完整 schema。


05 请求参数

POST /v1/videos 使用 multipart/form-data。下表为常用字段;标红的三项必填。

核心字段

字段类型说明 / 取值
task必填string任务模式:t2va(文生视频)· fl2va(首/尾帧)· ref2va(参考素材)
target必填json string输出规格对象,如 {"short_edge":768,"aspect_ratio":"16:9","duration_seconds":5}
prompt必填string文本描述。支持中英等 11 种语言;含台词时会生成对应人声
num_inference_stepsint去噪步数。质量档 50,均衡 20,快档 8(配合 Turbo)。见 预设
seedint随机种子,固定后可复现同一结果
negative_promptstring负向提示,描述不希望出现的内容
guidance_scalefloatCFG 引导强度。蒸馏/Turbo 权重下用 1.0(过高会中止)
flow_shiftfloat流匹配偏移。官方 benchmark 视频 12 / 音频 3
num_outputs_per_promptint同一 prompt 生成多少条(默认 1)

target 输出规格对象

子字段类型取值
short_edgeint固定 768(模型 shape policy 锁死,传其他值后端直接 400)。size/resolution 仅用于推导比例
aspect_ratiostring显式取值为白名单:21:9 · 16:9 · 4:3 · 1:1 · 3:4 · 9:16,或 auto(fl2va=跟随首帧图,连续范围 1:4–4:1;ref2va/t2va=16:9)。网关交付时自动规整为精确比例:16:9 → 1366×768,9:16 → 768×1366,居中裁切不拉伸
duration_secondsnumber时长,415

条件输入:conditions(官方推荐,fl2va / ref2va 用)

conditions 是一个 JSON 数组,每个元素声明一件参考素材(与官方 MiniMax-H3 请求格式一致):

"conditions": [
  {"role": "keyframe",  "type": "image", "uri": "data:image/jpeg;base64,…", "frame_index": 0},   // fl2va 首帧
  {"role": "reference", "type": "image", "uri": "https://…/face.png"},                            // ref2va 参考图
  {"role": "reference", "type": "video", "uri": "data:video/mp4;base64,…"}                        // ref2va 参考视频
]
字段取值说明
typeimage · video · audio媒体格式,仅此三种(实测其他值被拒)
rolekeyframe · reference条件角色:fl2va 用 keyframe(配 frame_index:0=首帧,-1=尾帧);ref2va 一律 reference
uristring支持 https:// URL 与 data: Base64 两种
素材的"用途"写在 prompt 里,不在 conditions 里 conditions 只声明媒体格式与角色,不表达用途(如"这张图定长相、这段视频取动作")。用途语义由 prompt 的结构化段落声明——素材按类别独立编号(第 1 张图 = <Picture 1>,第 1 个视频 = <Video 1>,第 1 段音频 = <Audio 1>,顺序即 conditions 数组内同类素材的顺序),在 subject_definitions 段落里声明用途。动作迁移(换人做动作)官方写法:
subject_definitions:
<Subject 1> is the person whose appearance comes from <Picture 1>
and whose dance motion comes from <Video 1>.

summary:
[reference generation] The target video shows <Subject 1> performing
the motion of <Video 1> …

retention_analysis:
<Subject 1>: fully_preserved - identity and appearance follow <Picture 1>.
<Video 1> (motion structure): attribute_transfer - the motion is
transferred to <Subject 1>; the original performer is not preserved.

detailed_description:
[Shot 1] …(按官方 Prompt 指南逐镜头描述)
关键 marker:attribute_transfer(特征迁移到另一主体)/ fully_preserved / partially_preserved / weak_reference。完整规则见模型自带 docs/VIDEO_PROMPT_WRITING_GUIDE_ref_en.md
网关兼容:用途化 role 自动翻译(2026-08-20 起) 业务端可直接用 wan / happyhorse 风格的用途标注,网关自动翻译成上面的官方格式——role 归一为合法值,并把用途注入 prompt 的结构化段落(prompt 已含 subject_definitions 时不注入):
"conditions": [
  {"role": "identity", "type": "image", "uri": "…"},   // 人物身份(别名 subject/face/appearance/character)
  {"role": "motion",   "type": "video", "uri": "…"},   // 动作驱动(别名 action/drive/driving/pose)
  {"role": "voice",    "type": "audio", "uri": "…"}    // 音色参考(别名 timbre,可选)
]
type 也兼容 reference_image / reference_video / reference_audio 写法(自动转 image/video/audio)。注意:这些用途值直接传给后端会被拒,必须经网关。

条件输入:兼容字段(sglang 通用通道,已实测可用)

字段类型说明
input_referencefile上传参考/首帧图片(二进制)
reference_urlstring参考/首帧图片的 URL
video_referencefile上传参考视频片段(ref2va)
video_url / video_pathstring参考视频的 URL 或服务器路径

增强与输出(可选)

字段类型说明
enable_teacachebool开启时间步缓存加速(近无损,约 1.4×)
enable_frame_interpolationbool补帧,配 frame_interpolation_exp / _scale
enable_upscalingbool超分,配 upscaling_scale
output_qualitystring输出画质档位
generator_devicestring默认 cuda

完整字段(含 fpsnum_framessizetrue_cfg_scalemax_sequence_lengthextra_body 等)以 GET /openapi.json 为准。


06 三种任务模式

task 字段选择。当前服务加载的是 Ref2VA 检查点(+ 官方 ref2v_turbo_4step_v0.1 LoRA,按 8 步推理),支持 ref2va;t2va / fl2va 为 FL2VA 检查点能力,需切换服务(显存无法双开)。带参考图请求请显式传 task=ref2va,否则网关默认推导为 fl2va 会被当前后端拒绝。

task含义输入典型用途
t2va文本 → 音视频仅 prompt纯创意生成、有声短片
fl2va首/尾帧 → 音视频prompt + 1~2 张图
首帧 / 尾帧 / 首尾帧
图片动起来、指定开场结尾
ref2va参考素材 → 音视频prompt + ≤9 图 / ≤3 视频 / ≤3 音频角色一致性、风格/音色参考
fl2va · 首帧图生视频
curl https://h3.yiling.ink/v1/videos \
  -H "Authorization: Bearer $TOKEN" \
  -F task=fl2va \
  -F 'target={"short_edge":768,"aspect_ratio":"16:9","duration_seconds":5}' \
  -F prompt=镜头缓缓推近,人物微笑转头 \
  -F input_reference=@first_frame.png \
  -F num_inference_steps=8

07 响应结构

提交与查询都返回同一个 VideoResponse 对象。关键字段:

字段类型说明
idstring任务唯一 id,轮询/下载都用它
statusstringqueued in progress completed failed
progressint进度百分比 0–100
file_pathsarray生成的 MP4 服务器路径(可多条)
urlstring下载 URL(如提供)
inference_time_sfloat实际生成耗时(秒)
peak_memory_mbfloat显存峰值(MB)
size / secondsstring交付分辨率(已规整到精确比例)与时长
size_rawstring模型原始输出分辨率(规整前,如 1344x768)
errorobject失败时的错误详情
completed 示例
{
  "id": "7932b6bd-c572-4b0a-b04b-429578587f94",
  "status": "completed",   "progress": 100,
  "size": "1366x768",      "seconds": "5.166667",
  "inference_time_s": 139.58,
  "peak_memory_mb": 36506.0,
  "file_paths": ["outputs/7932b6bd-….mp4"]
}

08 异步流程

视频生成耗时以分钟计,接口设计为异步三段式。提交后客户端无需保持长连接,拿 id 走人,之后轮询即可。

步骤调用结果
1 · 提交POST /v1/videos立即返回 id + queued
2 · 轮询GET /v1/videos/{id}每 5 秒查一次 status / progress
3 · 取件GET /v1/videos/{id}/content完成后下载 MP4
排队行为可以一次性提交多条,它们进入服务内部队列逐条串行执行(当前同时只跑 1 路)。超出处理能力不会报错,而是排队。服务重启会清空未完成队列——需要生产级持久化时,建议在前面加一层任务网关(可另行部署)。

09 预设与样片

同一 prompt、同一 1344×768 / 5 秒规格,在双 A800 上的实测三档。步数越少越快,画质略降。点卡片播放样片

质量档

质量档 · 50 步

num_inference_steps50
耗时958 s · 16 min
显存峰值73 GB
相对
均衡档

均衡档 · 20 步

num_inference_steps20
耗时286 s · 4.8 min
显存峰值35 GB
相对3.3×
Turbo推荐

快档 · 8 步 Turbo

num_inference_steps8
耗时139.6 s · 2.3 min
显存峰值36 GB
相对6.9×
选型建议日常默认走快档(8 步 Turbo)——CFG 蒸馏权重下 6–8 步已是清晰度舒适区,质量几乎无损而快近 7 倍。需要极致画质时再传 num_inference_steps=50。样片链接:h3.yiling.ink/samples/

10 能力与限制

项目规格
输出时长4–15 秒
宽高比21:9 / 16:9 / 4:3 / 1:1 / 3:4 / 显式白名单 21:9 / 16:9 / 4:3 / 1:1 / 3:4 / 9:16 + auto;auto 跟随参考图为连续范围(1:4–4:1)。参考图居中裁切、不拉伸
分辨率短边 768。模型原生 32px 对齐(16:9 原生 1344×768),网关交付统一规整为精确比例(1366×768 / 768×1366);2K 需 H3-Regenerate-2K
帧率24 FPS
音频32 kHz 立体声,与画面联合生成
台词语言稳定支持 11 种:中/英/日/韩/法/德/意/西/葡/俄/阿
并发同时 1 路(串行),异步队列;吞吐 ≈ 20 条/小时(快档)
硬件2× NVIDIA A800 80GB,denoiser 张量并行,驱动 580 / CUDA 13
关于并发当前一个实例占用两张卡(张量并行)。若需要多路并发,方向是让模型单卡常驻后双卡各起一个独立实例 + 网关分发——可另行规划。

11 任务队列(持久化网关)

所有请求经一层持久化网关(FastAPI + SQLite,systemd 守护)进入 H3 引擎。任务落库,服务/服务器重启也不丢,中断的自动续跑。

持久化
SQLite,重启不丢
并发
串行 1 路 · 自动排队
守护
systemd 崩溃自拉 + 开机自启
恢复
中断任务自动重排

轮询 GET /v1/videos/{id} 会多返回:queue_ahead(排队时前面还有几个)、created_at、完成后 url(下载地址)。GET /health 返回实时队列深度 {status, queued, running, backend}

务必异步提交后立刻拿 id 返回,之后轮询——不要用一个连接死等一条视频。生成再久、排队再长都不占连接、不超时。

12 接入 New API

本接口兼容 New API(newapi.pro)的 OpenAI 视频(Sora)格式,可直接加为一个渠道。

配置项
渠道类型OpenAI Video(Sora 格式)
Base URLhttps://h3.yiling.ink
密钥 Key上文的 Bearer Token
模型MiniMax-H3

零改兼容:task / target 自动补全

H3 特有的 tasktarget 在网关侧可选,不传会自动推导,所以标准 Sora 请求直接能用:

缺省字段自动推导规则
task默认 t2va;带图片 input_reference 时自动 fl2va
targetsize(如 1280x720 → short_edge 720 / 16:9)+ seconds 推出
num_inference_steps默认 8(快档)

纯 Sora 客户端要覆盖 H3 参数,放 metadata(JSON 字符串):metadata={"task":"fl2va","num_inference_steps":8,"guidance_scale":1.0}

最小 Sora 格式请求(New API 转发的样子)
curl https://h3.yiling.ink/v1/videos \
  -H "Authorization: Bearer $TOKEN" \
  -F prompt=a red sports car on a coastal road at sunset \
  -F model=MiniMax-H3 -F size=1280x720 -F seconds=5
# 无需 task/target,网关自动补全 → 正常生成