先说结论:在中国大陆以外调用 Seedance、可灵(Kling)、MiniMax 海螺 H3 和万相 3.0,不必去每个国内平台分别开户。HopBase 把它们放在同一个 API Key、同一个 Base URL(https://api.hop-base.com)后面,按美元计费。Seedance、可灵和海螺走同一套异步流程:POST /v1/video/generate 提交,再用 GET /v1/video/tasks/{task_id} 轮询,直到状态变成 completed 或 failed。万相 3.0 和快乐马(HappyHorse)保留原有请求格式和原有路径,现成的 SDK 代码只需换 Base URL 和 Key。各家请求体仍沿用自己的格式,共用的只是「提交 + 轮询」这一层。失败任务不计费,结果链接有效期 24 小时,每个完成任务的实际美元扣费在 usage.cost_usd 里返回。Seedance 有两套 ID:海外版(dreamina-seedance-*)和国内版(doubao-seedance-*-a)。
为什么从海外接国产视频模型这么麻烦
2026 年最强的一批视频模型里,中国厂商占了很大比重:字节的 Seedance、快手的可灵、MiniMax 的海螺、阿里的万相。如果你在美国、欧洲或东南亚做视频产品,想把它们都接进来,不是注册一次就完事,而是四个独立的项目:
- 区域平台各自独立。字节面向中国大陆用火山引擎,面向海外用 BytePlus,两边的模型目录、ID 和上线节奏都不一样。可灵、MiniMax、阿里也各有自己的开发者控制台。
- 实名认证与付款。国内区控制台通常要求实名认证和人民币付款方式。国际版门槛低一些,但每家仍是单独的合同、单独的余额、单独的发票。
- 四套请求格式。Seedance 用
content[]数组;可灵用prompt+images[]+videos[];海螺 H3 用 MiniMax 的 v2 请求体(同样是content[]数组,但规则不同);万相用 DashScope 的input/parameters结构。轮询方式、错误格式、结果链接的有效期也各不相同。 - 四种计费单位。Seedance 按百万视频 token 计费;可灵、海螺、万相按输出秒数、分分辨率档位计费。想比较单条视频成本,得自己把它们统一换算。
网关不会改变模型本身。它省掉的是开户、付款和轮询这些活,让你的代码只面对一个 Key、一个余额、一套任务循环。
能调哪些模型,牌价多少
下表列出目前可用的模型家族。价格页上标了美元牌价的,表里直接给出;其余请以实时价格为准。你自己的实际价格在登录后的模型目录里,每个任务也会返回实际扣费。
| 家族 | 模型 ID 示例 | 输出 | 计费单位 | 入门牌价 |
|---|---|---|---|---|
| Seedance 2.5 / 2.0(字节) | dreamina-seedance-2-5-260628、dreamina-seedance-2-0-260128、dreamina-seedance-2-0-fast-260128、dreamina-seedance-2-0-mini-260615 | 480p-1080p(海外版 2.5 的 1080p 视分组而定);4K 仅海外版 2.0 标准版;2.0 为 4-15 秒,2.5 为 4-30 秒 | 每百万视频 token | 2.0 Mini:$3.50 / 百万 token(无视频输入) |
| 可灵(快手) | kling-v3、kling-v3-omni、kling-v3-turbo、kling-v2-5-turbo | 720p-4K(视模型而定);v3 为 3-15 秒 | 按秒 | 以实时价格为准 |
| 海螺 H3(MiniMax) | MiniMax-H3、MiniMax-H3-Max | H3:768P / 2K,4-15 秒;H3-Max:480P / 768P,5-15 秒 | 按秒 | MiniMax-H3-Max 480P:$0.05 / 秒 |
| 万相 3.0 / 快乐马 1.1(阿里) | wan3.0-video、happyhorse-1.1-t2v、-i2v、-r2v | 480P-1080P | 按秒 | 以实时价格为准 |
按牌价算两个例子:MiniMax-H3 生成一条 6 秒 768P 视频是 6 × $0.08 = $0.48;MiniMax-H3-Max 生成一条 5 秒 480P 视频是 5 × $0.05 = $0.25。Seedance 的费用取决于分辨率、时长以及是否传参考视频,大规模预算前请先看 Seedance 文档和实时价格。
第一步:一个 Key,挂多个视频分组
在 api.hop-base.com 注册,打开 API 密钥 新建一个 Key。每个模型家族在各自的分组里,一个 Key 最多可以挂 10 个分组,所以把 Seedance、可灵、海螺和万相都加到同一个 Key 上即可。然后确认这个 Key 能调到哪些模型:
export HOPBASE_API_KEY=sk-your-key
curl https://api.hop-base.com/v1/models \
-H "Authorization: Bearer $HOPBASE_API_KEY"
只用这个接口返回的 ID。模型 ID 是精确匹配的:未知名称会被直接拒绝,不会被路由到名字相近的模型。
第二步:提交任务(三种格式,一个端点)
Seedance 2.5(海外版)
curl https://api.hop-base.com/v1/video/generate \
-H "Authorization: Bearer $HOPBASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "dreamina-seedance-2-5-260628",
"content": [{"type": "text", "text": "A barista pours latte art in a sunlit cafe, slow push-in"}],
"duration": 5,
"resolution": "720p",
"ratio": "16:9",
"generate_audio": false
}'
可灵 v3
curl https://api.hop-base.com/v1/video/generate \
-H "Authorization: Bearer $HOPBASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kling-v3",
"prompt": "A red sneaker rotates on a white turntable, studio lighting",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "9:16"
}'
海螺 H3
curl https://api.hop-base.com/v1/video/generate \
-H "Authorization: Bearer $HOPBASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "MiniMax-H3",
"content": [{"type": "text", "text": "Aerial drone shot over snow mountains above a sea of clouds"}],
"resolution": "768P",
"duration": 6,
"ratio": "16:9"
}'
每家用自己的字段名。可灵和海螺遇到 size、n 这类 OpenAI 风格字段会直接返回 400,任务不会创建,也不计费。要特别留意 Seedance:size、seconds、n、aspect_ratio 会被静默忽略、不报错,任务按默认时长和 720p 跑,所以一定要传 duration、resolution 和 ratio。万相 3.0 和快乐马走 POST /api/v1/services/aigc/video-generation/video-synthesis,用 input 和 parameters,轮询地址是 GET /api/v1/tasks/{task_id},详见万相与快乐马文档。
第三步:一套轮询代码通吃
Seedance 的响应把任务包在 task 对象里,可灵和海螺则是顶层字段。进行中的状态值也不一样(Seedance 是 pending / processing,可灵和海螺是 queued / processing),但两个终态在各家都相同:completed 和 failed。一个小函数就能把差异抹平:
import os, time, requests
BASE = "https://api.hop-base.com"
HEADERS = {"Authorization": f"Bearer {os.environ['HOPBASE_API_KEY']}"}
def submit(body: dict) -> str:
r = requests.post(f"{BASE}/v1/video/generate", json=body, headers=HEADERS, timeout=60)
r.raise_for_status() # Seedance 返回 200,可灵和海螺返回 202
data = r.json()
return data.get("task", data)["id"]
def wait(task_id: str, every: int = 5) -> dict:
while True:
r = requests.get(f"{BASE}/v1/video/tasks/{task_id}", headers=HEADERS, timeout=30)
r.raise_for_status()
data = r.json()
task = data.get("task", data)
if task.get("status") in ("completed", "failed"):
return data
time.sleep(every)
task_id = submit({
"model": "kling-v3",
"prompt": "A red sneaker rotates on a white turntable, studio lighting",
"duration": 5, "resolution": "720p", "aspect_ratio": "9:16",
})
result = wait(task_id)
task = result.get("task", result)
print(task["status"], task.get("outputs"))
print("charged (USD):", result.get("usage", {}).get("cost_usd"))
2026-10-29 我们用这段代码原样跑了 kling-v2-5-turbo、MiniMax-H3-Max 和 dreamina-seedance-2-0-mini-260615,没有为任何一家改代码:三个任务都顺利完成,并从 usage.cost_usd 打印出扣费——这个字段在各家响应里都位于顶层。轮询不收费,也不占并发额度。结果要及时下载:每个结果链接都是 api.hop-base.com 下的签名 URL,任务完成后 24 小时内有效,过期返回 410。
Seedance 海外版与国内版 ID
Seedance 是唯一有两套 ID 的家族:
- 海外版:
dreamina-seedance-2-5-260628、dreamina-seedance-2-0-260128、-fast-260128、-mini-260615。2.0 标准版是 Seedance 里唯一能出 4K 的。 - 国内版:
doubao-seedance-2-5-260628-a、doubao-seedance-2-0-260128-a、-fast-260128-a、-mini-260615-a。没有 4K 档,而且需要挂了 Seedance 国内分组的 Key:只挂海外分组的 Key 调不了doubao-*ID。
两套的请求格式、端点和轮询代码完全相同,切换只需换 Key 和模型 ID。参考素材不能跨分组复用,换 Key 后要重新上传。
最容易耽误一整天的坑
- Seedance 的真人参考图。直接传入(URL 或 data URL)的真人图片在提交时可能被拒,返回
input_sensitive,不计费。Seedance 2.0 可以先用POST /v1/sd/assets上传素材,再以asset://<id>引用。Seedance 2.5 没有素材库,暂时不能用真人参考图。 - 提交时会预占余额。每次提交视频都会按预估费用预占余额。同时有几个大任务在跑时,即使余额为正,也可能返回 402
insufficient_balance。任务结束后预占自动释放。 - 并发按账户计。默认同时在途 5 个请求,超出的请求会立即收到 429,不会排队等待。视频提交占并发,轮询不占。
- 超时。未完成的任务在 Seedance 上 24 小时后、在可灵/海螺/万相上 2 小时后自动判为失败,失败任务不计费。
- 任务慢别重新提交。任务不能取消,每次被受理的提交都是一个单独计费的任务。继续轮询手上的任务 ID 即可。
怎么选接入方式
如果只需要一个家族、也愿意直接和厂商打交道,去厂商自己的国际平台开户是合理的。如果要用好几家,可以拿这些能自己核实的点来比:
- 你要的具体版本是否在列,ID 是否精确(例如 Seedance 2.5、可灵 v3)?
- 失败任务是否不收费?能否通过 API 读到每个任务的实际扣费?
- 结果链接能保留多久?过期后会怎样?
- 一个 Key 能否覆盖多个家族、共用一个余额?能否按 Key 设置消费上限?
- 每个家族的参数限制有没有文档,而不只是一张模型卡片?
常见问题
没有 BytePlus 或火山引擎账号,能在美国或欧洲用 Seedance 吗?
可以。用挂了 Seedance 海外分组的 HopBase Key,在 https://api.hop-base.com/v1/video/generate 调用 dreamina-seedance-2-5-260628 等海外版 ID 即可,不需要字节的账号。
可灵、Seedance 和海螺的请求体一样吗?
不一样。它们共用提交端点、轮询端点和计费规则,但请求体各用各的:Seedance 用 content[] 加 ratio,可灵用 prompt/images/videos 加 aspect_ratio,海螺 H3 用 MiniMax 的 v2 请求体。
视频生成失败会扣钱吗?
不会。失败的视频任务不计费,提交时就被拒绝的请求也不计费。未扣费的失败任务,其 usage.cost_usd 显示为 0。
生成的视频能保留多久?
各家的结果 URL 都是自任务完成起 24 小时内有效。再次查询返回的是同一个 URL,不会续期,请把结果转存到自己的存储。
在哪里看我实际要付的价格?
牌价见 hop-base.com/pricing。你账户的实际价格在登录后的模型目录里,每个完成的任务也会在 usage.cost_usd 里返回实际扣费。完整参数说明见视频生成总览、可灵、Seedance 和 MiniMax 海螺文档。