Virtual Portrait
What is Virtual Portrait
Token360 Virtual Portrait integrates with the BytePlus ModelArk AIGC asset library, allowing you to use AI-generated character images as references in video generation workflows without real-person verification.
Each asset is identified by a Token360 asset ID in the format ta_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Key Differences from RealFace
| Verification | H5 real-person verification required | No verification needed |
| Group Type | REAL_PERSON | AIGC |
| Creation Flow | Create -> Verify -> Active | Create -> Active |
| Asset Source | Verified real-person images | AI-generated character images |
Supported Models
Virtual Portrait assets are currently supported for the following video generation models:
seedance-2.0 | Yes | Yes | Yes |
seedance-2.0-fast | Yes | Yes | Yes |
Note:
seedance-1.5-proand other non-BytePlus video models do not support Virtual Portrait assets.
Setting Up Virtual Portrait Assets
Setting Up Virtual Portrait Assets in Assets page
Before you can use Virtual Portrait in the Playground, create a Virtual Portrait asset group on the unified Assets page and upload images into that group.
1. Open Assets
Click your avatar in the top-right corner and select Assets from the dropdown menu.
2. Create a Virtual Portrait group
In the Asset groups section, click New group. In the Create asset group dialog, select Virtual Portrait, enter a Group name, and click Create. Virtual Portrait groups use the server default retention of No fixed expiry for uploaded files; this field is read-only in the dialog.
The group appears in the Asset groups table and becomes available immediately after creation. No H5 real-person verification step is required.
3. Upload assets
In the Assets section, click Upload and choose an image file. In the Upload file dialog, enter a Display name, set Asset group to the Virtual Portrait group, and click Upload. The Retention selector is locked for Virtual Portrait groups because these uploads do not use a per-file expiry date.
- The asset appears in the Assets table under the selected group
- Each asset has a unique Asset ID in the format
ta_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - Click the Asset ID to copy it for API usage
- Assets may show Processing while BytePlus registers and validates them
Use the Asset group filter in the Assets table when you want to show only one Virtual Portrait group. The filter changes the visible rows only; the upload destination is selected in the Upload file dialog.
Only assets with Active status can be used in video generation. Virtual Portrait inputs must come from Virtual Portrait groups as provider-backed assets; generic user uploads are not valid Virtual Portrait asset references.
Setting Up Virtual Portrait Assets via API
Use the Assets API when you need to create and prepare Virtual Portrait assets outside the UI.
1. Create a Virtual Portrait group
Create a Virtual Portrait group with POST /v1/asset-groups and groupKind=VIRTUAL_PORTRAIT. The response returns the canonical assetGroupId, and the group is active immediately.
1curl -X POST https://api.token360.ai/v1/asset-groups \
2 -H "Authorization: Bearer sk-your-api-key" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "name": "Virtual Portrait Name",
6 "groupKind": "VIRTUAL_PORTRAIT"
7 }'2. Upload Virtual Portrait assets
Upload image files with POST /v1/assets using multipart form data. Set groupId to the Virtual Portrait group's assetGroupId.
1curl -X POST https://api.token360.ai/v1/assets \
2 -H "Authorization: Bearer sk-your-api-key" \
3 -F "groupId=your-virtual-portrait-group-id" \
4 -F "file=@your-image-file.jpg" \
5 -F "name=Asset Name"The upload response returns an asset record id and an assetId. The assetId uses the ta_ prefix and is the only asset ID to use in asset:// video inputs for Virtual Portrait.
3. Poll until the asset is active
Poll GET /v1/assets/{assetId} or GET /v1/assets?groupId=your-virtual-portrait-group-id until the asset status is active.
Use asset://{assetId} in video generation requests after the asset becomes active. Use the asset assetId, not the asset record id or Virtual Portrait group ID.
Do not use generic user-upload asset IDs, such as IDs with the ua_ prefix, as Virtual Portrait references. If an image was uploaded as a generic asset, upload it again into the active Virtual Portrait group.
Using Virtual Portrait
Using Virtual Portrait in the Playground
1. Select a Supported Model
In the Playground, choose from Supported Models.
2. Choose a Video Mode
Virtual Portrait assets can be used in the following video modes:
- First-frame I2V
- First & last frame
- Reference images
- Multimodal reference
- Edit video
- Extend video
3. Select an Asset
For supported Seedance video modes, each compatible media block, such as First frame, Last frame, or Reference images, has source buttons in its header:
- Click the upload icon to add a local file from your device
- Click the library icon, labeled From assets, to open Choose from your library
In Choose from your library, set the type dropdown to Virtual Portrait, or search by asset name or asset ID. Image slots are locked to images, and you can also filter by group. The picker only allows active, non-expired assets.
For single-image slots such as first frame or last frame, click an asset card to use it immediately. For multi-image slots such as reference images, select one or more asset cards and click Use selected. Selected Virtual Portrait inputs are marked with an Asset badge in the Playground.
4. Generate the Video
After selecting the Virtual Portrait asset(s), fill in the prompt and other parameters, then click Generate.
Using Virtual Portrait via API
You can find the asset ID on the Assets page. Filter by the Virtual Portrait group, then click the Asset ID to copy it.
Reference a Virtual Portrait asset with the asset:// protocol and the asset's Token360 asset ID, for example asset://ta_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. Use the asset assetId, not the Virtual Portrait group ID or asset record ID.
Use the same media input fields shown in each video model's input parameter schema:
- First frame or last frame: use
frame_images[].image_url.url - Reference images and other image references: use
input_references[].image_url.url
When calling the video generation API for First-frame I2V, use the same media input fields shown in the model schema for this scenario. Put the Virtual Portrait asset URL in frame_images[].image_url.url on the first_frame entry.
1curl -X POST https://api.token360.ai/v1/videos \
2 -H "Authorization: Bearer sk-your-api-key" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "model": "seedance-2.0",
6 "prompt": "A stylized virtual character smiles and turns toward the camera in soft studio light",
7 "frame_images": [
8 {
9 "type": "image_url",
10 "frame_type": "first_frame",
11 "image_url": { "url": "asset://ta_virtual_portrait_asset_id" }
12 }
13 ],
14 "duration": 6,
15 "resolution": "720p",
16 "generate_audio": false
17 }'Asset Reference Format
frame_images[].type | image_url |
frame_images[].frame_type | first_frame |
frame_images[].image_url.url | asset://{assetId} |
Multiple Assets
First-frame I2V uses one first-frame asset. To add more Virtual Portrait assets as character references, use the Reference images or Multimodal reference scenarios.
Limitations
- Virtual Portrait assets are only available for BytePlus Seedance 2.0 series models
- Each asset must belong to an active Virtual Portrait Group and itself be in active status
- Asset availability is subject to BytePlus ModelArk service status
Previous
Real Face
Next
Webhook