01快速开始
异步任务:提交拿 task_id,轮询到 completed 后取成片。
端点别用错。本模型走 POST /v1/videos,不能用 /v1/chat/completions —— 用对话接口调会直接 404,换任何模型名都无解。
- 模型名
seedance-2-5-补贴版(含中文后缀,注意 UTF-8)- 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 分钟自动置失败并全额退款。客户端超时请设 ≥ 600 秒
02模型与价格
| 模型名 | 计费 | 时长 | 价格 | 单条花费 |
|---|---|---|---|---|
seedance-2-5-补贴版 |
按次 | 固定 30 秒 | ¥6.00 / 次 | ¥6.00 |
按次计费,不是按秒。价格就是整条片的价格,和你传什么时长无关。
时长固定 30 秒,不需要传 seconds / duration。传了也不会改变成片长度和价格。返回体里的 seconds 恒为 "30"。
成片规格:实测样片为 720×1280(720P 竖版)、video/mp4。本模型没有分辨率 / 画幅参数,不接受 resolution、size、aspect_ratio。
03提交任务
3.1 文生视频
最小请求只要 model 和 prompt 两个字段。
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": "金色麦田上空掠过一群飞鸟,逆光,慢镜头,电影感" }'
返回:
{
"task_id": "selfd:2993f67f-4eaa-461d-a146-2e1aa98b08e5",
"object": "video",
"model": "seedance-2-5-补贴版",
"status": "queued",
"progress": 0,
"seconds": "30"
}
中文模型名必须以 UTF-8 发送。用 shell 变量拼 JSON 时很容易被转义破坏。稳妥写法是把请求体写进文件,再用 --data-binary @req.json 提交(见第 08 节)。
3.2 请求字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | 固定 seedance-2-5-补贴版 |
prompt | string | 是 | 提示词,不可为空白 |
input_reference | string / string[] | 否 | 参考图,≤ 6 张、合计 ≤ 10 MB。支持 multipart 文件、base64、data:image/png;base64, 前缀,或图片 URL。不传即纯文生视频 |
images / image | string / string[] | 否 | input_reference 的等价别名,写法与限制完全相同 |
seconds / duration | — | 不需要 | 本模型固定 30 秒,传了不生效也不影响计费 |
04参考图
最多 6 张,重复图自动去重,超出报 400。
优先直接传图片内容(multipart 文件或 base64)。传 URL 也支持,但我方需要先把图下载下来再转给渲染端 —— 你的图床只要对第三方不可读,这一单就会在提交阶段被拒。
4.1 multipart 直传文件(推荐)
curl -X POST https://www.salpx.com/v1/videos \ -H "Authorization: Bearer $SALPX_KEY" \ -F "model=seedance-2-5-补贴版" \ -F "prompt=镜头缓缓推近,光影流动" \ -F "input_reference=@ref.png"
4.2 JSON 传 base64(推荐)
IMG=$(base64 -w0 ref.png) # macOS 用 base64 -i ref.png cat > req.json <<EOF { "model": "seedance-2-5-补贴版", "prompt": "镜头缓缓推近,光影流动", "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
4.3 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-5-补贴版", "prompt": "镜头缓缓推近,光影流动", "input_reference": ["https://your-cdn.com/a.jpg", "https://your-cdn.com/b.jpg"] }'
传 URL 的硬要求:地址必须能被任意第三方直接 GET 下载。对象存储的预签名地址(带 X-Amz-Signature 那种)、需要登录 / Referer / IP 白名单才能访问的地址,我方一律拉不到,提交会直接返回 400 reference_image_unreachable,并把你的图床原样返回的报错一并带出来(例如 SignatureDoesNotMatch)方便定位。
这类失败发生在扣费之前,不产生任何费用,任务也不会建。拿不准就别传 URL,用 4.1 或 4.2 的写法。
不支持首尾帧。本模型只吃参考图,first_frame / last_frame 那套写法不生效 —— 传了不报错,但成片不会按首尾帧生成。
05轮询与取片
提交后每 30 – 60 秒查一次即可,出片通常在 5 – 15 分钟。状态流转:queued → in_progress → completed 或 failed。
curl https://www.salpx.com/v1/videos/selfd:2993f67f-4eaa-461d-a146-2e1aa98b08e5 \ -H "Authorization: Bearer $SALPX_KEY"
完成后的返回:
{
"id": "selfd:2993f67f-4eaa-461d-a146-2e1aa98b08e5",
"status": "completed",
"progress": 100,
"seconds": "30",
"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 -L -o out.mp4 \ https://www.salpx.com/v1/videos/selfd:2993f67f-4eaa-461d-a146-2e1aa98b08e5/content \ -H "Authorization: Bearer $SALPX_KEY"
两种方式返回的都是 video/mp4,字节数完全一致。下载慢时把客户端超时调到 ≥ 600 秒。
06计费与退款
提交成功即冻结 ¥6.00,任务失败或超时自动全额退回(账单里是一条退款流水)。
| 计费公式 | 账单显示 | 实际扣费 |
|---|---|---|
| ¥6.00 × 1 次 | 按次计费 | ¥6.00 |
失败自动退款。上游 5xx、45 分钟超时、或任务进入 failed → SalpX 自动退还该次冻结额度,不产生实际扣费。
参考图不另收费。传 0 张和传 6 张同价。
07错误处理
| HTTP | 典型信息 | 原因 | 处理 |
|---|---|---|---|
| 404 | bad response status code 404 | 用了 /v1/chat/completions | 改用 POST /v1/videos |
| 400 | reference_image_unreachable | 参考图我方拉不到(预签名 / 私有 / 需鉴权的地址) | 改用 multipart 或 base64 直传;报错里带图床原文 |
| 400 | reference_image_too_large | 参考图合计超过 10 MB | 压缩后再传 |
| 400 | too_many_reference_images | 参考图超过 6 张 | 减到 6 张以内 |
| 400 | 生成内容未通过安全审核 | 提示词或参考图触发内容风控 | 调整提示词后重试,本次不扣费 |
| 403 | token quota is not enough | 令牌余额不足以冻结 | 账户余额需 ≥ ¥6 |
| 429 | capacity_exhausted | 渲染队列已满 | 退避几分钟后重试 |
| 503 | No available channel | 模型名拼错,或令牌分组不对 | 核对模型名;分组须为 default / 大额优惠 / 内部使用 |
三个 reference_image_* / too_many_reference_images 错误都发生在扣费之前:不冻结额度、不建任务、不产生账单,直接改请求重发即可。
08完整示例
提交 → 轮询 → 下载,一段可直接运行的 Python。
# pip install requests import time, requests BASE = "https://www.salpx.com/v1" KEY = "sk-你的令牌" H = {"Authorization": f"Bearer {KEY}"} # 1. 提交(不需要传时长,固定 30 秒) r = requests.post(f"{BASE}/videos", headers=H, json={ "model": "seedance-2-5-补贴版", "prompt": "金色麦田上空掠过一群飞鸟,逆光,慢镜头,电影感", }, 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(30) s = requests.get(f"{BASE}/videos/{task_id}", headers=H, timeout=60).json() print(s.get("status"), s.get("progress")) if s.get("status") == "completed": url = s.get("url") or s.get("video_url") break if s.get("status") == "failed": raise SystemExit("生成失败,已自动退款: " + str(s)) # 3. 下载(直链无需鉴权) if url: with requests.get(url, stream=True, timeout=600) as v: v.raise_for_status() with open("out.mp4", "wb") as f: for chunk in v.iter_content(1 << 20): f.write(chunk) print("已保存 out.mp4")
Python 的 requests 用 json= 参数会自动按 UTF-8 编码,中文模型名不会出问题。用 shell 拼字符串时才需要按 3.1 的提示走文件。