跳跳虎视频生成 API
版本:3.1(2026-08-13)
基础地址:https://api.yanzi.fun
本文档仅描述公开调用接口。Seedance 2 使用统一模型名 seedance-2:没有图片时生成文字视频,传入图片时生成图片参考视频。Wan 3.0 的模型名及调用方式保持独立。
1. 鉴权
所有请求使用完整 API Key:
Authorization: Bearer YOUR_API_KEY
账号池的 curl 自动解析接口支持机器直接调用,不需要管理员页面会话。请求使用服务器配置的专用 GW_INGEST_TOKEN,与下游用户 API Key 分开:
POST /admin/accounts/import-curl
Authorization: Bearer GW_INGEST_TOKEN
Content-Type: application/json
{
"curl": "curl ... /user/info ... -b \"... token=JWT ...\"",
"storage_state": {
"cookies": [],
"origins": [],
"sessionStorage": {}
},
"notes": "可选备注"
}
该接口仍要求 curl 中包含 QwenWork 登录态 token;缺少该字段时请求会被拒绝,不会创建不可用账号。
JSON 请求同时携带:
Content-Type: application/json
2. 查询视频模型
GET /api/models?modality=video
Authorization: Bearer YOUR_API_KEY
当前公开模型:
| 模型 | 用途 | 时长 | 比例 | 清晰度 |
|---|---|---|---|---|
seedance-2 |
无图片自动文生;有图片自动图片参考生成 | 1–15 秒 | 9:16、16:9 |
720p、1080p |
wonderclip:wan3.0-video:t2v |
Wan 3.0 文生视频 | 2–30 秒 | 16:9、9:16、4:3、3:4、1:1 |
720p、1080p |
wonderclip:wan3.0-video:i2v |
Wan 3.0 图生视频 | 2–30 秒 | 同上 | 720p、1080p |
wonderclip:wan3.0-video:r2v |
Wan 3.0 图片、视频、音频参考生成 | 2–30 秒¹ | 同上 | 720p、1080p |
seedance933:t2v |
933 不卡脸文生视频 | 1–15 秒 | 9:16、16:9、1:1、4:3、3:4、21:9 |
720p、1080p |
seedance933:i2v |
933 不卡脸图生视频 | 1–15 秒 | 同上 | 720p、1080p |
genspark:seedance-2.0:t2v |
第二渠道 Seedance 2.0 文生视频 | 4–15 秒 | 21:9、16:9、4:3、1:1、3:4、9:16 |
720p、1080p |
genspark:seedance-2.0:i2v |
第二渠道 Seedance 2.0 图片参考生成 | 4–15 秒 | 同上 | 720p、1080p |
¹ 参考素材包含视频时最长 15 秒。
模型列表返回当前启用状态、支持参数及系统公开标价。实际用户价格以报价接口为准。
模型与上游路由
公开模型名不包含上游命名空间。网关按模型固定绑定上游,不会因为渠道字段残留、账号额度不足或请求失败而把任务改投到其他模型:
| 公开模型 | 固定上游 |
|---|---|
seedance-2 |
Seedance/vidIQ |
wonderclip:wan3.0-video:* |
WonderClip |
seedance933:* |
933 不卡脸 |
genspark:seedance-2.0:* |
第二渠道 |
提交 genspark:seedance-2.0:t2v 或 genspark:seedance-2.0:i2v 时,即使请求中的 channel 是旧值,也会按模型绑定到第二渠道。若该模型对应的上游账号或额度不可用,任务会在该上游失败并退款,不会转成 Wan 3.0 或其他模型。
3. 查询预计扣费
POST /api/system-control/quote
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
请求:
{
"model": "seedance-2",
"task_type": "text_to_video",
"task_count": 1,
"config_json": {
"model": "seedance-2",
"seconds": 5,
"resolution": "720p"
}
}
图片参考生成时将 task_type 设置为 image_to_video。
响应:
{
"available": true,
"task_count": 1,
"model": "seedance-2",
"duration": 5,
"pricing_unit": "credits_per_second",
"credits_per_second": "0.12",
"unit_price": "0.60",
"total_price": "0.60",
"balance": "179.65"
}
报价和实际扣费使用同一套用户价格规则。任务失败时自动退回本次预扣积分。
4. 服务器本地上传与 Media ID
图片建议先通过网关返回的上传地址写入服务器本地媒体卷。网关数据库只保存 Media ID,不保存图片 Base64;当前部署不依赖 Cloudflare R2。
4.1 获取上传地址
POST /api/upload/presign-object
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"filename": "Image1.jpg",
"content_type": "image/jpeg",
"size_bytes": 1234567
}
响应包含 media_id、upload_url、object_key 和上传请求头。浏览器使用返回的 upload_url 执行 PUT,Body 为原始文件二进制;生产配置下该地址落到本机 /data/media/uploads。
4.2 确认上传
POST /api/upload/confirm-object
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"media_id": "MEDIA_ID",
"object_key": "uploads/USER_ID/DATE/MEDIA_ID.jpg"
}
确认成功后,在视频生成请求中传入:
"media_ids": ["MEDIA_ID_1", "MEDIA_ID_2"]
5. 统一提交视频任务
POST /v1/videos/generations
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
通用字段:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
model |
string | 是 | 模型名称 |
channel |
string | 否 | Seedance 使用 seedance;Wan 3.0 使用 wonderclip;第二渠道使用 second_channel,也可由模型自动识别 |
prompt |
string | 是 | 视频提示词 |
duration |
integer | 否 | 生成秒数 |
ratio |
string | 否 | 画面比例 |
resolution |
string | 否 | 720p 或 1080p,默认 720p |
audio |
boolean | 否 | 是否生成声音,默认 true |
batch_count |
integer | 否 | 批量任务数量,1–5,默认 1 |
images |
array | 否 | 图片数组,支持 data_b64 或公网 url;可用于图生视频、首尾帧及图片参考 |
references |
array | 否 | Base64 参考素材数组,元素类型可为 image、video、audio |
image_mode |
string | 否 | 图片模式:single、first_last 或 r2v |
reference_mode |
string | 否 | 参考模式;混合图片、视频、音频时可填写 reference_generation |
单任务响应:
{
"task_id": "TASK_ID",
"status": "queued"
}
批量响应:
{
"task_ids": ["TASK_ID_1", "TASK_ID_2"],
"count": 2,
"status": "queued"
}
6. Seedance 2
Seedance 2 固定使用:
"model": "seedance-2"
接口根据媒体字段自动选择生成方式:
| 请求内容 | 生成方式 |
|---|---|
没有 images、首尾帧或 Ingredients |
文生视频 |
| 传入任意图片字段 | 图片参考视频 |
5.1 文生视频
{
"channel": "seedance",
"model": "seedance-2",
"prompt": "夏日下午的家庭庭院,草坪在微风中轻轻摇曳,镜头缓慢推进",
"duration": 5,
"ratio": "9:16",
"resolution": "720p",
"audio": true
}
5.2 单首帧
{
"channel": "seedance",
"model": "seedance-2",
"image_mode": "single",
"prompt": "让图片中的人物自然眨眼,背景随微风轻轻摆动",
"duration": 5,
"ratio": "9:16",
"resolution": "720p",
"media_ids": ["MEDIA_ID_FIRST_FRAME"]
}
5.3 首尾帧
{
"channel": "seedance",
"model": "seedance-2",
"image_mode": "first_last",
"prompt": "从第一张画面自然过渡到第二张画面",
"duration": 5,
"ratio": "16:9",
"resolution": "720p",
"media_ids": ["MEDIA_ID_START", "MEDIA_ID_END"]
}
5.4 Ingredients 多图参考
支持 1–9 张图片:
{
"channel": "seedance",
"model": "seedance-2",
"image_mode": "r2v",
"prompt": "保持三张参考图中的角色外观、服装和场景一致,生成连贯电影镜头",
"duration": 5,
"ratio": "9:16",
"resolution": "720p",
"media_ids": ["MEDIA_ID_1", "MEDIA_ID_2", "MEDIA_ID_3"]
}
media_ids/images 的数组顺序就是图片编号,可在提示词中使用 @ImageN(同时兼容 @图N)引用:
{
"channel": "seedance",
"model": "seedance-2",
"image_mode": "r2v",
"prompt": "保持 @Image1 的女主外观和服装一致,让 @Image1 与 @Image2 出现在 @Image3 的教室场景中",
"duration": 5,
"ratio": "9:16",
"resolution": "720p",
"media_ids": ["MEDIA_ID_女主", "MEDIA_ID_男主", "MEDIA_ID_场景"]
}
对应关系固定为:
@Image1 / @图1 → media_ids[0] 或 images[0]
@Image2 / @图2 → media_ids[1] 或 images[1]
@Image3 / @图3 → media_ids[2] 或 images[2]
网关会按请求数组顺序重建素材,不依赖数据库查询返回顺序;若提示词引用的 @ImageN 超出实际图片数量,请求会返回参数错误,避免静默错绑。
图片数据规则:
- 推荐使用上传接口获得的
media_ids;当前生产环境媒体保存在服务器本地卷。 - 支持公网图片地址:
images: [{"url": "https://example.com/image.jpg", "name": "image.jpg"}]。网关会校验、压缩并转存到服务器本地媒体目录,任务仅保存 Media ID。 - 兼容接口仍接受旧
images[].data_b64。 images[].url仅接受公网 HTTP/HTTPS 地址,单张原图最大 20MB;URL 与 Base64 不混合传入。- 不要把
media_ids与images混合用于同一任务;选择一种传图方式可以让编号最清晰。 images[].name仅用于记录和排查,不参与上游绑定;真正绑定依据是数组下标。- 客户端应保持数组稳定,不要使用无序集合、对象键遍历或异步完成顺序来拼装图片数组。
- 单首帧必须为 1 张图片。
- 首尾帧必须为 2 张图片。
- 多图参考支持 1–9 张图片。
- 未填写
image_mode时:1 张图片按单首帧处理,多张图片按 Ingredients 处理。
7. Wan 3.0
6.1 文生视频
{
"channel": "wonderclip",
"model": "wonderclip:wan3.0-video:t2v",
"prompt": "真实庭院里的花朵随风摇曳,镜头稳定推进",
"duration": 5,
"ratio": "9:16",
"resolution": "720p",
"audio": true
}
6.2 图生视频
{
"channel": "wonderclip",
"model": "wonderclip:wan3.0-video:i2v",
"prompt": "让图片中的花朵和叶片随微风自然摆动",
"duration": 5,
"ratio": "9:16",
"resolution": "720p",
"images": [
{"name": "frame.jpg", "data_b64": "BASE64_IMAGE"}
]
}
Wan 3.0 参考生视频(图片 / 视频 / 音频可混合)示例
references 可混合图片、视频和音频。单次最多 10 张图片、5 个视频、5 个音频,合计最多 20 个素材。
图片、视频、音频不需要拆成不同接口或不同请求。
{
"channel": "wonderclip",
"model": "wonderclip:wan3.0-video:r2v",
"prompt": "参考素材的主体、镜头运动和声音节奏生成视频",
"duration": 5,
"ratio": "16:9",
"resolution": "720p",
"audio": true,
"references": [
{
"name": "reference.jpg",
"media_type": "image",
"mime": "image/jpeg",
"data_b64": "BASE64_IMAGE"
},
{
"name": "reference.mp4",
"media_type": "video",
"mime": "video/mp4",
"data_b64": "BASE64_VIDEO"
},
{
"name": "reference.mp3",
"media_type": "audio",
"mime": "audio/mpeg",
"data_b64": "BASE64_AUDIO"
}
]
}
8. 933 不卡脸
文生视频使用 seedance933:t2v,图生视频使用 seedance933:i2v。支持 1–15 秒和 720p、1080p。
图生视频支持图片、视频、音频混合参考:最多 10 张图片、5 段视频、5 段音频。提示词可用 @Image1、@Video1、@Audio1 指定对应素材;三种素材分别独立编号。
8.1 图生视频:直接传入图片
将图片转成 Base64 后放入 images[].data_b64:
{
"channel": "seedance933",
"model": "seedance933:i2v",
"prompt": "@Image1 中的人物自然转身,镜头平稳跟随",
"duration": 5,
"ratio": "9:16",
"resolution": "720p",
"images": [
{
"name": "reference.jpg",
"data_b64": "BASE64_IMAGE"
}
]
}
也可以传公网图片地址:
"images": [
{
"name": "reference.jpg",
"url": "https://example.com/reference.jpg"
}
]
网页端选择“933 不卡脸 图生视频”后,在“参考素材”区域点击或拖拽上传图片。图片左上角的 @Image1 按钮可将素材编号插入提示词。
8.2 图片、视频、音频混合参考
{
"channel": "seedance933",
"model": "seedance933:i2v",
"prompt": "以 @Image1 为主体,参考 @Video1 的动作,并使用 @Audio1 的节奏",
"duration": 5,
"ratio": "16:9",
"resolution": "720p",
"references": [
{"name": "subject.jpg", "media_type": "image", "mime": "image/jpeg", "data_b64": "BASE64_IMAGE"},
{"name": "motion.mp4", "media_type": "video", "mime": "video/mp4", "data_b64": "BASE64_VIDEO"},
{"name": "rhythm.mp3", "media_type": "audio", "mime": "audio/mpeg", "data_b64": "BASE64_AUDIO"}
]
}
{
"channel": "seedance933",
"model": "seedance933:t2v",
"prompt": "电影感街景,人物自然行走,镜头平稳跟随",
"duration": 5,
"ratio": "9:16",
"resolution": "720p"
}
9. 第二渠道 Seedance 2.0
渠道名仅用于 API 的 channel/模型显示,不作为服务器名称。第二渠道使用独立的上游凭据和素材上传链路。
支持模型:
genspark:seedance-2.0:t2v
genspark:seedance-2.0:i2v
Seedance 2.0 支持 4–15 秒,支持 21:9/16:9/4:3/1:1/3:4/9:16,分辨率为 720p、1080p。参考素材最多 9 张图片、3 个视频、3 个音频,合计最多 12 个素材。
文生视频:
{
"channel": "second_channel",
"model": "genspark:seedance-2.0:t2v",
"prompt": "电影感街景,人物自然行走,镜头平稳跟随",
"duration": 10,
"ratio": "9:16",
"resolution": "720p",
"audio": true
}
多模态参考:
{
"channel": "second_channel",
"model": "genspark:seedance-2.0:i2v",
"prompt": "以 @Image1 为主体,参考 @Video1 的动作,并使用 @Audio1 的节奏",
"duration": 15,
"ratio": "16:9",
"resolution": "720p",
"references": [
{"name": "subject.jpg", "media_type": "image", "mime": "image/jpeg", "data_b64": "BASE64_IMAGE"},
{"name": "motion.mp4", "media_type": "video", "mime": "video/mp4", "data_b64": "BASE64_VIDEO"},
{"name": "rhythm.mp3", "media_type": "audio", "mime": "audio/mpeg", "data_b64": "BASE64_AUDIO"}
]
}
Seedance 2.0 图片参考生成:
{
"channel": "second_channel",
"model": "seedance-2.0:i2v",
"prompt": "保持 @Image1 和 @Image2 中的角色与场景特征,参考 @Video1 的动作,并跟随 @Audio1 的节奏",
"duration": 5,
"ratio": "9:16",
"resolution": "720p",
"image_mode": "r2v",
"reference_mode": "reference_generation",
"images": [
{"name": "start.jpg", "mime": "image/jpeg", "data_b64": "BASE64_IMAGE_1"},
{"name": "end.jpg", "mime": "image/jpeg", "data_b64": "BASE64_IMAGE_2"}
],
"references": [
{"name": "motion.mp4", "media_type": "video", "mime": "video/mp4", "data_b64": "BASE64_VIDEO"},
{"name": "rhythm.mp3", "media_type": "audio", "mime": "audio/mpeg", "data_b64": "BASE64_AUDIO"}
]
}
第二渠道的 seedance-2.0:i2v 仅保留 r2v 参考生成;single 和 first_last 已取消。
管理员可导入第二渠道凭据;网关会自动把它加入第二渠道账号池。
参考素材上传可通过 711proxy 转发。配置第二渠道代理后,获取上传地址和向对象存储上传文件都会使用同一个代理出口;代理传输失败时会自动更换出口重试。视频生成流本身保持普通连接。
10. 查询任务
GET /v1/tasks/{TASK_ID}
Authorization: Bearer YOUR_API_KEY
成功响应:
{
"task_id": "TASK_ID",
"type": "video",
"channel": "seedance",
"status": "success",
"model": "seedance-2",
"ratio": "9:16",
"duration": 5,
"progress": "生成完成",
"result_urls": ["/v1/tasks/TASK_ID/video"],
"video_url": "/v1/tasks/TASK_ID/video",
"download_url": "/v1/tasks/TASK_ID/video",
"error": null,
"points_cost": 0.6,
"refunded": false,
"balance_after": 179.05
}
任务状态:
| 状态 | 说明 |
|---|---|
queued |
已进入队列 |
running |
正在生成 |
success |
生成完成 |
failed |
生成失败;预扣积分自动退回 |
建议每 10–30 秒查询一次,直至进入 success 或 failed。
8. 下载视频
GET /v1/tasks/{TASK_ID}/video
Authorization: Bearer YOUR_API_KEY
cURL:
curl -L "https://api.yanzi.fun/v1/tasks/TASK_ID/video" \
-H "Authorization: Bearer YOUR_API_KEY" \
-o result.mp4
9. 常见 HTTP 状态
| 状态码 | 说明 |
|---|---|
200 |
请求成功 |
400 |
参数、图片数量或媒体格式错误 |
401 |
API Key 无效 |
402 |
用户余额不足 |
404 |
任务不存在 |
429 |
用户任务或全局队列达到上限 |
500 |
任务提交异常 |
503 |
模型或渠道已停用 |
生成任务失败时,查询接口中的 status 为 failed,并返回稳定的公开错误信息;本次预扣积分会自动退回。
10. 完整 cURL 示例
Seedance 2 文生视频
curl -X POST "https://api.yanzi.fun/v1/videos/generations" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"channel":"seedance",
"model":"seedance-2",
"prompt":"夏日下午的庭院,草坪随微风轻轻摆动",
"duration":5,
"ratio":"9:16",
"resolution":"720p"
}'
查询任务
curl "https://api.yanzi.fun/v1/tasks/TASK_ID" \
-H "Authorization: Bearer YOUR_API_KEY"