Skip to main content
Seedance 2.0 Asset Management lets you upload and organize media assets (images, videos, audio) for use with Seedance 2.0 video generation. Once uploaded, assets are referenced by ID (asset://<ID>) in Seedance 2.0 requests instead of public URLs.

Why use Asset Management?

  • Persistent storage — Assets are stored on Volcengine and don’t expire like temporary URLs
  • Multi-format support — Upload images, videos, and audio files
  • Organized by groups — Group related assets (e.g. per project or campaign)
  • Data isolation — Each API token sees only its own assets
  • Direct integration — Use asset://<ID> directly in Seedance 2.0 image_url, video_url, audio_url fields

Supported formats

Billing models

Asset review and activation time

These times are ideal estimates. Actual timing may vary based on file size, media format, and review queue load. When the review queue is congested, asset activation may be delayed by about 10 seconds to 2 minutes. Use the asset through asset://<ID> only after its status becomes Active.

Asynchronous processing and asset URLs

CreateAsset is asynchronous. The API returns an asset ID after accepting the upload request, but the asset still needs upstream preprocessing before it can be used for inference. Poll GetAsset until Status becomes Active.
Do not use or store the GetAsset.URL value as the long-term asset reference. Official examples mark this URL as valid for 12 hours. Use asset://<asset_id> in Seedance generation requests.

Workflow

LivenessFace workflow

Use the LivenessFace flow when you need a private real-person portrait group. AnyFast creates a mobile verification page, the user completes liveness face verification on a phone, and the result becomes a LivenessFace asset group.
For the complete authorization flow and official terminology, see Real-human asset verification.
LivenessFace verification requires an API token created with the Byteplus-Direct group. Tokens routed to the regular AIGC asset group only support GroupType: "AIGC" and cannot create liveness sessions or LivenessFace assets.
1

Create a validation session

Call CreateVisualValidateSession to obtain H5Link and BytedToken.
cURL
2

Open the H5Link on a phone

Send the returned H5Link to the user and ask them to complete liveness face verification.
3

Query the result

After verification, call GetVisualValidateResult with the BytedToken. A successful verification returns a GroupId.
cURL
4

Manage the LivenessFace group

Use the returned GroupId with UpdateAssetGroup, ListAssetGroups, CreateAsset, ListAssets, and GetAsset. When listing liveness groups or assets, include Filter.GroupType: "LivenessFace".
If verification is not completed or did not create a group, GetVisualValidateResult may return {"GroupId": ""}. Invalid or expired tokens return an upstream error.
When uploading an image to a LivenessFace group, the image must match the verified person. Mismatched faces return FaceMismatch and the asset status becomes Failed.

Step 1: Create an Asset Group

First, create a Group to obtain a Group ID.
Expected response:

Step 2: Create an Asset within the Group

Using the Group ID from Step 1, upload your image asset (e.g., a character reference face).
Expected response:
The URL field accepts three formats:
  • Public URL: https://example.com/image.jpg
  • Data URI: data:image/png;base64,iVBOR...
  • Raw Base64 string (auto-detected, treated as PNG by default)
Base64 / Data URI are automatically uploaded to object storage.

Upload video

Video uploads must specify "model": "volc-asset-video" and "AssetType": "Video".
cURL

Upload audio

Audio uploads must specify "model": "volc-asset-audio" and "AssetType": "Audio".
cURL

File upload (multipart)

Upload image
Upload video
Upload audio

Step 3: Generate a Video Using the Asset

Reference the Asset ID from Step 2 to generate a video.
Important: Assets must be passed in strict order: text, image_url, video_url, audio_url. Do not reorder them — doing so may cause errors. When multiple assets are included, do not mix in other asset types.
cURL
The response will return an async task ID (prefixed with asyn).

Step 4: Poll for the Result

Use the task ID to check the generation status.
cURL
Once complete, the response will contain a pre-signed S3 download link. Please note:
  • The download link expires after 12 hours.
  • If the task reaches 100% progress but returns an error, this typically means the output was flagged by the provider’s content moderation (e.g., celebrity likeness or copyrighted IP). In this case, try modifying your prompt or using a different reference image.

Query assets

List asset groups with combined filters

cURL
200

List assets in a group

cURL

Manage assets

Update an asset group

cURL

Update an asset

cURL

Delete an asset

cURL

Delete an asset group

cURL

Billing

Data isolation

When using token-based access, the system automatically prefixes asset group names with [u-{userID}]-[t-{tokenID}], providing user and token-level data isolation. Queries automatically filter to return only data accessible by the current token.

API Reference

Create Asset Group

Create a new asset group.

Create Asset

Upload an asset (image, video, audio) to a group.

Create Liveness Session

Create a mobile liveness face validation session.

Get Liveness Result

Query the LivenessFace group created by a validation session.

List Asset Groups

Query asset groups.

List Assets

Query assets within groups.

Update Asset Group

Update asset group information.

Update Asset

Update asset information.

Delete Asset

Delete an asset.

Delete Asset Group

Delete an asset group.