Manage image, video, and audio assets for Seedance 2.0 video generation via Anyfast API.
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.
1. Create an Asset Group → Group ID2. Create an Asset in the Group → Asset ID3. Generate a video with Asset → async task ID4. Poll for the result → pre-signed download URL
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.
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.
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.
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).
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.
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.