Video & Materials
Create Material Asset
Uploads a Seedance material asset into a TokenLab material group.
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.
| Type | Supported input |
|---|---|
| Image | jpeg, jpg, png, webp, bmp, tiff, gif, heic, heif; ≤30 MiB; width and height [300, 6000] px; aspect ratio [0.4, 2.5]. |
| Video | mp4, mov; ≤200 MiB. |
| Audio | aac, 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 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