Skip to content

Seedance Asset API

如果你的接入需要上传可复用媒体、管理素材组,或者等待素材进入可用状态,再用于 Seedance 视频请求,请看这一页。

核心接口与默认值

接口

接口方法说明
/open/CreateAssetGroupPOST创建素材组
/open/ListAssetGroupsPOST查询素材组列表
/open/GetAssetGroupPOST查询单个素材组
/open/UpdateAssetGroupPOST更新素材组元数据
/open/CreateAssetPOST通过公网 URL 创建素材
/open/ListAssetsPOST查询素材列表
/open/GetAssetPOST查询单个素材
/open/UpdateAssetPOST更新素材名称
/open/DeleteAssetPOST删除单个素材

默认值

字段默认值
GroupTypeAIGC
AssetTypeImage
资产创建路由用 modelseedance-2.0
PageNumber1
PageSize20
PageSize 最大值100

通用返回结构

成功返回

json
{
  "ResponseMetadata": {
    "RequestId": "req-...",
    "Action": "CreateAsset",
    "Version": "2024-01-01",
    "Service": "ark",
    "Region": "ap-southeast-1"
  },
  "Result": {
    "Id": "asset-20260414171639-5vbmg"
  }
}

失败返回

json
{
  "error": {
    "type": "invalid_request",
    "message": "resource not found"
  }
}

AssetGroup 操作

操作必填字段说明
CreateAssetGroupName创建逻辑素材组。可选 model 用于路由到兼容的素材池。
ListAssetGroups查询可见素材组
GetAssetGroupId查询单个素材组
UpdateAssetGroupId更新名称或描述

Asset 操作

操作必填字段说明
CreateAssetGroupIdURL通过公网 URL 创建素材。可选 model 用于路由到兼容的素材池。
ListAssets按过滤条件查询素材
GetAssetId查询单个素材
UpdateAssetId更新素材名称
DeleteAssetId删除单个素材

推荐工作流

  1. 先调用 CreateAssetGroup
  2. 再调用 CreateAsset
  3. 轮询 GetAsset,直到 Result.Status = "Active"
  4. Seedance Video API 中配合兼容模型使用 asset://<ASSET_ID>
  5. 当素材不应继续可见或可用时,调用 DeleteAsset

资产创建时的模型路由

CreateAssetGroupCreateAsset 都支持可选的 model 字段。建议填写后续 Seedance 视频请求中要使用的同一个公开模型名。

model 取值推荐用法
doubao-seedance-2-0-260128将素材创建路由到国内 Seedance 2.0 兼容素材池
seedance-2.0将素材创建路由到海外 Seedance 2.0 兼容素材池
seedance-2.0-fast将素材创建路由到海外 Seedance 2.0 Fast 兼容素材池

如果省略 model,Exchange Token 会按 seedance-2.0 进行资产创建路由。创建素材和后续视频生成使用同一个模型 family,可以减少跨素材池准备。如果后续视频请求路由到了另一个兼容素材池,Exchange Token 仍可以在需要时准备素材副本。

和国内 2.0 模型一起使用

/open/CreateAssetGroup/open/CreateAsset 是 Exchange Token 为 Seedance 提供的素材网关接口。它们用于把你的公网媒体 URL 注册成一个可复用素材,然后在国内 Seedance 2.0 兼容模型 doubao-seedance-2-0-260128 的视频请求中引用。

注意:

  • CreateAsset 不是 multipart 上传接口,当前传的是 URL 字段
  • URL 必须是上游服务可访问的稳定公网 HTTPS 地址
  • 视频请求里不要直接传 provider 自己的素材 ID,要使用 CreateAsset 返回的 Result.Id
  • 只有当 GetAsset 返回 Result.Status = "Active" 后,才能在视频任务中使用
  • DeleteAsset 成功后,请停止使用该素材 ID。GetAssetListAssets 和新的视频任务都会把它视为不可用。

在视频任务中引用素材时,把返回的素材 ID 写成:

json
{
  "type": "image_url",
  "image_url": {
    "url": "asset://<ASSET_ID>"
  },
  "role": "first_frame"
}

国内 2.0 完整请求中的模型名通常写:

json
{
  "model": "doubao-seedance-2-0-260128"
}

示例请求

运行下面示例前,建议先设置:

bash
export ET_BASE='https://api.exchangetoken.ai'
export ET_TOKEN='sk-xxxxxx'
export GROUP_ID='group-xxxxxxxx'
export ASSET_ID='asset-xxxxxxxx'
export IMAGE_URL='https://example.com/demo-image.jpg'
export SEEDANCE_MODEL='doubao-seedance-2-0-260128'

创建素材组

bash
curl -sS "$ET_BASE/open/CreateAssetGroup" \
  -H "Authorization: Bearer $ET_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model":"doubao-seedance-2-0-260128",
    "Name":"demo-group",
    "Description":"seedance asset demo group",
    "GroupType":"AIGC"
  }'

创建素材

bash
curl -sS "$ET_BASE/open/CreateAsset" \
  -H "Authorization: Bearer $ET_TOKEN" \
  -H "Content-Type: application/json" \
  -d "{
    \"model\":\"$SEEDANCE_MODEL\",
    \"GroupId\":\"$GROUP_ID\",
    \"URL\":\"$IMAGE_URL\",
    \"Name\":\"demo-asset-1\",
    \"AssetType\":\"Image\"
  }"

轮询到素材可用

bash
while true; do
  resp="$(curl -sS "$ET_BASE/open/GetAsset" \
    -H "Authorization: Bearer $ET_TOKEN" \
    -H "Content-Type: application/json" \
    -d "{\"Id\":\"$ASSET_ID\"}")"

  status="$(printf '%s' "$resp" | jq -r '.Result.Status // empty')"
  echo "$resp"

  if [ "$status" = "Active" ]; then
    break
  fi
  if [ "$status" = "Failed" ]; then
    echo "asset preprocess failed"
    break
  fi
  sleep 5
done

删除素材

bash
curl -sS "$ET_BASE/open/DeleteAsset" \
  -H "Authorization: Bearer $ET_TOKEN" \
  -H "Content-Type: application/json" \
  -d "{
    \"Id\":\"$ASSET_ID\"
  }"

成功返回:

json
{
  "ResponseMetadata": {
    "RequestId": "req-...",
    "Action": "DeleteAsset",
    "Version": "2024-01-01",
    "Service": "ark",
    "Region": "ap-southeast-1"
  },
  "Result": {}
}

DeleteAsset 会让素材在 Exchange Token 内立即不可用。调用成功后:

  • 对同一个 Id 调用 GetAsset 会返回 404
  • ListAssets 不再返回该素材
  • 新的视频请求如果继续引用 asset://<ASSET_ID> 会被拒绝
  • 后台清理可能会在响应后继续进行

200 返回表示删除请求已被接受,且素材不再可用。当前不提供删除进度查询接口。对同一个素材重复调用 DeleteAsset 可能返回 200404,但素材都会保持不可用。

错误参考

HTTP 状态码error.type常见含义
400invalid_request参数非法
401unauthorizedAPI Key 缺失或无效
403forbidden无权限
404invalid_request资源不存在
429rate_limited请求过快
502upstream_error上游抓取或处理失败
503no_channel素材渠道暂不可用

接入提示

  • CreateAsset.URL 必须是上游服务可访问的稳定公网 HTTPS 地址
  • ASSET_ID 是该接口返回的 Exchange Token 稳定素材 ID。视频请求中使用 asset://<ASSET_ID>,不要依赖 provider 自己的素材 ID。
  • GetAsset / ListAssets 可能返回临时签名 URL,建议保存稳定 ID,不要把完整 URL 当缓存主键
  • 如果源站限流或被拦截,素材预处理可能失败
  • 当素材进入 Active 后,就可以在兼容的 Seedance 视频任务里使用 asset://<ASSET_ID> 引用
  • 如果兼容 Seedance 池需要额外的 provider 侧素材准备,Exchange Token 会在任务提交时处理。你仍然使用同一个 Exchange Token 素材 ID。
  • DeleteAsset 只删除素材,不支持 DeleteAssetGroup
  • 删除后的素材不会再出现在正常素材查询中,也不能用于新的视频任务。

相关页面