SalpX · 视频生成接口

Seedance 特价版 API

三个自渲染视频模型的完整接入说明。提交、轮询、取片、计费、报错,照抄即可跑通。

✓ 2026-08-31 全链路实测 三个模型均已出片并核对扣费

01快速开始

三个模型都是异步任务:提交拿 task_id,轮询到 completed 后取成片。

最容易踩的坑:端点别用错。Seedance 系列走 POST /v1/videos不能用 /v1/chat/completions——用对话接口调会直接返回 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
令牌分组
必须是 default大额优惠,其它分组报 No available channel
出片耗时
通常 5–15 分钟;超过 45 分钟自动置失败并全额退款

02模型与价格

两种计费方式,填错会差 10 倍——按秒 的价格是每秒价,按次 的价格是整条片的价格。

模型名计费时长价格单条花费
seedance-2-mini-特价版 按秒 10 或 15 秒 ¥0.20 / 秒 10s = ¥2.00
15s = ¥3.00
seedance-2-fast-特价版 按秒 10 或 15 秒 ¥0.20 / 秒 10s = ¥2.00
15s = ¥3.00
seedance-2-5-补贴版 按次 固定 30 秒 面议 面议

mini 与 fast 的 seconds 只接受 10 或 15。这是必填字段,不传报 400;传其它值(例如 5)会被拒:400 invalid_duration · 时长需在 10~15 秒之间

seedance-2-5-补贴版 按次固定 30 秒,不需要传时长,传了也不改变成片长度和价格。

2026-09-10 更新:seedance-2-fast-特价版 新增 15 秒规格。原先它是固定 10 秒、按次 ¥2.10;现在支持 10 / 15 两档,计费改为按秒 ¥0.20 / 秒,因此 10 秒由 ¥2.10 降为 ¥2.00,15 秒为 ¥3.00。

请确认你的请求带上了 seconds这个字段现在必填、没有默认值——原先靠"不传时长自动出 10 秒"的写法需要显式补上 "seconds": 10

15 秒的产能明显小于 10 秒,排队时间可能更长;当日产能用尽会返回 409(该模型今日产能已排满),此时改用 10 秒或次日再试。

15 秒失败即退款,不会自动改投其它渠道重跑。不要按"失败也可能最终成功"的预期去设计重试逻辑——失败就是失败,钱原路退回。

03提交任务

3.1 文生视频 · 按秒(mini / fast)

curl
curl -X POST https://www.salpx.com/v1/videos \
  -H "Authorization: Bearer $SALPX_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-mini-特价版",
    "prompt": "一只蓝色果冻水母在霓虹海中缓缓游动,电影感运镜",
    "seconds": 10
  }'

返回:

200 response
{
  "task_id": "task_HbomjItwROBzAYE8ugjgl37iqpSbf87A",
  "object": "video",
  "model": "seedance-2-mini-特价版",
  "status": "queued",
  "progress": 0,
  "seconds": "10"
}

seedance-2-fast-特价版 写法完全一致,只是换个模型名。下面这条是 15 秒规格:

curl · fast 15 秒
curl -X POST https://www.salpx.com/v1/videos \
  -H "Authorization: Bearer $SALPX_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-fast-特价版",
    "prompt": "金色麦田上空掠过一群飞鸟,逆光,慢镜头,电影感",
    "seconds": 15
  }'

3.2 文生视频 · 按次(2.5 补贴版)

seedance-2-5-补贴版 固定 30 秒、按次计费,不需要传时长,其余完全一致。

curl
curl -X POST https://www.salpx.com/v1/videos \
  -H "Authorization: Bearer $SALPX_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-5-补贴版",
    "prompt": "金色麦田上空掠过一群飞鸟,逆光,慢镜头,电影感"
  }'

3.3 图生视频(参考图)

在请求上加一个参考图字段即可,最多 6 张,重复图自动去重,超出报 400。

优先直接传图片内容(multipart 文件或 base64)。传 URL 也支持,但我方需要先把图下载下来再转给渲染端 —— 你的图床只要对第三方不可读,这一单就会在提交阶段被拒。

① curl · multipart 直传文件(推荐)
curl -X POST https://www.salpx.com/v1/videos \
  -H "Authorization: Bearer $SALPX_KEY" \
  -F "model=seedance-2-mini-特价版" \
  -F "prompt=镜头缓缓推近,光影流动" \
  -F "seconds=10" \
  -F "input_reference=@ref.png"
② curl · JSON 传 base64(推荐)
IMG=$(base64 -w0 ref.png)   # macOS 用 base64 -i ref.png
cat > req.json <<EOF
{
  "model": "seedance-2-mini-特价版",
  "prompt": "镜头缓缓推近,光影流动",
  "seconds": 10,
  "input_reference": "data:image/png;base64,$IMG"
}
EOF
curl -X POST https://www.salpx.com/v1/videos \
  -H "Authorization: Bearer $SALPX_KEY" \
  -H "Content-Type: application/json" \
  --data-binary @req.json
③ curl · JSON 传图片 URL
curl -X POST https://www.salpx.com/v1/videos \
  -H "Authorization: Bearer $SALPX_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-mini-特价版",
    "prompt": "镜头缓缓推近,光影流动",
    "seconds": 10,
    "input_reference": "https://your-cdn.com/ref.jpg"
  }'

传 URL 的硬要求:地址必须能被任意第三方直接 GET 下载。对象存储的预签名地址(带 X-Amz-Signature 那种)、需要登录 / Referer / IP 白名单才能访问的地址,我方一律拉不到。这时提交会直接返回 400 reference_image_unreachable,并把你的图床原样返回的报错一并带出来(例如 SignatureDoesNotMatch),方便你定位。

这类失败发生在扣费之前,不产生任何费用,任务也不会建。拿不准就别传 URL,直接用上面 ① 或 ② 的写法。

不支持首尾帧。特价版只吃参考图,first_frame / last_frame 那套写法不生效——传了不报错,但成片不会按首尾帧生成。

请求字段

字段类型必填说明
modelstring完整模型名,含中文后缀
promptstring提示词,不可为空白
secondsnumber / stringmini / fast 必填只接受 1015;数字 10 与字符串 "10" 都认。seedance-2-5-补贴版 可省略
durationnumber / stringseconds 的等价别名,二选一
input_referencestring / string[]参考图,≤ 6 张,合计 ≤ 10 MB。可传 multipart 文件、base64、data:image/png;base64, 前缀写法,或图片 URL(URL 须第三方可直接下载)。不传即纯文生视频
images / imagestring / string[]input_reference 的等价别名,写法与限制完全相同

04轮询与取片

提交后每 30–60 秒查一次即可,出片通常在 5–15 分钟。

queued in_progress completed failed
curl · 查询状态
curl https://www.salpx.com/v1/videos/task_HbomjItwROBzAYE8ugjgl37iqpSbf87A \
  -H "Authorization: Bearer $SALPX_KEY"

完成后的返回:

200 response · completed
{
  "id": "task_HbomjItwROBzAYE8ugjgl37iqpSbf87A",
  "status": "completed",
  "progress": 100,
  "seconds": "10",
  "url": "https://video.example.com/20260921/selfd_xxxx.mp4",
  "video_url": "https://video.example.com/20260921/selfd_xxxx.mp4",
  "result": { "data": [ { "url": "https://..." } ] }
}

取片的两种方式

  • 直链下载url 字段是公网绝对地址,直接 GET 即可,不需要带任何鉴权头
  • 代理取片GET /v1/videos/{task_id}/content,需带 Authorization。走 SalpX 中转,返回同一个文件。
curl · 代理取片
curl -L -o out.mp4 \
  https://www.salpx.com/v1/videos/task_xxxx/content \
  -H "Authorization: Bearer $SALPX_KEY"

两种方式返回的都是 video/mp4,字节数完全一致。下载慢时把客户端超时调到 ≥ 600 秒。

05计费与退款

提交成功即冻结额度,任务失败或超时自动全额退回(账单里是一条退款流水)。

模型计费公式账单显示实测扣费
mini-特价版¥0.20 × seconds按秒计费:N 秒10s → ¥2.00
fast-特价版¥0.20 × seconds按秒计费:N 秒10s → ¥2.00
15s → ¥3.00
2.5-补贴版面议按次计费面议

失败自动退款。上游 5xx、45 分钟超时、或任务进入 failed → SalpX 自动退还该次冻结额度,不产生实际扣费。

fast 15 秒失败不会自动改投其它渠道重跑——直接判失败并退款。规格对不上的改投等于换了个模型还多收一份钱,所以刻意不做。

06错误处理

HTTP典型信息原因处理
404 bad response status code 404 用了 /v1/chat/completions 改用 POST /v1/videos
400 时长需在 10~15 秒之间, 收到 5 mini / fast 的 seconds 越界 只传 1015
400 必须传 duration 字段 mini / fast 没传 seconds 补上 seconds
400 reference_image_unreachable 参考图我方拉不到(预签名 / 私有 / 需鉴权的地址) 改用 multipart 或 base64 直传;报错里带图床原文
400 reference_image_too_large 参考图合计超过 10 MB 压缩后再传
400 too_many_reference_images 参考图超过 6 张 减到 6 张以内
403 token quota is not enough 令牌余额不足以冻结 确认账户额度或联系商务确认本次任务所需额度
503 No available channel 模型名拼错,或令牌分组不对 核对模型名;分组须为 default
429 capacity_exhausted 渲染队列已满 退避几分钟后重试
409 该模型今日产能已排满 fast 15 秒规格当日产能用尽 改用 10 秒,或次日再试;本次不扣费

三个 reference_image_* / too_many_reference_images 错误都发生在扣费之前:不冻结额度、不建任务、不产生账单,直接改请求重发即可。

中文模型名请确保以 UTF-8 编码发送。用 shell 变量拼 JSON 时容易被转义破坏,建议把请求体写进文件再用 --data-binary @file.json 提交。

07完整示例

提交 → 轮询 → 下载,一段可直接运行的 Python。

python
# pip install requests
import time, requests

BASE = "https://www.salpx.com/v1"
KEY  = "sk-你的令牌"
H    = {"Authorization": f"Bearer {KEY}"}

# 1. 提交(mini / fast 必须传 seconds=10 或 15)
r = requests.post(f"{BASE}/videos", headers=H, json={
    "model": "seedance-2-mini-特价版",
    "prompt": "一只蓝色果冻水母在霓虹海中缓缓游动,电影感运镜",
    "seconds": 10,
}, timeout=60)
r.raise_for_status()
task_id = r.json()["task_id"]
print("已提交:", task_id)

# 2. 轮询,最多等 45 分钟
deadline = time.time() + 45 * 60
url = None
while time.time() < deadline:
    time.sleep(45)
    d = requests.get(f"{BASE}/videos/{task_id}", headers=H, timeout=60).json()
    st = d.get("status")
    print(st, d.get("progress"), "%")
    if st == "completed":
        url = d.get("url") or d["result"]["data"][0]["url"]
        break
    if st in ("failed", "FAILURE"):
        raise RuntimeError(d.get("fail_reason") or "生成失败,已自动退款")

if not url:
    raise TimeoutError("超过 45 分钟未出片,系统将自动退款")

# 3. 下载(直链无需鉴权)
mp4 = requests.get(url, timeout=600).content
open("out.mp4", "wb").write(mp4)
print("已保存 out.mp4", len(mp4), "bytes")