TokenLab

Video & Materials

Create Material Asset

Uploads a Seedance material asset into a TokenLab material group.

POST
/v1/videos/assets

Import one publicly reachable source URL into a Seedance material group. TokenLab stores the material for later use; use the returned material asset id for generation, not the source URL.

For library_type: "aigc_avatar", group_id is optional; TokenLab uses or creates the organization default virtual-avatar group. For library_type: "liveness_face", group_id is required and must be the TokenLab group returned by Get Visual Validation Result.

TypeSupported input
Imagejpeg, jpg, png, webp, bmp, tiff, gif, heic, heif; ≤30 MiB; width and height [300, 6000] px; aspect ratio [0.4, 2.5].
Videomp4, mov; ≤200 MiB.
Audioaac, wav, mp3; ≤15 MiB.

TokenLab checks the source URL, media type, file size, and image dimensions when readable. Import acceptance does not mean the asset is ready: wait for ACTIVE and inspect error_message if processing fails. Other media and face requirements are evaluated during processing.

Creation is asynchronous. Poll Get Material Asset until status is ACTIVE. For real-person groups, one group maps to one verified person; uploads with multiple faces or a face that does not match the verified person can fail.

project_name isolates resources within the authenticated organization. It defaults to default; use the same case-sensitive value for related groups and assets. Send it in the JSON body for POST/PUT and in the query string for GET/DELETE.

Example Request

curl https://api.tokenlab.sh/v1/videos/assets \
  -H "Authorization: Bearer $TOKENLAB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"library_type":"aigc_avatar","group_id":"group-20260720123456-vrt01","asset_url":"https://example.com/reference.png","asset_type":"Image","asset_name":"Front view","project_name":"default"}'

Example Response

{
  "id": "asset-20260720123456-qn7wr",
  "object": "seedance.material_asset",
  "project_name": "default",
  "group_id": "group-20260720123456-vrt01",
  "library_type": "aigc_avatar",
  "asset_name": "Front view",
  "asset_type": "Image",
  "status": "PROCESSING",
  "ready": false,
  "error_message": null,
  "metadata": null,
  "created_at": 1782998400000
}
curl -X POST "https://example.com/v1/videos/assets" \  -H "Content-Type: application/json" \  -d '{    "asset_url": "https://example.com/reference.png",    "asset_name": "Front view",    "asset_type": "Image",    "library_type": "aigc_avatar",    "group_id": "group-20260720123456-vrt01"  }'
{  "id": "asset-20260720123456-qn7wr",  "object": "seedance.material_asset",  "group_id": "group-20260720123456-vrt01",  "library_type": "aigc_avatar",  "asset_name": "Front view",  "asset_type": "Image",  "status": "PROCESSING",  "ready": false,  "error_message": null,  "metadata": null,  "created_at": 1782998400000}

Authorization

BearerAuth
AuthorizationBearer <token>

API Key authentication. Create or manage API keys in Dashboard > API > API Keys.

In: header

Request Body

application/json

Response

application/json

application/json

application/json

application/json

application/json

application/json