Choose A Material Workflow
Material Concepts
Keep group IDs and asset IDs separate. A group organizes uploads; an asset ID is the reference used by video generation. Public IDs look like
group-20260720123456-vrt01 and asset-20260720123457-def45.
Automatic Image Materials
When the selected Seedance model can use the TokenLab material library, you may send image URLs or supported inline data URLs directly inimage, image_url, image_urls, reference_images, start_image, or end_image. TokenLab imports them into the organization’s default virtual-avatar group and preserves their first-frame, last-frame, or reference-image role.
If preparation finishes within 60 seconds, video generation continues in the same request. Otherwise the API returns 409 seedance_material_preparing with auto_material_asset_ids. Poll those assets until they are ACTIVE, then retry with material_asset_id, material_asset_ids, or an asset://<id> URI in the appropriate media field.
Existing material IDs are used as-is and are not imported again. If the selected model cannot use the material library, ordinary URL and data URL inputs continue on the regular media path; explicit material IDs return a material-availability error.
Virtual-Avatar Materials
Use Create Material Asset Group to create anaigc_avatar group. For REST asset creation, group_id is optional; TokenLab uses or creates the organization’s default virtual-avatar group when it is omitted.
After a group exists, manage it with:
- List Material Asset Groups
- Get Material Asset Group
- Update Material Asset Group
- Delete Material Asset Group
Real-Person Verification
Use this flow when your product must collect consent and verify a face before reusing a real person as a Seedance reference.- Call Create Visual Validation Session with
CallbackURL; saveResult.BytedTokenand openResult.H5Linkfor the person being verified. - After the H5 flow redirects to the callback, poll Get Visual Validation Result with the same
BytedTokenandProjectName. - Store the returned
Result.GroupId. TokenLab creates and binds theLivenessFacegroup during this step. - Create an asset with that group ID, then poll the asset until it becomes
ACTIVE.
BytedToken is valid for 30 minutes. A client cannot create a LivenessFace group with CreateAssetGroup; this prevents an unverified group from being presented as verified.
For a real-person group, uploads are checked against the verified face. An asset can fail if it contains multiple faces or the face does not match. For best results, upload a full-body front reference and a clear front-facing close-up.
Create And Prepare An Asset
Use Create Material Asset to import one publicly reachable URL at a time.
Material ingestion is asynchronous. Poll Get Material Asset until
status becomes ACTIVE. HTTP success means the import was accepted, not that the asset is ready. If the asset becomes FAILED, inspect error_message, correct the source, and create a new asset.
The source URL is only used for import. TokenLab returns its own asset ID and keeps the asset in your organization’s material library until you delete the asset or its group.
Use An Asset In Video Generation
After an asset isACTIVE, choose one of these forms when calling Create Video:
material_asset_idfor one generic material referencematerial_asset_idsfor multiple generic referencesasset://<asset-id>instart_image,end_image, orreference_imageswhen the media role must be explicit
Seedance material asset not found or not accessible, confirm that the value is an asset ID rather than a group ID, belongs to the same organization and project, is not deleted, and is ACTIVE.
REST Or Volcengine Action
TokenLab-native integrations can continue to use the snake_case/v1/videos/assets* REST endpoints. Existing Volcengine clients can retain PascalCase bodies with Material Actions (Volc Compatible). Both interfaces operate on the same organization- and project-scoped material data.
REST Example: Virtual-Avatar Asset
Action Example: Verified Real-Person Asset
First create and complete visual validation:GroupId to CreateAsset:
GetAsset until its status is Active, then pass the returned asset ID to video generation. For all 10 Action operations, filters, pagination, response shapes, and errors, see Material Actions (Volc Compatible).