Skip to main content
Seedance materials are organization-scoped image, video, or audio references that can be reused across video tasks. Choose the workflow first; virtual-avatar materials and verified real-person materials do not have the same creation path.

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 in image, 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 an aigc_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: Deleting a group also deletes the TokenLab materials it contains and cannot be undone.

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.
  1. Call Create Visual Validation Session with CallbackURL; save Result.BytedToken and open Result.H5Link for the person being verified.
  2. After the H5 flow redirects to the callback, poll Get Visual Validation Result with the same BytedToken and ProjectName.
  3. Store the returned Result.GroupId. TokenLab creates and binds the LivenessFace group during this step.
  4. 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 is ACTIVE, choose one of these forms when calling Create Video:
  • material_asset_id for one generic material reference
  • material_asset_ids for multiple generic references
  • asset://<asset-id> in start_image, end_image, or reference_images when the media role must be explicit
Material references count toward the selected model’s Seedance reference limits. If the API returns 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:
Then pass the returned GroupId to CreateAsset:
Poll with 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).