视频生成 API 文档
一个 API Key 调用本站全部视频模型。按积分计费、与站内同价,生成失败自动全额退还。 支持 Webhook 完成回调,不必轮询。本页公开,可直接转发给同事。
https://vimo.asia/api/v1三十秒上手
模型清单是公开的,写第一行代码前先看看有哪些模型、什么参数:
# 1. 拿模型清单(无需 Key)
curl https://vimo.asia/api/v1/models
# 2. 创建生成任务
curl https://vimo.asia/api/v1/videos/generations \
-H "Authorization: Bearer sk-你的API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "jiasuapi-sd-2-5-j3-doubao",
"prompt": "镜头缓慢推进,清晨的山谷",
"seconds": 30,
"aspect_ratio": "16:9",
"resolution": "720P",
"client_request_id": "order-0001"
}'
# 3. 查状态(video_url 带上同一把 Key 即可下载)
curl https://vimo.asia/api/v1/videos/generations/任务ID \
-H "Authorization: Bearer sk-你的API_KEY"鉴权
除 GET /models 外,所有接口都通过请求头鉴权。Key 在「API 中转」页创建, 完整明文只在创建时显示一次,请妥善保存;丢失只能吊销后重建。
Authorization: Bearer sk-你的API_KEY
部分网络环境(如经过本平台网关)会改写 Authorization 头,此时可改用等价的自定义头:X-Api-Key: sk-你的API_KEY。 两个头服务端都会识别,推荐按你的实际网络环境二选一。
端点一览
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| GET /models | — | 否 | 模型目录:ID、价格、参数范围。公开,无需 Key |
| POST /videos/generations | JSON | 是 | 创建视频生成任务,201 返回任务对象 |
| GET /videos/generations/{id} | — | 是 | 查询任务状态与结果地址 |
| GET /videos/generations/{id}/content | — | 是 | 下载成片(302 或直接返回字节流) |
| GET /account | — | 是 | 余额、本月消耗、限频口径 |
创建任务参数
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| model | string | 是 | 档位 ID,从 /models 获取,原样回显 |
| prompt | string | 是 | 画面描述,1–15000 字 |
| seconds | integer | 是 | 时长(秒)。离散档位须精确匹配,连续区间取整数 |
| size | string | 二选一 | 像素尺寸,如 "1280x720";与 aspect_ratio 等价,按短边自动推断分辨率 |
| aspect_ratio | string | 二选一 | 画幅比例,如 "16:9" / "9:16",可选值见模型目录 |
| resolution | string | 否 | 分辨率档,如 "720P";不传用档位默认值 |
| input_reference | string | 否 | 单个参考素材的公网 HTTPS 链接,按扩展名自动判定图片 / 音频 / 视频(不传即文生视频) |
| client_request_id | string | 否 | 幂等编号,最长 64 字符。同账户同编号只生成一次 |
| callback_url | string | 否 | 完成回调地址(HTTPS)。生成完成 / 失败时主动 POST 通知,见下文 |
响应字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | — | 任务 ID,后续查询与下载都用它 |
| object | string | — | 恒为 "video" |
| model | string | — | 本次使用的档位 ID |
| status | string | — | queued / in_progress / completed / failed |
| seconds | integer | — | 本次时长 |
| aspect_ratio | string | — | 本次画幅 |
| resolution | string | — | 本次分辨率 |
| video_url | string|null | — | completed 时为成片地址(站内代理,带 Key 可长期下载);未完成为 null |
| error | object|null | — | failed 时为 { code, message },否则 null |
| usage | object | — | { credits: 本次扣费, refunded: 已退还 } |
| created_at / updated_at | integer | — | Unix 秒 |
说明:video_url 是站内代理地址而不是供应商临时链接 —— 临时链接会过期、且多数要求鉴权头,交给程序保存毫无意义。 代理地址长期有效,下载时带上你的 API Key 即可。
状态机与轮询建议
queued 排队中 → in_progress 生成中 → completed 完成 / failed 失败(积分已全额退还)
建议每 10–15 秒查一次。更省心的做法是创建时传 callback_url, 完成时我们会主动通知你,无需轮询。
幂等(client_request_id)
带上 client_request_id 时,同一账户、同一编号、同一参数只会真正生成一次:
- · 重试 / 网络超时后重发:返回原任务(响应头
X-Idempotent-Replay: true), 不会重复扣费; - · 同一编号换了参数(不同模型 / 时长 / 提示词):返回 409,请更换编号;
- · 不传编号:每次调用都是新任务。
错误码
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| INVALID_API_KEY | 401 | 是 | Key 缺失、格式错误或已吊销 |
| INSUFFICIENT_CREDITS | 402 | 是 | 余额不足,充值后重试 |
| NOT_FOUND | 404 | 是 | 任务不存在或不属于当前 Key |
| CONFLICT | 409 | 是 | client_request_id 已用于不同参数的任务 |
| UNPROCESSABLE | 422 | 是 | 参数不符合模型要求(时长 / 画幅 / 分辨率 / 素材类型) |
| RATE_LIMITED | 429 | 是 | 触发限频,按 Retry-After 响应头等待(秒) |
| INTERNAL | 500 | 是 | 服务端异常,可携带同一 client_request_id 重试 |
错误响应统一为 { "error": { "code", "message" } },message 为中文说明, 程序判断请以 code 为准。
限频
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| 单 Key | 10 次/秒、60 次/分钟 | — | 超限返回 429 + Retry-After |
| 单账户 | 120 次/分钟 | — | 同一账户下所有 Key 合计 |
| 同一任务查询 | 5 秒/次 | — | 同一 Key 查同一任务的最小间隔 |
此外与站内用户共享提交并发限制(同时在跑的视频任务数), 具体余量见 GET /account 的 rate_limit 字段。
Webhook 完成回调
创建任务时传 callback_url(HTTPS), 生成完成或失败时会向该地址 POST 一个事件。失败自动重试 3 次(1s / 4s / 16s 退避), 单次超时 10 秒。
每个请求带签名头:
X-Vimo-Event: video.completed | video.failed X-Vimo-Signature: t=<unix秒>,v1=<hex>
验签方式:用创建 Key 时拿到的 webhook_secret,对 t + "." + 原始请求体 做 HMAC-SHA256,与 v1 比对;并拒绝 t 超过 5 分钟的报文(防重放)。
import { createHmac } from "node:crypto";
function verify(rawBody, header, secret) {
const m = /^t=(\d+),v1=([0-9a-f]+)$/.exec(header);
if (!m) return false;
const [, t, v1] = m;
if (Math.abs(Date.now() / 1000 - Number(t)) > 300) return false; // 防重放
const expected = createHmac("sha256", secret)
.update(t + "." + rawBody, "utf8")
.digest("hex");
return expected === v1;
}事件体:{ id, object: "event", type, created, data: { id, object: "video", status, model, video_url, usage, error? } }。
计费与退款
- · 创建成功即按「单价 × 秒数(或按次)」预扣积分,与站内生成同价;
- · 生成失败(上游明确失败 / 参数被拒)自动全额退还,usage.refunded 可见退还数;
- · 上游受理后会一直排队并查询到出结果或上游明确失败,平台不会自动重发;提交未成功则立即全额退款;
- · 余额查询:GET /account。
模型目录
以下为当前开放的视频档位(实时读取,以后台停用为准)。价格为积分: 按秒档位是「积分/秒」,按次档位是「积分/次」。
jiasuapi-sd-2-5-j3-doubao720p:4–30 秒, 30 图、10 视频、10 音频;素材总大小不超过100MiB
jiasuapi-sd-2.5-J3-doubao支持参考图 / 参考视频 / 参考音频
jijiu-full-sd2-5-30-10720P 单档);4-30 秒;最多30 参
jiasuapi-sd-2-5-j5-l全天能跑 30图 10视频10音频 720P 过真人 4-30秒
jijiu-full-seedance-2-5-dSeedance 2.5 全参:参考图 / 参考视频 / 参考音频全能
langzhen-sd2-0-933按模型名自动导入(来源:关键词推断)
jiasuapi-sd-2-5-j5-v230图 10视频 10音频 720P 过真人 5-30秒 15000字
jijiu-SD2.5特价301010线路一4-30 秒 720 301010
sd-2.0-933-720-fast-原生真人720P ·4-15 秒 · 9图3视频3音频 · 原生真人
jiasuapi-sd-2.0-J19图片 0视频 3音频 720P 海外官渠,可返官链 4-15秒
jijiu-SD2.0特价稳定903z9 图 3 音频,720P , 5-15 秒
SD-2.5-M8支持真人满血480P/720P/1080P 4-30秒(30 图 / 10 视频 / 10 音频)
image2pro-seedance2-0jijiu-SD2.0满血稳定933-线路三9 图 3 视频 3 音频;原生过真人不卡脸,可生成 5-15 秒
langzhen-SD2.5-M9-1080P-支持真人9图0视频3音频,5-30秒 1080p
langzhen-SD2.5满参真人脸/4.9-720P30图10视频10音频参考,时长5-30秒,
blobdraw-Seedance2.5-HH渠道A720P,4–30秒 30图10视频10音频 内置过脸
gway-seedance-2-5-g2-130图10音频 原生过真人脸 按秒计费 自由时长 720P
gway-seedance-2-0-g3-fast按模型名自动导入(来源:关键词推断)
从其他中转站迁移
字段命名遵循 OpenAI 视频 API 惯例。如果你从星创等站点迁来,对照如下:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| duration | seconds | — | 时长(秒) |
| aspect_ratio | aspect_ratio / size | — | 画幅;size 形如 1280x720 |
| resolution | resolution | — | 分辨率档 |
| PENDING / RUNNING | queued / in_progress | — | 任务状态 |
| SUCCEEDED | completed | — | 任务状态 |
| priceBeans | usage.credits | — | 本次扣费 |
| (无) | callback_url + Webhook | — | 完成回调,无需轮询 |