Seedance 3.0 开发者 API / v1

Seedance 2.5,
接入您的产品。

通过一个 API,将文字、图片和参考素材变成视频。沿用 Seedance 3.0 账户积分,从提交任务到获取结果,让您的应用直接拥有视频生成能力。

账户积分通用异步视频任务请求幂等保护
POST /api/v1/videos
{
  "model": "seedance-2.5",
  "mode": "text-to-video",
  "prompt": "A paper boat drifting into the morning light",
  "duration": 5,
  "resolution": "720p",
  "aspectRatio": "16:9"
}
您的密钥,您的积分,您的应用。
01 / 开始接入

用几次请求,生成第一个视频。

将密钥保存为服务端环境变量 SEADANCE_API_KEY。为本次视频设置唯一的 SEADANCE_REQUEST_KEY(可用 uuidgen 生成),重试时保留此值,并确保账户积分充足。下面示例将预扣 350 积分,生成一个 5 秒 720p 视频。保存响应中的 id,以便查询生成结果。

终端
export SEADANCE_API_KEY="sd_live_your_key"
# Keep this value for retries; choose a new value for a new video.
export SEADANCE_REQUEST_KEY="${SEADANCE_REQUEST_KEY:-$(uuidgen)}"

curl --fail-with-body "https://seedance3ai.dev/api/v1/videos" \
  -H "Authorization: Bearer $SEADANCE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $SEADANCE_REQUEST_KEY" \
  --data '{
  "model": "seedance-2.5",
  "mode": "text-to-video",
  "prompt": "A paper boat floating through a sunlit stream, gentle camera movement",
  "aspectRatio": "16:9",
  "resolution": "720p",
  "duration": 5
}'

本文档不会自动发起生成;发送创建请求会使用您的账户积分。

在服务端完成身份验证。

每次 API 调用都需携带 Authorization: Bearer sd_live_…。不要将密钥放入浏览器、移动端、公开仓库或前端代码。完整密钥仅展示一次,可随时在 API 控制台撤销。

接口基础地址https://seedance3ai.dev/api/v1

默认密钥权限:videos:write 用于上传和生成;videos:read 用于模型信息与任务查询;account:read 用于积分查询。账户的访问开关和限额对所有密钥共同生效。

创建视频任务。

POST/api/v1/videos

使用 Content-Type: application/json,为每次计划生成提供唯一 Idempotency-Key。服务端接收上游任务可能需要一些时间;连接超时后,请使用相同请求体和相同幂等键重试。HTTP 202 表示任务已接收,不代表视频已生成。Idempotency-Key 长度为 1–128 个可打印 ASCII 字符,不含空格。

参数取值和要求
modelstringseedance-2.5

必填。当前 API 支持 Seedance 2.5。

modestringtext-to-video | image-to-video | reference-to-video

必填。素材字段必须与所选模式一致,不可混用。

promptstring3–30,000 字符

必填。描述画面、运动和声音。

durationinteger4, 5, 6, 8, 10, 12, 15, 20, 25, 29, 30

必填,单位为秒。视频编辑按源视频时长生成,计费时向上取整至秒。

resolutionstring480p | 720p | 1080p

必填。分辨率决定积分单价。

aspectRatiostring1:1 | 4:3 | 3:4 | 16:9 | 9:16 | 21:9

必填。图生视频沿用首帧比例。

firstFrameUrl / lastFrameUrlstring已上传素材的 publicObjectUrl

图生视频必须提供首帧,可选提供尾帧。

referenceImageUrlsstring[]最多 30 张图片

用于参考生成。请先通过当前账户上传每个素材。

referenceVideoUrls / referenceAudioUrlsstring[]最多 10 个视频 / 10 个音频

视频和音频各自总时长不超过 30 秒。生成前由服务端校验素材。

referenceTaskTypestringreference | edit | extend

可选,默认为 reference。edit 和 extend 必须使用 reference-to-video,且恰好提供一个源视频。

generateAudiobooleantrue

可省略。Seedance 2.5 默认生成原生音频,不接受 false。

batchCountinteger1

可省略。每次请求生成一个视频。

这些字段支持文生视频、首尾帧、多模态参考、视频编辑和延长。当前可用能力和价格以 GET /models 返回结果为准。

图生视频请求示例
request.json
{
  "model": "seedance-2.5",
  "mode": "image-to-video",
  "prompt": "A paper boat floating through a sunlit stream, gentle camera movement",
  "aspectRatio": "16:9",
  "resolution": "720p",
  "duration": 5,
  "firstFrameUrl": "YOUR_UPLOADED_PUBLIC_OBJECT_URL"
}
参考生成请求示例
request.json
{
  "model": "seedance-2.5",
  "mode": "reference-to-video",
  "prompt": "A paper boat floating through a sunlit stream, gentle camera movement",
  "aspectRatio": "16:9",
  "resolution": "720p",
  "duration": 5,
  "referenceImageUrls": [
    "YOUR_UPLOADED_IMAGE_URL"
  ],
  "referenceVideoUrls": [
    "YOUR_UPLOADED_VIDEO_URL"
  ]
}
使用您的参考素材

先上传,再通过 URL 使用素材。

向 POST /uploads 提交 fileName、contentType、size(字节数)和 kind(image、video 或 audio),在 expiresAt 前按 requiredHeaders 将原始文件通过 PUT 上传到 uploadUrl。上传成功后,在生成请求中使用 publicObjectUrl。素材必须属于当前账户,不接受任意外部 URL 或 base64 输入。

upload.mjs
// Node.js 20+ · upload once, then use publicObjectUrl
import { readFile } from "node:fs/promises";

const bytes = await readFile("./first-frame.jpg");
const signed = await fetch("https://seedance3ai.dev/api/v1/uploads", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.SEADANCE_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    fileName: "first-frame.jpg", contentType: "image/jpeg",
    size: bytes.length, kind: "image",
  }),
});
const upload = await signed.json();
if (!signed.ok) throw new Error(JSON.stringify(upload));
const stored = await fetch(upload.uploadUrl, {
  method: "PUT", headers: upload.requiredHeaders, body: bytes,
});
if (!stored.ok) throw new Error("Upload failed");
console.log(upload.publicObjectUrl);
// Use this URL as firstFrameUrl in an image-to-video request.

申报的文件大小与类型必须和实际上传内容一致。上传地址过期后需重新申请。生成前会校验素材时长、尺寸和格式。

查询任务,直到生成完成。

通过 GET /videos/:id 获取任务状态。建议每 5–10 秒查询一次,遇到 succeeded 或 failed 时停止;如有 Retry-After,请按提示延迟重试。只能查询当前账户通过 API 创建的任务。当前对接方式为轮询。

GET /api/v1/videos/:id
curl --fail-with-body "https://seedance3ai.dev/api/v1/videos/TASK_ID" \
  -H "Authorization: Bearer $SEADANCE_API_KEY"
queuedprocessingsucceeded / failed
成功任务示例
{
  "id": "a1b2c3d4-1234-4567-8901-abcdef123456",
  "status": "succeeded",
  "credits_reserved": 350,
  "created_at": "2026-10-27T00:00:00.000Z",
  "output": {
    "url": "https://your-result-host.example/video.mp4"
  },
  "error": null,
  "refund_status": "not_applicable"
}

视频生成前 output 为 null;任务失败时返回 error,并通过 refund_status 查看积分退还状态。成功后请及时下载结果。删除视频不会重置生成请求:重放原幂等键(Idempotency-Key)将返回 410 video_deleted,不会再次生成。

同一账户,积分通用

接入前,先了解积分费用。

API 生成与网站共用账户积分和 Seedance 2.5 单价。请求被接收时预扣积分,生成失败后退回一次性积分余额;任务创建前的参数校验失败不会生成计费视频。

480p

30积分 / 输出秒

+ 20 积分 / 参考视频秒

720p

70积分 / 输出秒

+ 50 积分 / 参考视频秒

1080p

160积分 / 输出秒

+ 90 积分 / 参考视频秒

费用 = 输出时长 × 输出单价 + 参考视频时长 × 参考单价。参考视频由服务端测量,总时长向下取整至秒计费。原生音频已包含在内。例如,5 秒 720p 视频需要 350 积分;若再使用 5 秒参考视频,则需要 600 积分。

查询模型、价格和积分余额
curl --fail-with-body "https://seedance3ai.dev/api/v1/models" \
  -H "Authorization: Bearer $SEADANCE_API_KEY"

curl --fail-with-body "https://seedance3ai.dev/api/v1/credits" \
  -H "Authorization: Bearer $SEADANCE_API_KEY"

API 控制台可查看余额、调用记录和账户限额。请使用同一个账户通过网站价格页补充积分,没有独立的 API 余额或 API 充值接口。可用积分充足即可调用,无需额外订阅。订阅到期和一次性积分规则与网站使用保持一致。

补充积分不会提高 API 请求频率、并发数或每日额度,也不会自动恢复已停用的账户。每日额度按累计预扣积分计算,失败退款不会恢复当日额度,于 UTC 00:00 重置。如需提高限额,请联系支持。

查看套餐与补充积分

安全重试,避免重复计费。

每个计划生成的视频使用一个 Idempotency-Key,结果明确前请一直保留它与原始请求体。新的幂等键代表新的生成请求。错误响应包含 error.code、error.message 和 request_id;联系支持时请提供请求 ID。

HTTP含义处理方式
400请求参数错误根据错误信息修改字段和素材后重试。
401密钥无效检查 Bearer 请求头,已撤销的密钥不可继续使用。
402积分不足为同一个 Seedance 3.0 账户补充积分。
403访问受限API 已停用或密钥缺少所需权限。
404任务不存在请使用当前账户通过 API 创建的任务 ID。
409请求冲突request_in_progress 表示正在提交,请等待后用相同请求体和幂等键重试;idempotency_conflict 表示同一幂等键被用于不同请求体;request_expired 或 request_previously_failed 表示未提交视频,解决提示的问题后可用新键重新提交。
410视频已删除video_deleted 表示原请求已处理,但视频已被删除。原幂等键不能再次生成,请停止重试;仅在您明确需要重新生成并付费时使用新键。
429账户额度超限按 Retry-After 延迟重试。频率、并发和每日积分额度由账户所有密钥共享,每日预算于 UTC 00:00 重置。
500 / 503服务暂时异常保留 Idempotency-Key,并重试原请求。结果不明确时不要更换幂等键重复提交。

提交返回 request_in_progress 时,请等待后重试同一请求。不要为了绕过超时而更换幂等键。失败任务若积分仍未退回,请保留任务 ID 并联系支持。

开始接入您的应用。

创建密钥,开始构建您的第一个集成。

打开 API 控制台