Seedance Asset API
如果你的接入需要上传可复用媒体、管理素材组,或者等待素材进入可用状态,再用于 Seedance 视频请求,请看这一页。
核心接口与默认值
接口
| 接口 | 方法 | 说明 |
|---|---|---|
/open/CreateAssetGroup | POST | 创建素材组 |
/open/ListAssetGroups | POST | 查询素材组列表 |
/open/GetAssetGroup | POST | 查询单个素材组 |
/open/UpdateAssetGroup | POST | 更新素材组元数据 |
/open/CreateAsset | POST | 通过公网 URL 创建素材 |
/open/ListAssets | POST | 查询素材列表 |
/open/GetAsset | POST | 查询单个素材 |
/open/UpdateAsset | POST | 更新素材名称 |
/open/DeleteAsset | POST | 删除单个素材 |
默认值
| 字段 | 默认值 |
|---|---|
GroupType | AIGC |
AssetType | Image |
资产创建路由用 model | seedance-2.0 |
PageNumber | 1 |
PageSize | 20 |
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 操作
| 操作 | 必填字段 | 说明 |
|---|---|---|
CreateAssetGroup | Name | 创建逻辑素材组。可选 model 用于路由到兼容的素材池。 |
ListAssetGroups | 无 | 查询可见素材组 |
GetAssetGroup | Id | 查询单个素材组 |
UpdateAssetGroup | Id | 更新名称或描述 |
Asset 操作
| 操作 | 必填字段 | 说明 |
|---|---|---|
CreateAsset | GroupId、URL | 通过公网 URL 创建素材。可选 model 用于路由到兼容的素材池。 |
ListAssets | 无 | 按过滤条件查询素材 |
GetAsset | Id | 查询单个素材 |
UpdateAsset | Id | 更新素材名称 |
DeleteAsset | Id | 删除单个素材 |
推荐工作流
- 先调用
CreateAssetGroup - 再调用
CreateAsset - 轮询
GetAsset,直到Result.Status = "Active" - 在 Seedance Video API 中配合兼容模型使用
asset://<ASSET_ID> - 当素材不应继续可见或可用时,调用
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 | 常见含义 |
|---|---|---|
400 | invalid_request | 参数非法 |
401 | unauthorized | API Key 缺失或无效 |
403 | forbidden | 无权限 |
404 | invalid_request | 资源不存在 |
429 | rate_limited | 请求过快 |
502 | upstream_error | 上游抓取或处理失败 |
503 | no_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。- 删除后的素材不会再出现在正常素材查询中,也不能用于新的视频任务。
