Seedance 2.5 API

图片输入

上传、确认并使用账户拥有的图片。

图片必须先上传并在同一账户下确认,不能直接使用外部 URL、base64 或 data URL。支持 JPEG、PNG、WebP,每个文件最多 30 MiB,每次准备上传最多 5 个文件。

1. 准备上传

curl --fail-with-body "$SEEDANCE_BASE_URL/uploads" \
  -H "Authorization: Bearer $SEEDANCE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"files":[{"name":"reference.png","type":"image/png","size":12345}]}'

将 12345 替换为真实文件字节数。响应的 data[] 包含 asset_id、upload_url 和 upload_headers。

2. PUT 文件内容

在 5 分钟内将准确文件内容 PUT 到 upload_url,设置返回的全部 upload_headers,包括 Content-Length。不要向上传链接发送 API Bearer 密钥,不要使用 multipart/form-data 包装。

3. 确认上传

curl --fail-with-body "$SEEDANCE_BASE_URL/uploads/complete" \
  -H "Authorization: Bearer $SEEDANCE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"asset_ids":["RETURNED_ASSET_ID"]}'

使用确认响应的 data[].url 作为生成输入。生成前会验证归属、就绪状态、有效期和模型限制。

4. 使用图片生成

{
  "model": "seedance-2.5-lite",
  "mode": "image-to-video",
  "prompt": "The subject slowly turns toward the camera.",
  "inputs": [
    {
      "type": "image",
      "url": "URL_FROM_UPLOAD_COMPLETE"
    }
  ],
  "parameters": {
    "duration_seconds": 8,
    "resolution": "720p",
    "aspect_ratio": "16:9",
    "image_mode": "first-frame"
  },
  "max_cost_credits": 80
}

替换 URL_FROM_UPLOAD_COMPLETE,先报价,再携带幂等标识将请求体 POST 到 /videos。图生图使用图片模型、image-to-image 和 /images,不设置视频时长或 image_mode。