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

TypeFormatsLimits
ImageJPG, PNG, GIF, WebP, BMP, TIFF, HEIC, HEIF< 30 MB, 300–6000 px, aspect ratio 0.4–2.5
VideoMP4, MOV< 50 MB, 2–15s, 480p/720p, 24–60 FPS
AudioMP3, WAV< 15 MB, 2–15s

Billing models

ModelAsset typeDescription
volc-assetImageDefault — no need to specify for images
volc-asset-videoVideoRequired when uploading video
volc-asset-audioAudioRequired when uploading audio

Workflow

1. Create an Asset Group        →  Group ID
2. Create an Asset in the Group →  Asset ID
3. Generate a video with Asset  →  async task ID
4. Poll for the result          →  pre-signed download URL

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
curl https://www.anyfast.ai/volc/asset/CreateVisualValidateSession \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "CallbackURL": "https://example.com/callback"
  }'
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
curl https://www.anyfast.ai/volc/asset/GetVisualValidateResult \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "BytedToken": "2026070222152680501D985EA34A3BE3D8"
  }'
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.
curl https://www.anyfast.ai/volc/asset/CreateAssetGroup \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "volc-asset",
    "Name": "your-custom-name"
  }'
Expected response:
{
  "Id": "group-20260427160000-xxxxx"
}

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).
curl https://www.anyfast.ai/volc/asset/CreateAsset \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "volc-asset",
    "GroupId": "group-20260427160000-xxxxx",
    "Name": "character-reference",
    "AssetType": "Image",
    "URL": "https://example.com/example.png"
  }'
Expected response:
{
  "Id": "asset-20260427160000-xxxxx"
}
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
curl https://www.anyfast.ai/volc/asset/CreateAsset \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "volc-asset-video",
    "GroupId": "group-20260427160000-xxxxx",
    "Name": "reference-clip",
    "AssetType": "Video",
    "URL": "https://example.com/clip.mp4"
  }'

Upload audio

Audio uploads must specify "model": "volc-asset-audio" and "AssetType": "Audio".
cURL
curl https://www.anyfast.ai/volc/asset/CreateAsset \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "volc-asset-audio",
    "GroupId": "group-20260427160000-xxxxx",
    "Name": "background-music",
    "AssetType": "Audio",
    "URL": "https://example.com/bgm.mp3"
  }'

File upload (multipart)

Upload image
curl https://www.anyfast.ai/volc/asset/CreateAsset \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@/path/to/image.jpg" \
  -F "GroupId=group-20260427160000-xxxxx" \
  -F "Name=character-reference"
Upload video
curl https://www.anyfast.ai/volc/asset/CreateAsset \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "model=volc-asset-video" \
  -F "file=@/path/to/video.mp4" \
  -F "GroupId=group-20260427160000-xxxxx" \
  -F "Name=reference-clip" \
  -F "AssetType=Video"
Upload audio
curl https://www.anyfast.ai/volc/asset/CreateAsset \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "model=volc-asset-audio" \
  -F "file=@/path/to/audio.mp3" \
  -F "GroupId=group-20260427160000-xxxxx" \
  -F "Name=background-music" \
  -F "AssetType=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
curl https://www.anyfast.ai/v1/video/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance",
    "content": [
      {
        "type": "text",
        "text": "The person from @image1 walks in the scene from @video1, with @audio1 as background music"
      },
      {
        "type": "image_url",
        "image_url": {
          "url": "asset://asset-20260427160000-xxxxx"
        },
        "role": "reference_image"
      },
      {
        "type": "video_url",
        "video_url": {
          "url": "asset://asset-20260427160000-video1"
        },
        "role": "reference_video"
      },
      {
        "type": "audio_url",
        "audio_url": {
          "url": "asset://asset-20260427160000-audio1"
        },
        "role": "reference_audio"
      }
    ],
    "resolution": "720p",
    "duration": 5
  }'
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
curl https://www.anyfast.ai/v1/video/generations/asynxxxx \
  -H "Authorization: Bearer YOUR_API_KEY"
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

cURL
curl https://www.anyfast.ai/volc/asset/ListAssetGroups \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "volc-asset",
    "Filter": {"Name": "my-project"},
    "PageNumber": 1,
    "PageSize": 10
  }'

List assets in a group

cURL
curl https://www.anyfast.ai/volc/asset/ListAssets \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "volc-asset",
    "Filter": {
      "Name": "character",
      "GroupIds": ["group-20260427160000-xxxxx"],
      "GroupType": "AIGC"
    },
    "PageNumber": 1,
    "PageSize": 10
  }'

Manage assets

Update an asset group

cURL
curl https://www.anyfast.ai/volc/asset/UpdateAssetGroup \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "volc-asset",
    "Id": "group-20260427160000-xxxxx",
    "Name": "updated-project-assets"
  }'

Update an asset

cURL
curl https://www.anyfast.ai/volc/asset/UpdateAsset \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "volc-asset",
    "Id": "asset-20260427161000-xxxxx",
    "Name": "updated-character-reference",
    "GroupId": "group-20260427160000-xxxxx"
  }'

Delete an asset

cURL
curl https://www.anyfast.ai/volc/asset/DeleteAsset \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "volc-asset",
    "Id": "asset-20260427161000-xxxxx"
  }'

Delete an asset group

cURL
curl https://www.anyfast.ai/volc/asset/DeleteAssetGroup \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "volc-asset",
    "Id": "group-20260427160000-xxxxx"
  }'

Billing

OperationModelBilled
CreateAssetGroupvolc-assetFree
CreateAsset (image)volc-assetFree
CreateAsset (video)volc-asset-videoFree
CreateAsset (audio)volc-asset-audioFree
CreateVisualValidateSessionFree
GetVisualValidateResultFree
ListAssetGroupsFree
ListAssetsFree
GetAssetFree
UpdateAssetGroupvolc-assetFree
UpdateAssetvolc-assetFree
DeleteAssetvolc-assetFree
DeleteAssetGroupvolc-assetFree

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.