curl --request POST \
--url https://api.tokenlab.sh/v1/videos/assets \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"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
}{
"error": {
"message": "model: Model is required",
"type": "invalid_request_error",
"param": "model"
},
"validation_errors": [
{
"field": "model",
"message": "Model is required"
}
]
}{
"error": {
"message": "Invalid API key provided",
"type": "invalid_api_key"
}
}{
"error": {
"message": "<string>",
"type": "unauthorized",
"code": "<string>",
"param": "<string>",
"model": "<string>",
"did_you_mean": "<string>",
"suggestions": [
{
"id": "<string>"
}
],
"alternatives": [
{
"id": "<string>",
"status": "<string>",
"tags": [
"<string>"
]
}
],
"hint": "<string>",
"retry_after": 123,
"retryable": true,
"balance_usd": 123,
"estimated_cost_usd": 123,
"supported_operations": [
"<string>"
],
"supported_parameters": [
"<string>"
],
"required_selectors": [
"<string>"
],
"optional_selectors": [
"<string>"
],
"allowed_resolutions": [
"<string>"
],
"allowed_durations": [
"<string>"
],
"allowed_aspect_ratios": [
"<string>"
],
"prompt_max_characters": 123,
"recommended_request": {},
"request_endpoint": "<string>",
"request_shape_mode": "<string>",
"status_mode": "<string>",
"request_id": "<string>"
}
}{
"error": {
"message": "An internal error occurred",
"type": "server_error"
}
}{
"error": {
"message": "Seedance material library request failed",
"type": "server_error",
"code": "seedance_material_library_request_failed"
}
}Criar Ativo de Material
Faz o upload de um ativo de material Seedance para um grupo de materiais TokenLab.
curl --request POST \
--url https://api.tokenlab.sh/v1/videos/assets \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"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
}{
"error": {
"message": "model: Model is required",
"type": "invalid_request_error",
"param": "model"
},
"validation_errors": [
{
"field": "model",
"message": "Model is required"
}
]
}{
"error": {
"message": "Invalid API key provided",
"type": "invalid_api_key"
}
}{
"error": {
"message": "<string>",
"type": "unauthorized",
"code": "<string>",
"param": "<string>",
"model": "<string>",
"did_you_mean": "<string>",
"suggestions": [
{
"id": "<string>"
}
],
"alternatives": [
{
"id": "<string>",
"status": "<string>",
"tags": [
"<string>"
]
}
],
"hint": "<string>",
"retry_after": 123,
"retryable": true,
"balance_usd": 123,
"estimated_cost_usd": 123,
"supported_operations": [
"<string>"
],
"supported_parameters": [
"<string>"
],
"required_selectors": [
"<string>"
],
"optional_selectors": [
"<string>"
],
"allowed_resolutions": [
"<string>"
],
"allowed_durations": [
"<string>"
],
"allowed_aspect_ratios": [
"<string>"
],
"prompt_max_characters": 123,
"recommended_request": {},
"request_endpoint": "<string>",
"request_shape_mode": "<string>",
"status_mode": "<string>",
"request_id": "<string>"
}
}{
"error": {
"message": "An internal error occurred",
"type": "server_error"
}
}{
"error": {
"message": "Seedance material library request failed",
"type": "server_error",
"code": "seedance_material_library_request_failed"
}
}id do ativo de material retornado para a geração, e não a URL de origem.
Para library_type: "aigc_avatar", o group_id é opcional; o TokenLab utiliza ou cria o grupo de avatar virtual padrão da organização. Para library_type: "liveness_face", o group_id é obrigatório e deve ser o grupo TokenLab retornado por Obter resultado da validação visual.
| Tipo | Entrada suportada |
|---|---|
| Imagem | jpeg, jpg, png, webp, bmp, tiff, gif, heic, heif; ≤30 MiB; largura e altura [300, 6000] px; proporção [0.4, 2.5]. |
| Vídeo | mp4, mov; ≤200 MiB. |
| Áudio | aac, wav, mp3; ≤15 MiB. |
ACTIVE e confira error_message em caso de falha. As demais condições de mídia e rostos são verificadas durante o processamento.
A criação é assíncrona. Consulte Obter Material Asset até que o status seja ACTIVE. Para grupos de pessoas reais, um grupo é mapeado para uma pessoa verificada; uploads com múltiplos rostos ou um rosto que não corresponda à pessoa verificada podem falhar.
project_name isola recursos dentro da organização autenticada. O padrão é default; use o mesmo valor, diferenciando maiúsculas e minúsculas, para grupos e ativos relacionados. Envie-o no corpo JSON para POST/PUT e na consulta para GET/DELETE.
Exemplo de Requisição
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"}'
Exemplo de Resposta
{
"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
}
Autorizações
Autenticação por Chave de API. Crie ou gerencie chaves de API em Dashboard > API > API Keys.
Corpo
URL de origem publicamente acessível para importação. O TokenLab armazena o material para uso posterior; não dependa desta URL como o endereço de material de longo prazo.
Nome de exibição opcional armazenado com o ativo de material.
1 - 128Image, Video, Audio Classe da biblioteca de materiais. aigc_avatar é para materiais de avatar virtual. liveness_face é para materiais de pessoa real verificada.
aigc_avatar, liveness_face ID do grupo de materiais do TokenLab. Obrigatório para materiais liveness_face; opcional para aigc_avatar.
Escopo do projeto para o ativo de material. Ativos e grupos são isolados por projeto dentro da organização autenticada.
1 - 128Metadados do cliente opcionais armazenados com o ativo de material.
Resposta
Ativo de material criado
ID do ativo de material do TokenLab. Use isto como material_asset_id após o ativo se tornar ACTIVE.
seedance.material_asset aigc_avatar, liveness_face Image, Video, Audio PROCESSING, ACTIVE, FAILED, DELETED True quando o ativo está ativo e não excluído.
ID do grupo de materiais do TokenLab que possui este ativo de material.
Escopo do projeto para este ativo de material.
Erro de processamento terminal seguro para exibição pública. Falhas permanentes de validação de origem incluem a restrição de dimensão rejeitada.
Timestamp Unix de quando o registro do ativo de material foi criado.
Timestamp Unix de quando o registro do ativo de material foi atualizado pela última vez.