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

VerificationH5 real-person verification requiredNo verification needed
Group TypeREAL_PERSONAIGC
Creation FlowCreate -> Verify -> ActiveCreate -> Active
Asset SourceVerified real-person imagesAI-generated character images

Supported Models

Virtual Portrait assets are currently supported for the following video generation models:

seedance-2.0YesYesYes
seedance-2.0-fastYesYesYes

Note: seedance-1.5-pro and 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.

Shell
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.

Shell
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.

Shell
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[].typeimage_url
frame_images[].frame_typefirst_frame
frame_images[].image_url.urlasset://{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
Was this page helpful?