爆更API 接口文档
统一的 AI 视频与图片生成接口。协议兼容 OpenAI,一行 Authorization 头即可接入;
视频走「提交任务 → 轮询 → 取片」异步模型,图片走同步返回。
概览
爆更API 对外提供两类能力,都通过同一个域名和同一套鉴权调用:
| 能力 | 调用方式 | 典型耗时 | 计费 |
|---|---|---|---|
| 视频 | 异步任务:POST /v1/videos → 轮询 GET /v1/videos/{id} |
1 ~ 15 分钟 | 按秒 或 按次 |
| 图片 | 同步:POST /v1/images/generations |
10 ~ 90 秒 | 按张(精度档位) |
基础地址
所有接口路径都以 /v1 开头。生产环境只支持 HTTPS。
三个概念
- 令牌(Token):你的 API Key,形如
sk-xxxxxxxx,在控制台「令牌管理」创建,可设额度和过期时间。 - 模型(Model):一个模型 ID 对应一个固定的能力和价格档位,例如
qs-hp-wan3-720p。 - 额度(Quota):钱包里的余额单位,
500,000 quota = ¥1,调用成功才扣。
快速开始
- 注册并登录控制台 访问 api.baogeng.vip,注册账号后进入「控制台」。
-
创建令牌
控制台 →「令牌管理」→「添加令牌」。建议给每个业务单独建一个令牌,方便统计和随时吊销。
创建后复制
sk-开头的完整字符串,它只会完整显示一次。 - 发第一个请求 下面这段代码会生成一条 5 秒 720P 视频,并轮询到出片为止。
import time, json, urllib.request
BASE = "https://api.baogeng.vip"
TOKEN = "sk-你的令牌"
def call(method, path, body=None):
data = json.dumps(body).encode() if body else None
req = urllib.request.Request(
BASE + path, data=data, method=method,
headers={"Authorization": f"Bearer {TOKEN}",
"Content-Type": "application/json"})
with urllib.request.urlopen(req, timeout=60) as r:
return json.loads(r.read())
# 1) 提交任务
task = call("POST", "/v1/videos", {
"model": "qs-hp-wan3-720p",
"input": {"prompt": "一只橘猫在窗台上看雨,电影感,浅景深"},
"parameters": {"resolution": "720P", "ratio": "16:9", "duration": 5},
})
task_id = task.get("id") or task.get("task_id")
print("任务已提交:", task_id)
# 2) 轮询直到完成
while True:
time.sleep(5)
r = call("GET", f"/v1/videos/{task_id}")
status = r.get("status")
if status in ("completed", "succeeded"):
print("成片地址:", r.get("video_url"))
break
if status in ("failed", "error"):
print("生成失败:", r.get("error"))
break
print("处理中…", r.get("progress", 0))
# 1) 提交任务
curl -X POST https://api.baogeng.vip/v1/videos \
-H "Authorization: Bearer sk-你的令牌" \
-H "Content-Type: application/json" \
-d '{
"model": "qs-hp-wan3-720p",
"input": { "prompt": "一只橘猫在窗台上看雨,电影感,浅景深" },
"parameters": { "resolution": "720P", "ratio": "16:9", "duration": 5 }
}'
# 返回 {"id":"task_xxx","status":"processing",...}
# 2) 轮询(每 5 秒一次,直到 status 变成 completed)
curl https://api.baogeng.vip/v1/videos/task_xxx \
-H "Authorization: Bearer sk-你的令牌"
const BASE = 'https://api.baogeng.vip'
const TOKEN = 'sk-你的令牌'
const H = { 'Authorization': `Bearer ${TOKEN}`, 'Content-Type': 'application/json' }
// 1) 提交
const task = await fetch(BASE + '/v1/videos', {
method: 'POST', headers: H,
body: JSON.stringify({
model: 'qs-hp-wan3-720p',
input: { prompt: '一只橘猫在窗台上看雨,电影感,浅景深' },
parameters: { resolution: '720P', ratio: '16:9', duration: 5 },
}),
}).then(r => r.json())
// 2) 轮询
let res
do {
await new Promise(r => setTimeout(r, 5000))
res = await fetch(`${BASE}/v1/videos/${task.id}`, { headers: H }).then(r => r.json())
} while (!['completed', 'failed'].includes(res.status))
console.log(res.status === 'completed' ? res.video_url : res.error)
task_id 即可。鉴权
所有请求都要带令牌,放在 HTTP 头里:
Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
| 情况 | HTTP | 返回 |
|---|---|---|
| 没带令牌 / 令牌错误 / 已删除 | 401 | {"error":{"message":"Invalid token"}} |
| 令牌已过期 | 401 | {"error":{"message":"token expired"}} |
| 令牌额度用尽 | 403 | {"error":{"message":"token quota is not enough"}} |
| 账号被封禁 | 403 | {"error":{"message":"用户已被封禁"}} |
sk- 等于公开。
需要前端直连时,请在你自己的服务端中转,或者用受限额度 + 短有效期的临时令牌。模型列表
返回当前账号可用的模型,OpenAI 兼容格式。调用任何生成接口前,建议先确认模型 ID。
curl https://api.baogeng.vip/v1/models \
-H "Authorization: Bearer sk-你的令牌"
import json, urllib.request
req = urllib.request.Request("https://api.baogeng.vip/v1/models",
headers={"Authorization": "Bearer sk-你的令牌"})
models = json.load(urllib.request.urlopen(req))["data"]
for m in models:
print(m["id"], m.get("supported_endpoint_types"))
{
"data": [
{
"id": "qs-hp-wan3-720p",
"object": "model",
"created": 1626777600,
"owned_by": "task plugin",
"supported_endpoint_types": ["openai"]
},
{
"id": "gpt-image-2",
"object": "model",
"created": 1626777600,
"owned_by": "openai",
"supported_endpoint_types": ["image-generation", "openai"]
}
]
}
当前可用模型
| 模型 ID | 类型 | 计费 | 说明 |
|---|---|---|---|
qs-hp-wan3-720p | 视频 | ¥0.27 / 秒 | Wan 3.0,720P,按秒计费 |
qs-ww-wan3-1080p-30s-slow | 视频 | ¥2.2 / 次 | 1080P,30 秒档 |
qs-ww-wan3-1080p-30s-ultra-slow | 视频 | ¥1.5 / 次 | 1080P,30 秒档(极速队列更慢更便宜) |
qs-mc-wan3-1080p-30s | 视频 | ¥6.0 / 次 | 1080P,30 秒档 |
qs-mw-wan3-720p-per-item | 视频 | ¥4.5 / 次 | 720P,按条计费 |
foke-seedance-2.5-500s-720p | 视频 | ¥0.55 / 次 | Seedance 2.5,720P |
foke-seedance-2.5-omni-720p | 视频 | ¥7.8 / 次 | Seedance 2.5 Omni,720P |
xn3-seedance-2.5-480p | 视频 | ¥0.45 / 次 | Seedance 2.5,480P |
xn3-seedance-2.5-720p | 视频 | ¥0.5 / 次 | Seedance 2.5,720P |
gpt-image-2 | 图片 | ¥0.035 ~ 0.11 / 张 | 精度 × 分辨率双档位 |
gpt-image-2.5-flare | 图片 | ¥0.05 ~ 0.12 / 张 | 按精度档位(low/medium/high/xhigh/max) |
价格可能随上游调整。以 模型广场 的实时价格为准, 本表仅为写作时的快照。
视频生成
视频是异步的:提交任务拿 ID → 轮询状态 → 完成后取视频地址。 单次请求最多 15 分钟出片,客户端不要用同步 HTTP 超时去等。
提交任务
请求体
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | 模型 ID,见上表 |
input.prompt | string | 是 | 提示词,建议 500 字以内 |
input.media[] | array | 否 | 参考素材,见 参考素材 |
parameters.resolution | string | 否 | 分辨率档位,如 480p / 720p / 1080p,默认取模型档位 |
parameters.ratio | string | 否 | 画幅比例,如 16:9 / 9:16 / 1:1,默认 16:9 |
parameters.duration | number | 否 | 时长(秒),默认 5。按秒计费的模型按此值乘算 |
parameters.watermark | boolean | 否 | 是否加水印,默认 false |
prompt、seconds / duration、resolution、size。
新接入建议用上面的 input / parameters 嵌套结构。响应
{
"id": "task_8f3a1c9e2b",
"task_id": "task_8f3a1c9e2b",
"status": "processing",
"progress": 0,
"created_at": 1767225600
}
用 id(或 task_id,两者相同)去轮询。任务 ID 请自己持久化,进程重启后还能接着查。
查询任务
| status | 含义 | 该做什么 |
|---|---|---|
processing / pending / queued | 排队或生成中 | 等 5 秒再查 |
completed / succeeded | 完成 | 取 video_url 下载 |
failed / error | 失败 | 看 error 字段,不要自动重试超过 2 次 |
{
"id": "task_8f3a1c9e2b",
"status": "processing",
"progress": 45
}
{
"id": "task_8f3a1c9e2b",
"status": "completed",
"progress": 100,
"video_url": "https://video.example.com/xxx.mp4",
"duration": 5,
"resolution": "720p"
}
video_url 可能是临时签名链接(有效期通常几小时到几天)。
拿到后请立刻转存到你自己的对象存储,不要把它当永久地址存进数据库。下载成片
当上游没有返回直链、或者直链过期时,用这个接口由网关代理下载,返回 video/mp4 二进制流。支持 HEAD 探测。
curl -L https://api.baogeng.vip/v1/videos/task_8f3a1c9e2b/content \
-H "Authorization: Bearer sk-你的令牌" \
-o out.mp4
参考素材
图生视频、首尾帧、参考音频都通过 input.media 传:
{
"model": "qs-hp-wan3-720p",
"input": {
"prompt": "让画面里的人转身微笑",
"media": [
{ "type": "reference_image", "url": "https://cdn.example.com/a.jpg" },
{ "type": "first_frame", "url": "https://cdn.example.com/first.jpg" },
{ "type": "last_frame", "url": "https://cdn.example.com/last.jpg" },
{ "type": "reference_video", "url": "https://cdn.example.com/ref.mp4" },
{ "type": "reference_audio", "url": "https://cdn.example.com/voice.mp3" }
]
},
"parameters": { "duration": 5, "resolution": "720P" }
}
data:base64 内嵌,不支持 localhost、内网地址、需要登录才能访问的链接。
本地文件请先上传到对象存储 / CDN,再把 URL 传过来。| type | 含义 | 常见限制 |
|---|---|---|
reference_image | 参考图(风格/主体) | 最多 10 张,单张 ≤ 10MB |
first_frame | 首帧 | 与 last_frame 成对使用 |
last_frame | 尾帧 | 需与 first_frame 同时提供 |
reference_video | 参考视频(运镜/动作) | 最多 5 段,单段 ≤ 40MB |
reference_audio | 参考音频 / 音色 | 最多 5 段 |
具体上限随模型不同,超出时上游会返回 400 并在 message 里说明。
图片生成
同步接口,一次请求直接返回图片。协议与 OpenAI Images API 一致。
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | gpt-image-2 或 gpt-image-2.5-flare |
prompt | string | 是 | 画面描述 |
size | string | 否 | 像素尺寸,如 1024x1024、1536x1024、2048x2048。不同尺寸落到不同分辨率档位,价格不同 |
quality | string | 否 | low / medium / high(gpt-image-2.5-flare 另支持 xhigh / max) |
n | number | 否 | 生成张数,按张计费 |
curl -X POST https://api.baogeng.vip/v1/images/generations \
-H "Authorization: Bearer sk-你的令牌" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "赛博朋克风格的城市夜景,霓虹雨夜,电影构图",
"size": "1024x1024",
"quality": "high",
"n": 1
}'
import json, urllib.request
body = json.dumps({
"model": "gpt-image-2",
"prompt": "赛博朋克风格的城市夜景,霓虹雨夜,电影构图",
"size": "1024x1024",
"quality": "high",
"n": 1,
}).encode()
req = urllib.request.Request("https://api.baogeng.vip/v1/images/generations",
data=body, method="POST",
headers={"Authorization": "Bearer sk-你的令牌",
"Content-Type": "application/json"})
res = json.load(urllib.request.urlopen(req, timeout=180))
for item in res["data"]:
print(item.get("url") or item.get("b64_json")[:40] + "…")
{
"created": 1767225600,
"data": [
{ "url": "https://.../image.png" }
]
}
价格怎么算
图片按 精度 × 分辨率档位 计价,不是按像素精确计算。以 gpt-image-2 为例(单位:元/张):
| 精度 \ 分辨率 | 1K | 2K | 4K |
|---|---|---|---|
low | 0.035 | 0.045 | 0.050 |
medium | 0.055 | 0.070 | 0.075 |
high | 0.065 | 0.090 | 0.110 |
gpt-image-2.5-flare 只有精度档位,不区分分辨率:low 0.05、medium 0.075、high 0.095、xhigh 0.11、max 0.12。
实际扣费 = 上表单价 × n。价格会随上游调整,模型广场上的表格是实时的。
旧版任务接口
早期版本用的是 /v1/video/generations,目前仍然可用,行为与 /v1/videos 一致:
新接入请直接用 /v1/videos,它是 OpenAI 官方视频协议,生态工具支持更好。
计费规则
额度单位
500,000 quota = ¥1。控制台「钱包」里看到的是折算后的人民币金额。
三种计费方式
| 方式 | 怎么算 | 适用 |
|---|---|---|
| 按秒 | 每秒单价 × parameters.duration | qs-hp-wan3-720p 等 |
| 按次 | 固定单价 × 1(与时长无关) | 多数 Seedance / Wan 任务模型 |
| 按张 | 精度档位单价 × n | gpt-image-* |
什么时候扣费
- 提交时预扣,任务失败会自动退回。
- 参数校验失败(400)、鉴权失败(401)不扣费。
- 任务成功但你没取片,也会扣费——因为上游已经产出了。
查询余额
令牌(sk-)只能调生成接口,查余额请用控制台登录态:
返回 {"object":"list","total_usage":N},total_usage 是已用额度(quota),除以 500000 得到人民币。
限流与重试
| 项目 | 限制 |
|---|---|
| 并发任务 | 按令牌分组配置,默认 10 个并行 |
| 轮询频率 | 建议 ≥ 5 秒一次,低于 2 秒可能被限流 |
| 请求体大小 | 建议 JSON 体控制在 1MB 以内。参考素材一律走 URL,不要把文件内容内嵌进请求 |
重试建议
- 只对
429、5xx和网络超时重试,指数退避(1s → 2s → 4s)。 400是参数错误,重试没用,按 message 改参数。- 提交任务超时后先查一次是否已经建单,避免重复扣费;上游支持
Idempotency-Key头,同 key 不会重复建单。
错误码
统一格式,和 OpenAI 一致:
{
"error": {
"code": "model_not_found",
"message": "No available channel for model xxx under group default (request id: ...)",
"type": "new_api_error"
}
}
| HTTP | code | 含义 | 处理 |
|---|---|---|---|
| 400 | invalid_request | 参数格式错误 | 按 message 修正字段 |
| 401 | — | 令牌无效 / 过期 | 检查 Authorization 头 |
| 403 | — | 额度不足 / 账号封禁 | 充值或换令牌 |
| 404 | task_not_found | 任务 ID 不存在 | 确认 task_id 与提交时一致 |
| 429 | rate_limit | 触发限流 | 退避后重试 |
| 500 | upstream_error | 上游异常 | 重试 1~2 次 |
| 503 | model_not_found | 该模型当前没有可用渠道 | 换模型,或联系客服 |
(request id: ...) 是我们定位问题的唯一凭据,
联系客服时请完整粘贴。常见问题
提交成功但一直 processing,是不是卡住了?
视频任务正常 1~15 分钟。超过 30 分钟仍是 processing,请把 task_id 和 request id 发给客服。
客户端超时断开不会让任务失败,重新查询即可。
返回的 video_url 打不开 / 403
多半是签名过期了。改成调 GET /v1/videos/{id}/content 走网关代理下载,或者重新查询任务拿新链接。
能不能传 base64 图片?
不能。参考素材只接受公网 HTTP(S) URL。base64 内嵌会让请求体暴涨(一段 40MB 视频转 base64 约 54MB), 上游也会直接拒绝。
为什么同样的提示词,扣费不一样?
检查三件事:duration(按秒模型)、resolution(档位不同单价不同)、
n(图片张数)。按次模型与时长无关,价格固定。
支持 OpenAI 官方 SDK 吗?
图片接口完全兼容,把 base_url 指到 https://api.baogeng.vip/v1 即可。
视频接口是 OpenAI 视频协议的实现,client.videos.create(...) 可用;
如果 SDK 版本对字段校验严格,直接用 requests / fetch 更稳。
额度用完了会怎样?
返回 403,任务不会提交,不扣费。充值后立即恢复,不需要换令牌。
更新日志
| 日期 | 变更 |
|---|---|
| 2026-11-02 | 文档站上线;模型广场新增图片模型按「精度 × 分辨率」表格展示价格 |
| 2026-11-01 | 排行榜改为按消费额排序,并支持视频 / 图片分栏 |
| 2026-10-27 | 新增 qs-* 系列 Wan 3.0 视频模型 |
| 2026-10-20 | POST /v1/videos 支持 input.media 参考素材(图/视频/音频) |
爆更API 接口文档