Appearance
MiniMax H3
模型 ID 为 minimax-h3,支持文生视频、图片参考生视频和图片加音频参考生视频,时长 1–15 秒。返回结果中的模型名可能显示为 MiniMax-H3,两种写法都可以用于请求。
接口
| 操作 | 方法与路径 |
|---|---|
| 创建任务 | POST /v1/videos |
| 查询任务 | GET /v1/videos/{id} |
| 下载 MP4 | GET /v1/videos/{id}/content |
| 查看文件响应头 | HEAD /v1/videos/{id}/content |
Base URL 为 https://api.furry.vg,请求头:
http
Authorization: Bearer <S3AI_API_KEY>
Content-Type: application/json{id} 使用创建任务时返回的 id。下载接口同样需要 API Key,支持 Range。
输入组合
根据请求里带了哪些素材,服务端自动选择生成方式:
| 输入 | 生成方式 |
|---|---|
只有 prompt | 文生视频 |
prompt + 1–6 张图片 | 图片参考生视频 |
prompt + 1–6 张图片 + 1–3 段音频 | 图片和音频参考生视频 |
只传音频、不传图片会返回 400。参考图用来保持角色、服装、画风一致,不是首尾帧:传两张图不代表视频会从第一张过渡到第二张。
请求参数
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | minimax-h3 或 MiniMax-H3 |
prompt | string | 是 | 1–10,000 字符 |
seconds | integer / 数字字符串 | 否 | 1–15,默认 5。也可写作 duration,两者同时出现时值必须相同 |
resolution | string | 否 | 480p、768p、1088p、1440p,默认 768p |
aspect_ratio | string | 否 | 9:16 或 16:9,默认 9:16 |
size | string | 否 | 宽x高,取值见下方尺寸表,可代替 resolution + aspect_ratio |
seed | integer / 数字字符串 | 否 | 1–999999999999999。不传时使用固定的默认值,不保证每次随机 |
reference_images | string[] | 否 | 最多 6 张图片,URL 或 Data URL |
input_reference | string | 否 | 单张图片,等同于只有一个元素的 reference_images |
reference_audios | string[] | 否 | 最多 3 段音频,URL 或 Data URL,必须同时传图片 |
size 和 resolution / aspect_ratio 同时出现时必须指向同一个尺寸。不认识的字段会直接返回 400,例如 n、fps、negative_prompt、first_frame、last_frame、video_url。
尺寸
| 档位 | 文生视频(横 / 竖) | 带图片或音频(横 / 竖) |
|---|---|---|
480p | 864x480 / 480x864 | 864x480 / 480x864 |
768p | 1344x768 / 768x1344 | 1376x768 / 768x1376 |
1088p | 1920x1088 / 1088x1920 | 1920x1088 / 1088x1920 |
1440p | 2560x1440 / 1440x2560 | 2560x1440 / 1440x2560 |
1080p、1920x1080、1080x1920 会按 1088p 生成和计费,输出高度是 1088 而不是 1080。768p 两列尺寸不同,服务端会根据输入组合自动换算,所以直接用 resolution + aspect_ratio 最省事。
参考素材
图片和音频字段都可以填公网 URL 或 Data URL:
- URL:必须能直接用 HTTP(S) GET 下载,不能依赖 Cookie、登录或额外的 Authorization 头,并且在任务完成前不能失效。
- Data URL:格式为
data:<MIME 类型>;base64,<数据>,例如data:image/png;base64,iVBORw0KGgo...。不接受省略前缀的裸 Base64。
单个素材不超过 20 MB。图片可用 JPEG、PNG、WebP,音频可用 MP3、WAV、FLAC。Base64 编码后体积会增加约三分之一,素材较多或较大时请求体会明显变大,这种情况更适合用 URL。
把本地文件转成 Data URL:
bash
img="data:image/png;base64,$(base64 -w0 character.png)"其他兼容写法:
images等同于reference_images,audios等同于reference_audios。- 也可以逐个填写
ref_image_0到ref_image_5、ref_audio_0到ref_audio_2,序号从 0 开始且不能跳号。 - 以上字段可以放在顶层、
metadata或extra_body里。OpenAI Python SDK 的extra_body会合并到顶层,直接用即可。 - 同一类素材只用一种写法。多种写法同时出现且内容不一致时返回 400。
- 也可以用
multipart/form-data提交,素材以文本字段传 URL 或 Data URL,数组字段填 JSON 字符串。不支持以文件分段上传二进制。
示例
文生视频
bash
curl --fail-with-body https://api.furry.vg/v1/videos \
-H "Authorization: Bearer $S3AI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "minimax-h3",
"prompt": "一只红狐狸穿过阳光下的草地,镜头缓慢跟随,画面中没有文字。",
"seconds": 5,
"resolution": "768p",
"aspect_ratio": "16:9",
"seed": 123456
}'图片参考
json
{
"model": "minimax-h3",
"prompt": "参考图片中的角色在公园里慢慢转身,服装和外观保持一致。",
"seconds": 5,
"resolution": "768p",
"reference_images": [
"https://media.example.com/character-front.png",
"data:image/png;base64,iVBORw0KGgo..."
]
}URL 和 Data URL 可以在同一个数组里混用。只有一张图时也可以写成 "input_reference": "..."。
图片加音频
json
{
"model": "minimax-h3",
"prompt": "参考图中的角色面向镜头说话,表情自然,身体有轻微动作。",
"seconds": 8,
"resolution": "1088p",
"aspect_ratio": "16:9",
"reference_images": ["https://media.example.com/character.png"],
"reference_audios": ["data:audio/wav;base64,UklGRiQAAABXQVZF..."]
}音频是生成参考,不是对口型驱动,生成的视频不会逐字对上音频。
查询与下载
创建成功后立即返回任务:
json
{
"id": "task_example",
"object": "video",
"model": "MiniMax-H3",
"status": "queued",
"progress": 0,
"created_at": 1790969245
}每 3–5 秒查询一次 GET /v1/videos/{id}。status 为 queued 或 in_progress 时继续等,completed 时可以下载,failed 表示生成失败。progress 有时会在同一个值停留较久,这是正常现象。
完成后的响应会带上下载地址:
json
{
"id": "task_example",
"object": "video",
"model": "MiniMax-H3",
"status": "completed",
"progress": 100,
"url": "https://api.furry.vg/v1/videos/task_example/content",
"content_url": "https://api.furry.vg/v1/videos/task_example/content"
}下载时带上 API Key:
bash
curl --fail-with-body "https://api.furry.vg/v1/videos/task_example/content" \
-H "Authorization: Bearer $S3AI_API_KEY" \
--output result.mp4视频不会永久保存,完成后请尽快下载。
Python 示例
python
import os
import time
import requests
base = "https://api.furry.vg"
headers = {"Authorization": "Bearer " + os.environ["S3AI_API_KEY"]}
resp = requests.post(base + "/v1/videos", headers=headers, json={
"model": "minimax-h3",
"prompt": "A fox walking across a sunlit meadow, steady camera.",
"seconds": 5,
"resolution": "480p",
"aspect_ratio": "16:9",
}, timeout=60)
resp.raise_for_status()
task = resp.json()
task_id = task["id"] # 记下来,断线后可以继续查询
deadline = time.monotonic() + 1800
while task["status"] not in ("completed", "failed"):
if time.monotonic() >= deadline:
raise TimeoutError(f"still running, resume polling {task_id}")
time.sleep(5)
resp = requests.get(f"{base}/v1/videos/{task_id}", headers=headers, timeout=30)
resp.raise_for_status()
task = resp.json()
if task["status"] == "failed":
raise RuntimeError(task.get("error", task))
with requests.get(f"{base}/v1/videos/{task_id}/content", headers=headers,
stream=True, timeout=120) as media:
media.raise_for_status()
with open("result.mp4", "wb") as f:
for chunk in media.iter_content(1024 * 1024):
f.write(chunk)生成时间长不代表任务卡住,拿到 id 后继续查询即可,不要重新提交。如果创建请求超时、没拿到 id,先到站点的任务记录里确认任务是否已经创建,避免重复扣费。
计费
按生成秒数和分辨率计费,分组倍率为 1 时的单价:
| 分辨率 | 每秒 | 5 秒 |
|---|---|---|
| 480p | 0.055 | 0.275 |
| 768p | 0.075 | 0.375 |
| 1088p | 0.085 | 0.425 |
| 1440p | 0.095 | 0.475 |
提交时预扣 秒数 × 单价 × 分组倍率。三种输入组合价格相同,参考图和音频的数量不影响价格。价格在提交时锁定,之后调价不影响已提交的任务。
结算时如果拿到了成片的实际时长,按实际时长结算,否则按请求的 seconds 结算。查询响应里的 duration 是生成耗时,与计费无关。任务失败会退回预扣额度,参数错误等提交阶段的失败不扣费。实际价格以站点价格页和用量记录为准。
不支持的功能
首尾帧控制、超过 6 张参考图、超过 3 段音频、参考视频、视频编辑或续写、超过 15 秒、一次生成多条、1:1 画幅、自定义尺寸、负面提示词、自定义帧率。
