VisionStory AI 视频生成 API 通过 Seedance、Wan 和 Kling 模型生成文生视频、图生视频和参考素材驱动的视频。使用同一个 API Key 即可查询模型、估算点数、提交任务、复用素材、轮询状态和下载结果。
Beta。 只要账户拥有有效的 Pro 或更高等级订阅,其 API Key 即可调用这些接口,无需额外申请能力白名单。
AI 视频接口
| 方法 | 路径 | 功能 |
|---|---|---|
GET | /api/v1/ai_video/models | 获取各模型机器可读的能力表 |
GET | /api/v1/ai_video/cost | 提交前获取任务的准确点数成本 |
POST | /api/v1/ai_video | 提交生成任务 |
GET | /api/v1/ai_video | 查询单个任务,或通过 video_ids 一次查询最多 20 个任务 |
GET | /api/v1/ai_videos | 按时间倒序列出你的任务 |
DELETE | /api/v1/ai_video | 删除任务 |
POST | /api/v1/asset | 上传可复用的媒体素材 |
GET | /api/v1/assets | 列出你的素材 |
DELETE | /api/v1/asset | 删除素材 |
生成 AI 视频
提交文生视频任务,然后轮询至完成:
curl -s -H "X-API-Key: $VISIONSTORY_API_KEY" -H "Content-Type: application/json" -d '{"model_id": "seedance-2.0", "prompt": "A corgi surfing at sunset, cinematic lighting", "duration_sec": 8, "aspect_ratio": "9:16", "resolution": "1080p"}' https://openapi.visionstory.ai/api/v1/ai_video
{
"data": {
"video_id": "YOUR_AI_VIDEO_ID",
"status": "queued",
"cost_credit": 64
}
}
每 5–10 秒轮询一次:
curl -s -H "X-API-Key: $VISIONSTORY_API_KEY" "https://openapi.visionstory.ai/api/v1/ai_video?video_id=YOUR_AI_VIDEO_ID"
AI 视频模型与能力
GET /api/v1/ai_video/models 返回各参数允许值、默认值和媒体限制。接入时应始终以该接口返回值为准:新增模型和参数值会在此出现,无需更改 API。
| model_id | 适用场景 | 分辨率 | 时长 | 能力 |
|---|---|---|---|---|
seedance-2.5 | 新一代模型,单段视频最长 30 秒 | 480p / 720p / 1080p | 4–30 秒 | 文生视频、图生视频 |
seedance-2.0 | 旗舰质量,多模态参考 | 480p / 720p / 1080p | 4–15 秒 | 文生视频、图生视频 |
seedance-2.0-fast | 更低延迟和成本 | 480p / 720p | 4–15 秒 | 文生视频、图生视频 |
seedance-2.0-mini | 轻量、成本最低 | 480p / 720p | 4–15 秒 | 文生视频、图生视频 |
wan-3.0 | 多模态参考 | 480p / 720p / 1080p | 2–30 秒,整数 | 文生视频、图生视频 |
wan-3.0-prime | 价格更高的 Wan 变体 | 480p / 720p / 1080p | 2–30 秒,整数 | 文生视频、图生视频 |
kling-3.0 | 最高 4K 输出 | 720p / 1080p / 4k | 5 或 10 秒 | 文生视频、图生视频;不支持 refs |
kling-3.0-omni | 图片和视频参考 | 720p / 1080p | 3、5、7、10 或 15 秒 | 支持参考素材的文生视频;不支持 first_frame |
请从模型查询结果中读取各模型支持的画面比例、默认值和参考素材限制。Wan 支持 adaptive,提示词最多 20000 字符;其他模型最多 2500 字符。除 Kling 3.0 Omni 默认 1080p 外,其余模型默认 720p。Seedance 2.5 默认 15 秒,其他 Seedance 模型默认 5 秒。原生音频默认开启。
480p 仅适用于 Seedance 和 Wan 的 AI 视频。 Kling 和新的数字人视频请求不支持 480p;历史数字人视频响应仍可能包含 480p。
估算 AI 视频点数成本
生成任务按点数计费,提交时扣除,生成失败会自动全额退还。成本取决于模型、分辨率和时长,按秒计算。提交前调用成本接口,它与实际计费使用完全相同的公式:
curl -s -H "X-API-Key: $VISIONSTORY_API_KEY" "https://openapi.visionstory.ai/api/v1/ai_video/cost?model_id=seedance-2.0&duration_sec=8&resolution=1080p"
{
"data": {
"credit": 64
}
}
参考素材和 generate_audio 不改变点数价格。当前每秒费率如下:
| 模型 | 480p | 720p | 1080p | 4k |
|---|---|---|---|---|
| Seedance 2.5 | 3 | 6 | 14 | — |
| Seedance 2.0 | 2 | 3 | 查询成本接口 | — |
| Seedance 2.0 Fast / Mini | 1 | 2 | — | — |
| Wan 3.0 | 1 | 2 | 5 | — |
| Wan 3.0 Prime | 2 | 3 | 7 | — |
| Kling 3.0 | — | 2 | 3 | 8 |
| Kling 3.0 Omni | — | 2 | 3 | — |
请通过成本接口查询当前报价,不要长期缓存此表。剩余点数可通过 GET /api/v1/billing/credits 查询。
图片、视频与音频输入
每个媒体位置(first_frame、end_frame、refs[])都必须从以下三种形式中选择且仅选择一种:
| 形式 | 示例 | 适用场景 |
|---|---|---|
url | {"url": "https://your.site/img.jpg"} | 单次使用;由服务端获取,不加入素材库 |
inline_data | {"inline_data": {"mime_type": "image/png", "data": "<base64>"}} | 单次使用,且没有可公开访问的 URL |
asset_id | {"asset_id": "YOUR_ASSET_ID"} | 素材复用;通过素材 API 上传一次,多次引用 |
以下媒体限制针对 Seedance 输入。Wan 和 Kling 有各自的模型限制,上传前请读取能力表。
| 类型 | 最大文件大小 | 格式 | 限制 |
|---|---|---|---|
| 图片 | 30 MB | jpg, jpeg, png, webp, bmp, tiff, gif | 每边 300–6000 像素,画面比例 1:2.5–2.5:1 |
| 视频 | 100 MB | mp4, mov | 2–15 秒,300–6000 像素,24–60 fps,画面比例 1:2.5–2.5:1 |
| 音频 | 15 MB | wav, mp3 | 2–15 秒,不能作为唯一的参考素材 |
配置 AI 视频请求
POST /api/v1/ai_video 在同一接口中支持两种模式:传入 first_frame(可选 end_frame)进行图生视频;传入 refs 进行参考素材驱动的文生视频,可用于角色一致性、风格、动作或声音参考;两者都不传则是纯文生视频。refs 与 first_frame 互斥。未知字段和不支持的值会被拒绝,不会静默忽略。
| 字段 | 必填 | 说明 |
|---|---|---|
model_id | 是 | 见上方模型说明 |
prompt | 是 | 文本提示词,Wan 最多 20000 字符,其他模型最多 2500 字符 |
client_request_id | 否 | 幂等键,24 小时内使用同一值重复提交会返回原任务,不重复扣费 |
duration_sec | 否 | 省略时使用模型默认值 |
aspect_ratio | 否 | 省略时使用模型默认值 |
resolution | 否 | 省略时使用模型默认值 |
generate_audio | 否 | 是否生成原生音轨,默认为 true |
first_frame | 否 | 图片媒体对象,切换为图生视频 |
end_frame | 否 | 尾帧图片,要求同时提供 first_frame |
refs | 否 | 限制因模型而异,请查看 refs.max、refs.max_per_kind 和 refs.total_duration_sec_max |
各模型的输入组合
- Wan:最多 10 个图片、5 个视频和 5 个音频参考,同时受模型查询返回的总数上限约束。视频和音频参考各自的总时长不超过 15 秒;单段超长素材截取前 15 秒。总时长超限返回
37104。同时传入refs和显式aspect_ratio返回 400。 - Kling 3.0:
refs.max=0。图生视频接受first_frame,但该模式下显式传入aspect_ratio会返回 400。 - Kling 3.0 Omni:不支持
first_frame,最多 7 个图片或视频参考。参考素材包含视频时,必须设置generate_audio=false,否则返回 400。 - 只有模型查询明确支持图生视频时,才使用
first_frame。始终保持first_frame与refs互斥;end_frame必须与first_frame一起使用。
使用首尾帧生成视频:
curl -s -H "X-API-Key: $VISIONSTORY_API_KEY" -H "Content-Type: application/json" -d '{"model_id": "seedance-2.0", "prompt": "The scene slowly comes alive, gentle camera push-in", "first_frame": {"url": "https://your.site/start.jpg"}, "end_frame": {"url": "https://your.site/end.jpg"}, "duration_sec": 6}' https://openapi.visionstory.ai/api/v1/ai_video
使用可复用素材保持角色一致性:
curl -s -H "X-API-Key: $VISIONSTORY_API_KEY" -H "Content-Type: application/json" -d '{"model_id": "seedance-2.0", "prompt": "The same woman walks through a neon-lit street at night", "refs": [{"asset_id": "YOUR_ASSET_ID"}], "duration_sec": 10}' https://openapi.visionstory.ai/api/v1/ai_video
轮询 AI 视频生成状态
通过 ?video_id= 查询单个任务,或用 ?video_ids=id1,id2,... 一次查询最多 20 个任务,批量响应返回 {"videos": [...]}。每 5–10 秒轮询一次。
| status | 含义 |
|---|---|
queued | 已接收,等待处理 |
creating | 生成中 |
created | 已完成,可使用 video_url 和 cover_url |
failed | 生成失败,查看 error;点数已自动退还 |
Seedance 采用异步审核:拒绝的任务会变为 failed 并退款。Wan 和 Kling 可能同步拒绝内容,返回 HTTP 403 及错误码 37110(提示词)或 37111(图片),不扣费。请同时处理提交错误和 failed 任务状态。
生成失败会全额退还点数。API 不会在失败后自动切换其他模型;返回的 model_id 表示实际使用的模型。
查询与删除 AI 视频
GET /api/v1/ai_videos 按时间倒序列出你的任务。将上一页的 next_cursor 作为 cursor 传入以继续分页,next_cursor=0 表示没有下一页。limit 默认 20,最多 100。DELETE /api/v1/ai_video?video_id= 用于删除任务,且只能删除自己的任务。
通过素材 API 复用媒体
素材是上传后可复用的媒体:上传一次,就能在任意多次生成请求中通过 asset_id 引用,适合反复使用的角色图片、品牌视频或声音样本。重复上传相同内容会返回已有素材,具有幂等性:
curl -s -H "X-API-Key: $VISIONSTORY_API_KEY" -H "Content-Type: application/json" -d '{"url": "https://your.site/character.jpg"}' https://openapi.visionstory.ai/api/v1/asset
{
"data": {
"asset_id": "YOUR_ASSET_ID",
"kind": "image",
"mime": "image/jpeg",
"width": 1024,
"height": 1536,
"duration_sec": 0,
"created_at": 1754270000
}
}
也支持 Base64 inline_data,大小和格式限制与上文媒体输入一致。GET /api/v1/assets 列出你的素材,可用 kind 筛选、cursor / limit 分页。DELETE /api/v1/asset?asset_id= 删除素材,不影响已使用它生成的视频。
AI 视频 API 错误
| HTTP | error.code | 含义 |
|---|---|---|
| 401 | — | API Key 缺失或无效 |
| 403 | 30610 | 需要有效订阅 |
| 403 | 30301 | 点数不足 |
| 403 | 37101 | 输入无效,不符合参数或媒体限制 |
| 403 | 37102 | 提示词过长 |
| 403 | 37103 | 参考素材过多 |
| 403 | 37104 | 参考素材总时长超限 |
| 403 | 37110 / 37111 | Wan/Kling 提示词或图片未通过审核,不扣费 |
| 400 | 400 | 网关拒绝请求:未知 model_id、媒体过大或不支持、无效 asset_id |
| 422 | — | 请求体格式错误:未知字段、缺少必填字段或组合无效 |
| 404 | — | 视频或素材不存在 |
| 429 | — | 请求频率受限 |
异步失败(如审核拒绝、供应商错误)不通过 HTTP 错误表示。任务会变为 status=failed,附带 error 对象,并自动退还点数。
频率限制、存储与幂等性
- 并发: Beta 期间按 API Key 限制并发,超限请求会被拒绝,不会排队。
- 频率: 每个账户每 60 秒最多 180 次请求。请使用批量查询(
video_ids),轮询间隔保持 5–10 秒。 - 存储: 如需长期保存,请及时下载
video_url。素材会一直保留,直到你将其删除。 - 幂等性: 提交时传入
client_request_id,可安全重试。24 小时内重复使用相同值会返回原任务,不会新建或再次扣费。不使用幂等键时,请在重试前保存返回的video_id,因为已成功提交后再进行网络级重试,会创建新任务并再次扣费。 - Webhook 暂不支持,目前通过轮询获取结果。
- Beta 接口未来可能增加可选参数和模型,但现有字段及语义不会发生不兼容变更。