API 文档
视频生成(SeeDance 2.0)
Base URL https://hsq.cyds.site

快速开始

你将使用一个 API 令牌(形如 sk-...)通过 HTTP 调用视频生成模型。生成是异步任务:提交后返回 task_id,再通过轮询查询状态,成功后获取视频地址或从代理接口下载。

服务地址(Base URL)

你的服务方会提供一个域名(例如 https://hsq.cyds.site)。后续示例默认使用:

https://hsq.cyds.site

如果示例里出现 localhost,通常是服务端“服务器地址”尚未配置为公网域名。

鉴权

所有 API 请求都需要在请求头中带上令牌:

Authorization: Bearer sk-your_token

令牌泄露等同于余额泄露。请妥善保管,不要上传到 GitHub 或公开日志。

视频生成(Task API)

推荐使用任务接口(更稳定、适配多供应商)。主要有 3 个端点:

  • POST /v1/video/generations:提交生成任务(text2video / image2video / edit 统一入口)
  • GET /v1/video/generations/{task_id}:查询任务状态
  • GET /v1/videos/{task_id}/content:下载视频代理(可选)

1)提交任务

最小请求只需要 modelprompt。更多参数通过 metadata 传递(不同模型可用参数不同)。

curl "${BASE_URL}/v1/video/generations" \
  -H "Authorization: Bearer sk-your_token" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2-0-260128",
    "prompt": "一个宇航员在月球上行走,电影质感",
    "seconds": "5",
    "metadata": {
      "resolution": "720p",
      "ratio": "16:9",
      "watermark": false
    }
  }'

说明:seconds 可以传字符串,服务端会自动兼容。你也可以把可选参数放入 metadata

2)轮询任务状态

提交后会返回一个 task_id(形如 task_xxx)。使用它轮询:

curl "${BASE_URL}/v1/video/generations/task_xxxxxx" \
  -H "Authorization: Bearer sk-your_token"

当任务完成后,响应里通常会包含:

  • statusqueued / running / succeeded / failed
  • url:成功时的视频地址
  • usage.total_tokens:成功时用于计费的 token 总量

3)下载视频(可选)

如果你希望始终从你的服务域名下载视频(不直接暴露上游地址),可以使用代理下载:

curl -L "${BASE_URL}/v1/videos/task_xxxxxx/content" \
  -H "Authorization: Bearer sk-your_token" \
  -o out.mp4

计费规则(预扣费 + 多退少补)

视频生成属于异步任务。提交任务时系统会先进行一次预扣费;任务完成后会根据 usage.total_tokens 进行最终结算,多退少补;任务失败则自动退款。

计费流程

  1. 提交任务:系统先预扣一笔额度,用于防止长任务在余额不足时无法结算。
  2. 任务成功:返回 usage.total_tokens 后,系统按实际消耗重新计算应扣额度,与预扣差额进行补扣或退还。
  3. 任务失败:系统会将预扣额度退还到你的余额。

不同类型的任务(例如是否携带参考视频)会影响最终结算的计费系数,但这些规则由系统自动处理,调用方无需自行计算价格。

客户端如何传“参考视频输入”

在提交任务时,将参考视频放入 metadata.content,并包含 video_url 条目即可被识别为“含视频输入”:

curl "${BASE_URL}/v1/video/generations" \
  -H "Authorization: Bearer sk-your_token" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2-0-260128",
    "prompt": "把这个视频改成赛博朋克风格",
    "metadata": {
      "content": [
        { "type": "video_url", "video_url": { "url": "https://example.com/input.mp4" } }
      ]
    }
  }'

如果没有 metadata.content 或其中没有 video_url,将被识别为不含参考视频输入的任务类型。最终扣费以任务完成时的 usage.total_tokens 结算为准。

OpenAI 兼容视频接口(可选)

如果你的客户端已经按 OpenAI Video API 路径实现,也可以使用:

  • POST /v1/videos:创建视频任务
  • GET /v1/videos/{task_id}:查询视频任务
curl "${BASE_URL}/v1/videos" \
  -H "Authorization: Bearer sk-your_token" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2-0-260128",
    "prompt": "一个宇航员在月球上行走,电影质感"
  }'

常见错误

401 未授权

  • 未携带 Authorization: Bearer ...
  • 令牌被禁用或删除
  • 令牌无调用权限

额度不足

  • 余额不足,联系管理员线下充值后后台加额

排障建议

  • 确认 Base URL 正确且为公网域名。
  • 确认令牌“状态为启用”,并允许调用对应模型。
  • 提交任务后先用 GET /v1/video/generations/{task_id} 查状态,成功后再取视频。