跳到主要内容

Seedance 2.0 素材库

素材库用于在提交 Seedance 2.0 视频任务前,准备可重复使用的图片、视频和音频。素材按 UniAll.ai 用户隔离管理;客户端只需要使用自己的 UniAll.ai API Key、本地 mat_* 素材 ID,以及接口返回的 asset:// URI。

本文档对应 2026 年 7 月 29 日更新的公开调用契约。

概览

最短接入流程如下:

  1. 使用公网 HTTP(S) URL 和 Idempotency-Key 创建素材。
  2. 使用返回的 mat_* ID 查询,直到 status 变为 available
  3. uri 字段读取 asset:// URI。
  4. 将 URI 放入 Seedance 请求对应的结构化图片、视频或音频字段。
  5. 不再使用时主动删除,或等待素材自动到期。

当前版本只接受公网可访问的 HTTP(S) URL,不支持直接上传文件。

Base URL 与接口

本文所有示例使用以下 Base URL:

https://api.uniall.ai
操作接口结果
创建素材POST /v1/materials启动处理并返回本地 mat_* ID。
查询素材GET /v1/materials/{material_id}返回当前状态;可用后返回素材 URI。
列出素材GET /v1/materials返回当前用户可见的素材。
删除素材DELETE /v1/materials/{material_id}取消或删除素材工作流。

鉴权与幂等

素材接口与视频接口使用同一个 UniAll.ai API Key:

Authorization: Bearer sk-***
Content-Type: application/json

创建素材还必须携带幂等键:

Idempotency-Key: material-order-20260729-0001

幂等键必须包含 1 到 200 个可见 ASCII 字符,不能包含空格或控制字符。

  • 相同用户使用相同幂等键重试同一个规范化请求时,会返回同一个本地素材工作流。
  • 相同幂等键对应不同请求时,返回 material_idempotency_conflict
  • 网络超时或结果不确定时,必须使用原键重试,不要生成新键。
  • 确实要创建一份新素材时,使用新的幂等键。

输入 URL 要求

素材源 URL 必须满足:

  • 使用 http://https://
  • 在素材处理期间保持公网直连;
  • 不依赖登录、Cookie、浏览器状态、额外请求头或内网;
  • 返回与 type 一致的图片、视频或音频;
  • 在素材进入终态前保持可访问。

快速开始

1. 创建素材

curl -X POST "https://api.uniall.ai/v1/materials" \
-H "Authorization: Bearer sk-***" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: material-order-20260729-0001" \
-d '{
"url": "https://cdn.example.com/product.png",
"type": "image",
"name": "商品参考图"
}'

接口固定返回 HTTP 202 和本地素材记录:

{
"id": "mat_xxxxxxxxxxxxx",
"object": "material",
"name": "商品参考图",
"type": "image",
"status": "processing",
"uri": null,
"preview_url": null,
"created_at": "2026-07-29T10:00:00Z",
"available_at": null,
"expires_at": null
}

2. 等待素材可用

curl "https://api.uniall.ai/v1/materials/mat_xxxxxxxxxxxxx" \
-H "Authorization: Bearer sk-***"

建议每 3 到 5 秒查询一次。只有 statusavailable 时才能使用 uri

{
"id": "mat_xxxxxxxxxxxxx",
"object": "material",
"name": "商品参考图",
"type": "image",
"status": "available",
"uri": "asset://asset-xxxxxxxxxxxxx",
"preview_url": "https://example.com/short-lived-preview.jpg",
"created_at": "2026-07-29T10:00:00Z",
"available_at": "2026-07-29T10:01:00Z",
"expires_at": "2026-07-29T12:01:00Z"
}

3. 在 Seedance 中使用 URI

将接口返回的 uri 放入对应的结构化媒体字段:

curl -X POST "https://api.uniall.ai/v1/videos" \
-H "Authorization: Bearer sk-***" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance2.0",
"resolution": "720p",
"duration": 6,
"content": [
{
"type": "text",
"text": "保持产品外观一致,使用缓慢的电影感镜头运动。"
},
{
"type": "image_url",
"image_url": {
"url": "asset://asset-xxxxxxxxxxxxx"
},
"role": "reference_image"
}
]
}'

不要把 asset:// URI 写入 prompt 或其他普通文本字段。UniAll.ai 会在提交生成前校验用户归属、状态和有效期;未知、已过期、已删除或属于其他用户的素材都会被拒绝。普通 HTTP(S) 媒体输入继续按系列指南中的规则使用。

创建素材

POST /v1/materials

请求参数

参数类型必填说明
urlstring公网 HTTP(S) 图片、视频或音频 URL。
typestringimagevideoaudio
namestring用户可见的素材名称。
real_personobject真人图片或视频使用的授权声明和回跳配置。
real_person.consent_confirmedboolean使用 real_person 时必填必须为 JSON 布尔值 true,表示接入方已经单独取得真人同意。
real_person.callback_urlstring使用 real_person 时必填真人认证完成后的浏览器回跳地址;生产环境必须使用 HTTPS。

真人素材

真人图片和真人视频必须明确声明已取得授权,并由真人本人完成浏览器活体认证。真人音频暂不支持。

curl -X POST "https://api.uniall.ai/v1/materials" \
-H "Authorization: Bearer sk-***" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: real-person-material-20260729-0001" \
-d '{
"url": "https://cdn.example.com/person.jpg",
"type": "image",
"name": "已授权真人头像",
"real_person": {
"consent_confirmed": true,
"callback_url": "https://client.example.com/material-complete"
}
}'

HTTP 202 可能返回 verification_pending 和临时 verification_url

{
"id": "mat_xxxxxxxxxxxxx",
"object": "material",
"name": "已授权真人头像",
"type": "image",
"status": "verification_pending",
"uri": null,
"preview_url": null,
"verification_url": "https://example.com/temporary-h5-token",
"created_at": "2026-07-29T10:00:00Z",
"available_at": null,
"expires_at": null,
"verification_expires_at": "2026-07-29T10:30:00Z"
}

让真人本人在浏览器中打开 verification_url 并完成 H5 活体认证。认证成功后,UniAll.ai 会在原工作流中自动提交实际素材,不需要再次调用 POST /v1/materials

浏览器随后会跳转到 real_person.callback_url,并且只附加以下查询参数:

material_id=mat_xxxxxxxxxxxxx&material_status=processing

回跳时的状态可能是 creatingprocessingavailable 或认证失败状态。回跳只表示已收到认证结果,不代表素材一定已经可用;客户端仍需继续查询素材详情。即使浏览器回跳丢失,后台恢复流程也会继续推进工作流。

verification_url 只会出现在创建响应或该请求的幂等重放响应中。查询、列表和删除响应都不会返回它。

查询素材

GET /v1/materials/{material_id}

只有当前 API Key 所属用户可以查询该素材。响应不会暴露原始输入 URL、真人认证标识、内部素材 ID、内部路由信息、凭证、H5 临时令牌或回调校验状态。

素材目前在变为可用后保留两小时。到达 expires_at 后,记录会归档为 deleted;之后用户详情接口返回 404 material_not_found

列出素材

GET /v1/materials
查询参数必填说明
typeimagevideoaudio
statuscreatingverification_pendingprocessingavailabledelete_pending
limit每页 1 到 100 条,默认 50
after上一页返回的不透明游标。
curl "https://api.uniall.ai/v1/materials?type=image&status=available&limit=20" \
-H "Authorization: Bearer sk-***"
{
"object": "material.list",
"data": [
{
"id": "mat_xxxxxxxxxxxxx",
"object": "material",
"name": "商品参考图",
"type": "image",
"status": "available",
"uri": "asset://asset-xxxxxxxxxxxxx",
"preview_url": "https://example.com/short-lived-preview.jpg",
"created_at": "2026-07-29T10:00:00Z",
"available_at": "2026-07-29T10:01:00Z",
"expires_at": "2026-07-29T12:01:00Z"
}
],
"has_more": true,
"next_cursor": "opaque-cursor-value"
}

请求下一页时,把 next_cursor 原样作为 after 传入。不要解析或自行构造游标。

用户素材列表会排除失败、认证失败、认证过期、已删除、历史过期,以及已经到期但等待后台归档的记录。这些记录可以继续保留在管理员视图中用于审计和排障。

删除素材

DELETE /v1/materials/{material_id}
curl -X DELETE "https://api.uniall.ai/v1/materials/mat_xxxxxxxxxxxxx" \
-H "Authorization: Bearer sk-***"
  • HTTP 200status=deleted:删除已经完成。
  • HTTP 202status=delete_pending:删除请求已接受,仍在异步处理。
  • 真人认证尚未完成时,删除会取消本地工作流。
  • 删除操作是幂等的;已删除素材不能再用于生成。

两种成功状态都会返回与详情接口相同的完整素材对象。

素材状态

状态说明
creatingUniAll.ai 正在初始化素材工作流。
verification_pending等待真人完成 H5 认证。
verification_failed真人认证失败,或认证会话创建结果不确定。
verification_expired真人认证会话已经过期。
processing实际素材已经提交,正在处理。
available素材可以用于生成请求。
failed素材创建或处理失败。
delete_pending删除已经提交,仍在处理。
deleted删除完成;该状态可能出现在删除响应中,但查询和列表不再返回。

verification_failedverification_expiredfailed 都是失败终态。使用原创建幂等键重放只会返回原失败工作流;要创建新素材,请使用新的 Idempotency-Key

安全与生命周期

  • verification_url 包含 H5 临时令牌,应按机密信息处理。不要写入业务日志、埋点、客服消息或公开页面。
  • 不要记录完整的真人回跳 URL、查询参数或回调校验状态。
  • preview_url 是短期预览地址,不能作为永久存储或稳定的公开链接。
  • 不要依赖查询或列表接口返回原始输入 URL。
  • 只使用同一用户拥有、当前状态为 availableasset:// URI。

常见错误

错误使用 OpenAI 兼容结构:

{
"error": {
"message": "The material is not available.",
"type": "invalid_request_error",
"code": "material_not_available"
}
}
错误码说明
invalid_idempotency_key缺少有效的 Idempotency-Key,或格式不符合要求。
invalid_material_requestURL、类型、名称或查询参数不符合要求。
invalid_material_cursorafter 不是本接口返回的有效游标。
material_channel_unavailable素材服务暂不可用,或当前模型暂不支持素材输入。
material_idempotency_conflict相同幂等键对应了不同请求。
material_not_found素材不存在、不属于当前用户,或已经到期归档。
material_not_available素材尚未可用、已经过期或已经删除。
material_not_managedasset:// URI 未登记在当前用户的 UniAll.ai 素材库中。
visual_verification_consent_required真人素材没有明确确认授权同意。
invalid_visual_verification_request真人素材类型或回跳地址不符合要求。
visual_verification_create_outcome_uncertain首次创建认证会话的结果不确定;系统不会自动创建第二个会话。
material_create_outcome_uncertain素材创建结果不确定,UniAll.ai 正在后台核对。

错误消息只包含可公开信息,不会暴露上游原始错误、内部路由或凭证。

相关页面