媒体指南
Seedance 素材与真人验证
在 Seedance 中复用图片、视频、音频或经过验证的真人
Seedance 素材可以反复用于视频生成,不必每次重新导入。商品、风格和虚拟人物可以直接建立素材;真人素材必须取得本人同意并完成人脸验证。
选择素材类型
| 想复用的内容 | 怎么做 |
|---|---|
| 只用一次的图片 | 在支持的图片字段中传入 URL;这不会创建可复用素材 ID |
| 复用虚拟人、商品或风格 | 创建 aigc_avatar 组,创建素材,等待 ACTIVE,再使用素材 ID |
| 复用真人 | 完成视觉验证,取得 GroupId,在该组中创建素材,等待 ACTIVE,再使用素材 ID |
| 迁移火山素材客户端 | 保留 Action 字段,使用素材 Action(火山兼容) |
素材组与素材
| 对象 | 字段 | 含义 |
|---|---|---|
| 素材组 | group_id | 把同一人物、商品或风格的素材放在一起。 |
| 素材 | id | 一张图片、一段视频或一段音频。变为 ACTIVE 后,用这个 ID 生成视频。 |
| 虚拟人像素材组 | library_type: "aigc_avatar" | 用于虚拟人像、产品、风格及其他无需真人验证的可复用引用。 |
| 真人素材组 | library_type: "liveness_face" | 通过真人验证创建。一个组代表一个已验证的真人。 |
group_id 只用来整理素材,生成视频时要传素材本身的 id。如果返回 Seedance material asset not found or not accessible,请确认 ID 没有填错、素材仍然存在、属于当前组织,并且状态为 ACTIVE。
素材有效期
TokenLab 会保留每个素材,直到你删除该素材或其所在素材组。TokenLab 一侧不会因为长期未使用而清理素材。
上游 Seedance 服务方可能在素材 30 天未被使用后,清理它自己的工作副本。这不会删除你的素材,也不会改变素材 ID:下次在生成请求中使用时,TokenLab 会自动根据已保存的原文件重新准备一份上游副本。
- 清理后的首次生成可能稍慢,因为需要准备新的副本。如果副本尚未就绪,请求会返回
seedance_material_preparing,请稍后重试。 - 删除素材或素材组是永久操作,无法撤销。
图片 URL 与可复用素材
可以在所选模型支持的图片字段中传入公网 HTTP(S) URL 或支持的 data URL。这些输入按普通媒体路径处理,不会自动创建可复用的素材 ID。
需要复用时,先通过素材 API 创建素材,等待 ACTIVE,再使用 material_asset_id、material_asset_ids 或支持的媒体字段中的 asset://<id>。保留首帧、尾帧或参考图的原本用途。
显式指定的素材仍在准备时,POST /v1/videos/generations 返回 409 seedance_material_preparing,并通过 inactive_asset_ids 列出相关素材。查询这些素材直到 ACTIVE,再用相同素材 ID 重试。如果素材为 FAILED,先根据 error_message 修正或重新导入。
真人验证
真人会被反复用于 Seedance 生成时,产品必须取得本人同意并完成人脸验证。
- 调用 创建视觉验证会话,传入
CallbackURL,并保存返回的Result.BytedToken。 - 为待验证人员打开
Result.H5Link。如需指定语言,请在 H5 链接后追加lng。 - 验证完成后,浏览器会打开
Result.CallbackURL,并带上bytedToken、resultCode等查询参数。 - 使用
BytedToken查询视觉验证结果,直到返回Result.GroupId。 - 保存
GroupId;创建liveness_face素材时将其作为group_id。
BytedToken 的有效期为 30 分钟。两次 Action 请求必须使用相同的 ProjectName。认证使用 Authorization: Bearer <TOKENLAB_API_KEY>,不接受火山引擎 AK/SK 签名。
创建后立即打开返回的 H5Link。Token 的有效期不代表在这段时间内任意时刻都能首次打开验证页面。
也可以在 Seedance 素材 页面检查请求、回调、素材组和验证记录。正式功能仍应直接调用 API。
创建素材组
使用创建素材组新建 aigc_avatar 组。真人组会在验证成功后创建,不能手动伪造成已验证真人。
使用 列出素材组、获取素材组、更新素材组 和 删除素材组 管理已有素材组。
删除素材组也会删除其中所有素材,而且无法恢复。没有删除权限时,API 会返回权限错误。
上传素材
使用创建素材导入一个可从互联网访问的 URL。
aigc_avatar 可以省略 group_id,TokenLab 会使用当前组织的默认组。liveness_face 必须传入 group_id,并且这个 ID 必须来自视觉验证结果。
| 类型 | 支持的输入 |
|---|---|
| 图像 | jpeg, png, webp, bmp, tiff, gif, heic, heif; ≤ 30 MiB; 宽和高 [300, 6000] px; 宽高比 [0.4, 2.5] |
| 视频 | mp4, mov; ≤ 200 MiB |
| 音频 | aac, wav, mp3; ≤ 15 MiB |
上表是文件导入限制。导入请求成功不代表媒体或真人验证已经通过。等待素材变为 ACTIVE;如果变为 FAILED,根据 error_message 修正源文件后再导入。
TokenLab 会检查 URL、媒体格式和文件大小。宽高、比例、时长、分辨率、总像素和 FPS 是否合格,还取决于所选模型。
素材需要一些时间处理。请查询获取素材,直到 status 变为 ACTIVE。HTTP 请求成功只表示已经开始处理;状态变为 FAILED 时,请根据 error_message 修改源文件并重新创建。
asset_url 只是素材的导入地址。TokenLab 会返回素材 id,以后生成视频请使用这个 ID。
素材 ID 类似 asset-20260720123456-qn7wr,素材组 ID 类似 group-20260720123456-vrt01。素材会保留在当前组织中,直到你删除素材或整个素材组;上游副本被清理后会自动重建,详见上方素材有效期说明。
一个真人素材组只对应一个人。上传内容会与已经验证的人脸比对;出现多张脸或人物不一致时可能失败。建议准备一张正面全身照和一张清晰的正脸特写。
在视频生成中使用素材
素材变为 ACTIVE 后,调用创建视频时,把它的 id 传给 material_asset_id,多份素材则放进 material_asset_ids。这些素材都会计入 Seedance 的参考数量上限。
REST 还是火山 Action
新接入使用 snake_case 的 /v1/videos/assets* REST API。已有火山客户端可以保留 PascalCase 请求体,改用火山兼容素材 Action。两种 API 访问的是当前组织与 ProjectName 下的同一份素材。
API 示例
下面的示例创建虚拟人像素材组并上传一张图片。素材变为 ACTIVE 后,就可以把返回的素材 ID 用于视频请求。
curl https://api.tokenlab.sh/v1/videos/assets/groups \
-H "Authorization: Bearer $TOKENLAB_API_KEY" \
-H "Content-Type: application/json" \
-d '{"library_type":"aigc_avatar","group_name":"Product references"}'
curl https://api.tokenlab.sh/v1/videos/assets \
-H "Authorization: Bearer $TOKENLAB_API_KEY" \
-H "Content-Type: application/json" \
-d '{"library_type":"aigc_avatar","group_id":"group-20260720123456-abc12","asset_url":"https://example.com/reference.png","asset_type":"Image"}'
curl https://api.tokenlab.sh/v1/videos/assets/asset-20260720123457-def45 \
-H "Authorization: Bearer $TOKENLAB_API_KEY"真人素材必须完成视觉验证并取得 GroupId 后才能上传。
curl 'https://api.tokenlab.sh/api/v3?Action=CreateVisualValidateSession&Version=2024-01-01' \
-H "Authorization: Bearer $TOKENLAB_API_KEY" \
-H "Content-Type: application/json" \
-d '{"CallbackURL":"https://yourapp.example.com/seedance/callback","ProjectName":"default"}'
curl 'https://api.tokenlab.sh/api/v3?Action=GetVisualValidateResult&Version=2024-01-01' \
-H "Authorization: Bearer $TOKENLAB_API_KEY" \
-H "Content-Type: application/json" \
-d '{"BytedToken":"ZXhhbXBsZS10b2tlbg","ProjectName":"default"}'使用 Action 上传真人素材
取得验证结果返回的 GroupId 后,将它传给 CreateAsset:
curl 'https://api.tokenlab.sh/?Action=CreateAsset&Version=2024-01-01' \
-H "Authorization: Bearer $TOKENLAB_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"GroupId":"group-20260720123456-real1",
"URL":"https://example.com/person-front.png",
"Name":"Verified front view",
"AssetType":"Image",
"ProjectName":"default"
}'通过 GetAsset 查询,状态变为 Active 后即可在视频生成中使用素材 ID。