Seedance 2.0 uses two auth schemes and two endpoints:
- Asset management (create group / upload / query / delete): Volcengine-native APIs signed with AK/SK, called directly against
open.volcengineapi.com. APIYI does not proxy this part. - Video generation (including
asset://references): through the APIYI gateway withBearer sk-...(the token must have theSeeDance2group enabled).
Why an asset library
Seedance 2.0 has built-in anti-Deepfake / anti-infringement filtering and does not accept reference images containing real human faces directly. To keep a character’s face and clothing consistent across generated videos, you first ingest a virtual avatar as a trusted asset, get anasset:// ID, and reference it during video generation.
- Asset Group: manages multiple images of the same virtual character.
- Asset: a single image / video / audio file; usable only after it is preprocessed to
Active.
1. Prerequisites
- AK/SK: from the Volcengine console under Access Control (IAM); AK looks like
AKLT.... - Asset permission: attach a custom policy to the IAM user owning the AK/SK, otherwise you get
403 AccessDenied: - Sign the authorization letter once: creating your first group requires signing an authorization letter in the console (My → Virtual Avatars).
- ProjectName: the asset’s project must match the video-generation token’s project (most asset APIs require an explicit
ProjectName, otherwise they default to thedefaultproject).
2. Volcengine AK/SK signing (Python)
3. Virtual-avatar ingest flow
Active for a single image in our test).
4. Generate video with asset:// (via APIYI)
Putasset://<AssetId> into the content array with role set to reference_image. In the prompt, refer to it as “Image 1” — do not write the Asset ID directly in the prompt.
5. Search & management
| Action | API | Key params |
|---|---|---|
| List groups | ListAssetGroups | Filter.GroupType=AIGC, ProjectName, PageNumber/PageSize |
| List assets | ListAssets | Filter.GroupIds, Filter.Statuses, ProjectName |
| Get one | GetAsset | Id, ProjectName |
| Delete asset / group | DeleteAsset / DeleteAssetGroup | Id, ProjectName |
GetAsset 100 QPS; CreateAsset per the advanced creation entitlement package; most others 10 QPS.
6. Real faces (real-person avatars)
Real faces are not a parameter of the asset API — they go through a separate, console-only real-person verification flow that cannot be done via API:Create a real-person asset group
In the experience center: My → Real-Person Avatars → Manage Assets → Create Asset Group.
Confirm authorization
Confirm the authorizing subject and purpose, and agree to the face-data processing rules.
Real-person verification
The person being filmed completes face verification — once per asset group; adding more looks for the same actor later requires no re-verification.
Product guidance: automate virtual-avatar uploads via the API on this page; for real faces, guide users to complete verification in the Volcengine console, then store the returned asset ID in your system before calling generation. Confirm with the APIYI team / Volcengine whether real-person asset IDs use the same
asset:// reference format, whether they share the same entitlement package, and whether an additional portrait authorization document is required.7. Common errors
| Symptom | Cause | Fix |
|---|---|---|
401 SignatureDoesNotMatch | signing error (SK base64-decoded / clock skew / canonical mismatch) | use SK as raw UTF-8; check the canonical request |
403 AccessDenied: ark:* | IAM user lacks asset permission | attach policy ark:*Asset* and bind it to the user |
| Create group fails | authorization letter not signed | create a group manually in the console to trigger signing |
| List returns 0 / delete group 404 | ProjectName not passed | always include ProjectName |
Generation 400 asset not found | asset not under the gateway’s Volcengine account / wrong ID | ingest with APIYI’s AK/SK; verify the Asset ID |
volcengine.com/docs/82379/2333565, asset API reference volcengine.com/docs/82379/2333601, real-person asset onboarding volcengine.com/docs/82379/2315856.