主题
c/seedance 视频生成(按秒计费)
星算云 c/seedance 视频网关挂载于 /api/v3,对外提供 c/seedance 系列模型(按秒计费)。请求体与响应体沿用上游原生格式(扁平对象)原样透传,平台仅做鉴权、模型校验与按秒计费;鉴权用 Authorization: Bearer xsk_...。
与 Seedance(火山兼容)、k/seedance(按秒计费)、s/seedance(按秒计费)、z/seedance(按秒计费) 区别:本网关只接 以
c/seedance开头且按秒计费 的模型;火山系(token 计费)模型请走POST /api/v3/contents/generations/tasks,k/seedance模型请走POST /api/v3/videos/generations/tasks,s/seedance模型请走POST /api/v3/s/videos/generations/tasks,z/seedance模型请走POST /api/v3/z/videos/generations/tasks。
基础信息
| 项目 | 内容 |
|---|---|
| Base URL | https://xingsuan.cloud(平台地址) |
| 创建任务 | POST /api/v3/c/videos/generations/tasks(成功回 202) |
| 查询任务 | GET /api/v3/c/videos/generations/tasks/{task_id} |
| Content-Type | application/json |
| 鉴权 Header | Authorization: Bearer xsk_...(平台 API Key) |
API Key 安全
只在服务端保存 API Key,不要放入浏览器、公开仓库或客户端安装包。
官方格式入口(可选)
c/seedance 按秒模型也可经 POST /api/v3/contents/generations/tasks(Seedance 官方格式)调用:创建回 202、usage 恒 null、duration 必填(整数 [4,30],不支持 -1)、content 必填。计费秒数 = 查询响应回报的 billedSeconds(与本端点同口径,含视频参考时为「参考 + 输出时长」);duration 仅在响应未回报秒数时兜底。详见 Seedance(火山兼容) 的「按秒模型官方格式入口」。
模型
| 模型代码 | 分辨率 | 适用场景 |
|---|---|---|
c/seedance-2.0 | 480p、720p、1080p、4k | 高质量生成,支持 4K |
c/ 前缀用于固定选择 C 渠道。平台以请求体 model 为准。
计费
按「计费秒数 × 分辨率·是否含视频参考单价」计费,单位元/秒,以平台模型配置价格与 API Key 折扣为准,从账户钱包实时扣减。任务失败不收取费用。
| 分辨率 | 无视频参考 | 含视频参考 |
|---|---|---|
480p | 0.460000 | 0.280000 |
720p | 1.000000 | 0.610000 |
1080p | 2.480000 | 1.510000 |
4k | 5.060000 | 3.110000 |
计费秒数由平台按以下规则计算:
- 未用视频参考(含纯图片/音频参考):计费秒数 = 生成时长,用「无视频参考」单价。
- 使用视频参考:计费秒数 = 所有参考视频总时长 + 生成时长,用「含视频参考」单价。
- 最终费用 = 计费秒数 × 对应单价 × 账户折扣。
示例(720p,无折扣):
- 生成 5 秒、无视频参考:
5 × 1.00 = 5.00元。 - 生成 5 秒、仅图片参考:
5 × 1.00 = 5.00元。 - 生成 5 秒、参考视频总长 6 秒:
(5 + 6) × 0.61 = 6.71元。
创建任务
POST /api/v3/c/videos/generations/tasks
bash
API_BASE=https://xingsuan.cloud
curl "$API_BASE/api/v3/c/videos/generations/tasks" \
-H "Authorization: Bearer $XSK_KEY" \
-H "content-type: application/json" \
-d '{
"model": "c/seedance-2.0",
"prompt": "清晨山路上,一辆黑色电动车沿湿润弯道驶过,远处云雾翻涌,真实电影摄影风格",
"duration": 5,
"resolution": "1080p",
"ratio": "16:9",
"generate_audio": true,
"watermark": false
}'python
import requests
API_BASE = "https://xingsuan.cloud"
resp = requests.post(
f"{API_BASE}/api/v3/c/videos/generations/tasks",
headers={"Authorization": f"Bearer {XSK_KEY}"},
json={
"model": "c/seedance-2.0",
"prompt": "清晨山路上,一辆黑色电动车沿湿润弯道驶过,远处云雾翻涌,真实电影摄影风格",
"duration": 5,
"resolution": "1080p",
"ratio": "16:9",
"generate_audio": True,
"watermark": False,
},
)
data = resp.json()
print(data["task_id"]) # 任务 ID,用于查询请求参数
| 参数 | 位置 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
Authorization | Header | 是 | Bearer xsk_... | |
model | Body | 是 | c/seedance-2.0 | |
prompt | Body | 是 | 视频生成提示词,不能为空 | |
duration | Body | 否 | 4 | 生成时长秒 [4,15](可不传) |
resolution | Body | 否 | 480p | 480p / 720p / 1080p / 4k |
ratio | Body | 否 | 16:9 | 16:9 / 4:3 / 1:1 / 3:4 / 9:16 / 21:9 |
references | Body | 否 | [] | 参考素材数组,最多 12 个,见参考素材 |
generate_audio | Body | 否 | true | 是否生成同步音频 |
watermark | Body | 否 | false | 是否添加水印 |
创建响应
创建成功返回 HTTP 202(任务已接收,异步处理),响应为扁平对象:
json
{
"task_id": "task_09e650d163219bfd056acdf0",
"status": "running",
"model": "c/seedance-2.0",
"createdAt": "2026-07-18T03:45:20.000Z"
}保存 task_id,后续用它查询任务。
查询任务
GET /api/v3/c/videos/generations/tasks/{task_id}
bash
curl "$API_BASE/api/v3/c/videos/generations/tasks/$TASK_ID" \
-H "Authorization: Bearer $XSK_KEY"响应为扁平对象,status 表示任务状态。建议每 5~10 秒轮询一次,succeeded 与 failed 为终态。
status 取值
| status | 含义 | 是否终态 |
|---|---|---|
running | 处理中 | 否 |
succeeded | 成功,videoUrl 为视频地址 | 是 |
failed | 失败,error.message 含原因 | 是 |
运行中
json
{
"task_id": "task_09e650d163219bfd056acdf0",
"status": "running",
"model": "c/seedance-2.0",
"videoUrl": null,
"usage": null,
"error": null,
"createdAt": "2026-07-18T03:45:20.000Z",
"completedAt": null
}成功
json
{
"task_id": "task_09e650d163219bfd056acdf0",
"status": "succeeded",
"model": "c/seedance-2.0",
"videoUrl": "https://example.com/generated-video.mp4",
"usage": null,
"error": null,
"createdAt": "2026-07-18T03:45:20.000Z",
"completedAt": "2026-07-18T03:49:38.000Z"
}失败
json
{
"task_id": "task_09e650d163219bfd056acdf0",
"status": "failed",
"model": "c/seedance-2.0",
"videoUrl": null,
"usage": null,
"error": { "code": null, "message": "task failed" },
"createdAt": "2026-07-18T03:45:20.000Z",
"completedAt": "2026-07-18T03:46:12.000Z"
}视频 URL 有效期
videoUrl 可能具有有效期,请在任务成功后及时保存或下载。
参考素材
references 是对象数组,每一项字段如下:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
type | string | 是 | image、video 或 audio |
url | string | 是 | 无需登录即可访问的公网 HTTP(S) URL |
role | string | 否 | 图片对应 reference_image、视频 reference_video、音频 reference_audio;省略时按 type 自动填充 |
参考素材须为公网可直接访问的 HTTP(S) 地址;预签名 URL 有效期应覆盖素材读取与视频生成全程;不支持本地路径或需登录访问的地址。参考视频的实际媒体时长须不少于 2 秒。图片、视频、音频可在同一 references 数组中组合,总数不超过 12 个。
是否含「视频参考」决定计费单价:
references中存在type=="video"的项时用「含视频参考」价,否则用「无视频参考」价(纯图片/音频参考不切换单价)。
图片参考
json
{
"model": "c/seedance-2.0",
"prompt": "保持参考图中的人物外观,让人物在海边自然回头并微笑,真实电影镜头",
"duration": 6,
"resolution": "720p",
"ratio": "16:9",
"references": [
{ "type": "image", "url": "https://example.com/person.png", "role": "reference_image" }
]
}视频参考(用「含视频参考」价)
json
{
"model": "c/seedance-2.0",
"prompt": "参考视频中的运镜和人物动作,生成一段发生在雨夜街道的电影镜头",
"duration": 5,
"resolution": "720p",
"ratio": "16:9",
"references": [
{ "type": "video", "url": "https://example.com/action.mp4", "role": "reference_video" }
]
}音频参考
json
{
"model": "c/seedance-2.0",
"prompt": "根据参考音乐的节奏生成城市夜景剪辑,镜头切换与节拍一致",
"duration": 8,
"resolution": "1080p",
"ratio": "16:9",
"references": [
{ "type": "audio", "url": "https://example.com/music.wav", "role": "reference_audio" }
]
}错误
- 上游响应:原样透传上游扁平对象(含成功/失败状态)。
- 平台侧错误(鉴权失败 / 模型不存在 / 非
c/seedance按秒模型 / 钱包余额不足等):统一为火山风格信封{"error":{"code":"<字符串>","message":...}}。上游超时 → 504;连接错误 → 502。详见 错误码。
路由约束
本网关只接受 以 c/seedance 开头且按秒计费 的模型;若传入其他模型会返回 400 invalid_request——k/seedance 模型请改用 POST /api/v3/videos/generations/tasks,火山系(token 计费)模型请改用 POST /api/v3/contents/generations/tasks。