SalpX.com
Seedance 2.0 接入文档 ← API 总览

Seedance 2.0 · 视频生成 + 形象素材

字节跳动 Seedance 2.0 视频生成模型(含虚拟人 / 真人形象素材接口),通过 SalpX 统一 base_url 调用。Seedance 2.0 / 2.0 fast / 2.0 mini 支持文生、首帧、首尾帧、全能参考(图 / 视频 / 音频),按实际生成量计费,失败自动退款。

01概述

Seedance 系列通过 SalpX 统一 base_url 调用,全部走视频接口 POST /v1/videos。大部分型号按秒计费(提交时必须传顶层整数字段 duration),特价 / 补贴版中的固定时长型号按次计费。

⚠️ 不要用 /v1/chat/completions 调用 seedance——对话接口不走视频链路,会直接返回 404。
Base URL
https://www.salpx.com/v1
鉴权
Authorization: Bearer <SalpX Token>
视频生成路径
POST /v1/videos
任务查询路径
GET /v1/videos/{task_id}
成片代理取片
GET /v1/videos/{task_id}/content
异步
是。提交返回 task_id,需轮询查询状态
SDK 兼容
OpenAI Python / Node.js / Go SDK(仅 base_url 切换)
失败自动退款:上游返回 5xx、超时、或异步任务进入 FAILED 状态 → SalpX 自动退还该次计费,不产生扣费。

02模型清单与价格

价格单位为人民币。所有型号提交时必须传顶层整数字段 duration(单位秒)。

2.1 Seedance 2.0 系列(按实际 token 计费)

这几个型号按上游实际消耗的视频 token 计费:扣费 = 实际 token 数 × 单价。token 数由分辨率、画幅、时长决定(参考视频的时长也计入),下表同时给出按 16:9 估算的每秒参考价。请求里带参考视频时,整单按「含视频输入」单价计。

模型分辨率不含视频输入
元 / 百万 token
含视频输入
元 / 百万 token
每秒参考价(16:9)
不带参考视频
每秒参考价(16:9)
带参考视频
seedance-2480p55.2033.60约 ¥0.54 / 秒约 ¥0.33 / 秒
720p(默认)55.2033.60约 ¥1.19 / 秒约 ¥0.73 / 秒
1080p61.2037.20约 ¥2.97 / 秒约 ¥1.81 / 秒
4k31.2019.20约 ¥6.07 / 秒约 ¥3.73 / 秒
seedance-2-fast480p44.4026.40约 ¥0.43 / 秒约 ¥0.26 / 秒
720p(默认)44.4026.40约 ¥0.96 / 秒约 ¥0.57 / 秒
seedance-2-mini480p27.6016.80约 ¥0.27 / 秒约 ¥0.16 / 秒
720p(默认)27.6016.80约 ¥0.60 / 秒约 ¥0.36 / 秒
seedance-2-mini-480p固定 480p27.6016.80约 ¥0.27 / 秒约 ¥0.16 / 秒
seedance-2-mini-720p固定 720p27.6016.80约 ¥0.60 / 秒约 ¥0.36 / 秒
分辨率用 resolution 字段指定(顶层或 metadata 里均可),不传默认 720p。seedance-2 支持 480p / 720p / 1080p / 4k;seedance-2-fast、seedance-2-mini 支持 480p / 720p,传其它分辨率直接返回 400,不扣费。带 -480p / -720p 后缀的型号分辨率由名字锁定。
带参考视频怎么算:整单按「含视频输入」单价,计费秒数 = 出片秒数 + 参考视频秒数。例:seedance-2 720p 出片 10 秒、参考视频共 5 秒 → (10 + 5) × ¥0.73 ≈ ¥10.9;同样 10 秒不带参考视频 → 10 × ¥1.19 ≈ ¥11.9。参考图、参考音频、首帧 / 首尾帧、有声视频都不加价。
扣费流程:提交时按「每秒参考价 × duration」预扣(带参考视频时另按 15 秒参考视频预扣);任务完成后按上游返回的实际 token 数多退少补,以账单为准。时长 4 – 15 秒。

2.2 其它按秒型号

模型价格最长时长
seedance-2-5¥2.00 / 秒30 秒
seedance-1-5-pro¥0.20 / 秒15 秒

2.3 特价 / 补贴版

特价 / 补贴版的型号、价格与完整用法见 特价版文档 与 补贴版文档,实时价格以模型广场为准。

03视频生成调用

3.1 文生视频(最简单)

curl · text-to-video
curl https://www.salpx.com/v1/videos \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-fast",
    "duration": 10,
    "resolution": "720p",
    "prompt": "一只蓝色果冻水母在霓虹海中游动,电影感",
    "ratio": "16:9"
  }'

返回:

response
{
  "task_id": "task_BbdMw8n5VowzJLgQbZA1MRNB2qoDYCJS",
  "object": "video",
  "model": "seedance-2-fast",
  "status": "",
  "progress": 0,
  "created_at": 1781705051
}

3.2 图生视频(首帧 / 首尾帧)

curl · image-to-video
curl https://www.salpx.com/v1/videos \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2",
    "duration": 10,
    "resolution": "1080p",
    "prompt": "镜头从首帧平滑过渡到尾帧,光影摇曳",
    "metadata": {
      "content": [
        {"type":"image_url","image_url":{"url":"https://your-cdn.com/first.jpg"},"role":"first_frame"},
        {"type":"image_url","image_url":{"url":"https://your-cdn.com/last.jpg"},"role":"last_frame"}
      ]
    }
  }'

媒体一律放 metadata.content,每项带 role。图生视频 role:first_frame(首帧)/ last_frame(尾帧)。只做首帧图生视频则单张 first_frame 即可。文本必须放顶层 prompt,不要写进 content。seedance-2、seedance-2-fast、seedance-2-mini 都支持首帧和首尾帧。

⚠️ 首帧 / 首尾帧与全能参考(3.3)是两种模式,同一个请求里不能混用 first_frame / last_frame 和 reference_*。首帧 / 首尾帧模式下画幅跟随首帧图,不要传 ratio。

3.2.1 Seedance 1.5 Pro · 首尾帧(变长时长 / 按秒 / 可出音频)

模型 seedance-1-5-pro:时长 duration 可指定 4–12 秒(按秒计费),分辨率 480p/720p/1080p@24fps,可加 "audio": true 生成原生音频(含 8 语种口型)。首尾帧结构与上面完全一致——放 metadata.content,用 first_frame / last_frame 标 role(不是 image_with_roles)。

curl · Seedance 1.5 Pro 首尾帧
curl https://www.salpx.com/v1/videos \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-1-5-pro",
    "prompt": "画面从白天渐变到夜晚,城市灯光逐盏亮起,电影感运镜",
    "duration": 8,
    "resolution": "1080p",
    "aspect_ratio": "9:16",
    "audio": true,
    "metadata": {
      "content": [
        {"type":"image_url","image_url":{"url":"https://your-cdn.com/day.jpg"},"role":"first_frame"},
        {"type":"image_url","image_url":{"url":"https://your-cdn.com/night.jpg"},"role":"last_frame"}
      ]
    }
  }'

只做首帧则单张 first_frame;duration 越大费用越高(按秒)。任务查询、报错处理与 Seedance 2.0 一致,见 3.5 / 3.7。

3.3 全能参考(图 / 视频 / 音频)

seedance-2、seedance-2-fast、seedance-2-mini 都可同时参考图片、视频、音频。全部放 metadata.content,role 用 reference_image / reference_video / reference_audio;提示词里用「图片1」「视频1」「音频1」引用(序号=同类素材出现顺序,从 1 起)。

curl · multimodal reference
curl https://www.salpx.com/v1/videos \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2",
    "duration": 10,
    "resolution": "720p",
    "prompt": "人物形象参考图片1,运镜参考视频1,音频1作背景乐……",
    "metadata": {
      "content": [
        {"type":"image_url","image_url":{"url":"https://.../pic1.jpg"},"role":"reference_image"},
        {"type":"video_url","video_url":{"url":"https://.../v1.mp4"},"role":"reference_video"},
        {"type":"audio_url","audio_url":{"url":"https://.../a1.mp3"},"role":"reference_audio"}
      ],
      "generate_audio": true
    }
  }'
⚠️ 组合限制:图 0~9 / 视频 0~3 / 音频 0~3;不支持「纯音频」「仅文本+音频」(音频须搭配至少一张参考图或一个参考视频)。违规返回清晰 400(见 3.7)。带参考视频时整单按「含视频输入」单价计费,参考视频的时长计入 token。可用火山形象素材:url 传 asset://<ASSET_ID>。

3.4 输入素材要求(图片 / 视频 / 音频)

素材由上游(火山方舟)下载并校验,不合规会返回 400 · InvalidParameter(原样透传)。常见硬性要求:

类型要求
图片 最小边宽、高均 ≥ 300px(实测:1073×152 因高度 152px<300 被拒 expected the height to be at least 300px)
图片 宽高比不要极端横幅/长条(如 7:1);建议贴近目标视频比例 16:9 / 9:16 / 1:1,可减少画面跳变
图片 格式常见 JPEG / PNG / WEBP
URL需公网可直接下载(或用火山素材 asset://<ASSET_ID>);私有/需登录/防盗链的 URL 会下载失败
视频 / 音频视频 ≤3 个(总时长 ≤15 秒)、音频 ≤3 个;格式限制以火山为准
📎 完整权威规格(各分辨率精确像素、大小上限等)以火山方舟官方文档为准:Seedance 2.0 API 参考。

3.5 任务查询

curl · poll status
curl https://www.salpx.com/v1/videos/<task_id> \
  -H "Authorization: Bearer $KEY"

# 完成时返回示例:
{
  "id": "task_...",
  "object": "video",
  "model": "seedance-2",
  "status": "completed",
  "progress": 100,
  "metadata": {
    "url": "https://video.example.com/abc.mp4"
  }
}

status 取值:queued 排队中 / in_progress 生成中 / completed 完成(成片地址在 metadata.url)/ failed 失败(原因在 error.message,已自动退款)。也可用 GET /v1/videos/{task_id}/content 代理取片。成片链接会过期,请及时转存。

3.6 完整参数

约定:文本放顶层 prompt;媒体与火山参数放 metadata。

参数位置必填说明
model顶层是模型名,见第 02 节
duration顶层是时长(整数秒,4 – 15)
resolution顶层或 metadata否480p / 720p / 1080p / 4k,默认 720p;fast / mini 只支持 480p、720p
prompt顶层是文本描述(中英文均可)。素材用「图片1/视频1/音频1」引用
metadata.contentmetadata否媒体数组:每项 {"type":"image_url|video_url|audio_url","<type>":{"url":"..."},"role":"..."}。role 见 3.2 / 3.3
ratio顶层或 metadata否21:9 / 16:9 / 4:3 / 1:1 / 3:4 / 9:16 / adaptive
metadata.generate_audiometadata否是否同步生成音轨(有声视频)
metadata.watermark / metadata.seedmetadata否水印 / 随机种子
callback_url顶层否异步完成回调(webhook)

3.7 校验报错(HTTP 400)

多模态组合非法时,SalpX 在转发火山前直接返回清晰中英 400,不会暴露火山原始报错:

命中情况code报错信息
参考图 > 9too_many_reference_images参考图最多 9 张 / at most 9 reference images
参考视频 > 3too_many_reference_videos参考视频最多 3 个 / at most 3 reference videos
参考音频 > 3too_many_reference_audios参考音频最多 3 个 / at most 3 reference audios
分辨率不支持(如 fast 传 1080p)invalid_resolution返回该型号支持的分辨率列表
纯音频 / 仅文本+音频invalid_audio_only_input音频须搭配至少一张参考图或一个参考视频 / audio must be accompanied by an image or video

04错误与退款

HTTP含义是否扣费
400请求参数错误(模型名不存在、缺必填)不扣
401Token 无效不扣
403额度不足不扣
500上游连接层失败已扣→自动退款
502上游返回错误 / 异步任务 FAILED已扣→自动退款
—异步任务超时已扣→自动退款
退款保证:任何 5xx 失败 SalpX 自动退还该次计费,不会出现"扣了钱没出视频"的情况。所有错误码标准化为 OpenAI 兼容格式。

05FAQ

为什么实际扣费和「每秒参考价 × 秒数」不完全一样?

Seedance 2.0 系列按上游实际 token 计费,token 数随画幅略有不同(如 9:16、21:9),带参考视频时参考视频的时长也计入。提交时先按参考价预扣,完成后按实际 token 多退少补。

异步任务怎么知道结果?

三种方式任选其一:

视频结果保存多久?

TA 默认保留 7 天。强烈建议拿到 URL 后立刻下载入自己的 OSS,不要长期引用 TA URL。

SDK 示例(Python)

Python · openai SDK 跨接 SalpX
# pip install openai requests
import requests, time

API = "https://www.salpx.com/v1"
KEY = "sk-..."
H = {"Authorization": f"Bearer {KEY}", "Content-Type": "application/json"}

# 1. 提交任务
r = requests.post(f"{API}/videos", headers=H, json={
    "model": "seedance-2-fast",
    "duration": 10,
    "resolution": "720p",
    "prompt": "霓虹城市夜景",
    "ratio": "9:16",
})
tid = r.json()["task_id"]
print("submitted:", tid)

# 2. 轮询
for _ in range(240):  # 最多 40 分钟
    time.sleep(10)
    s = requests.get(f"{API}/videos/{tid}", headers=H).json()
    if s.get("status") == "completed":
        print("video:", s["metadata"]["url"])
        break
    if s.get("status") == "failed":
        raise RuntimeError(s)

商务问题

批量定价 / 企业额度 / 私有部署 → 联系 SalpX 商务(控制台 → 个人设置 → 联系我们)。