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 操作 ​

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

推荐工作流 ​

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

资产创建时的模型路由 ​

CreateAssetGroup 和 CreateAsset 都支持可选的 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。GetAsset、ListAssets 和新的视频任务都会把它视为不可用。

在视频任务中引用素材时,把返回的素材 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 可能返回 200 或 404,但素材都会保持不可用。

错误参考 ​

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。
  • 删除后的素材不会再出现在正常素材查询中,也不能用于新的视频任务。

相关页面 ​