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"
}
}Membuat Aset Material
Mengunggah aset material Seedance ke dalam grup material 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 aset material yang dikembalikan untuk pembuatan, bukan URL sumbernya.
Untuk library_type: "aigc_avatar", group_id bersifat opsional; TokenLab menggunakan atau membuat grup virtual-avatar default organisasi. Untuk library_type: "liveness_face", group_id wajib diisi dan harus berupa grup TokenLab yang dikembalikan oleh Mendapatkan hasil validasi visual.
| Tipe | Input yang didukung |
|---|---|
| Gambar | jpeg, jpg, png, webp, bmp, tiff, gif, heic, heif; ≤30 MiB; lebar dan tinggi [300, 6000] px; rasio aspek [0.4, 2.5]. |
| Video | mp4, mov; ≤200 MiB. |
| Audio | aac, wav, mp3; ≤15 MiB. |
ACTIVE dan periksa error_message jika pemrosesan gagal. Persyaratan media dan wajah lainnya diperiksa selama pemrosesan.
Pembuatan bersifat asinkron. Lakukan polling pada Mendapatkan Material Asset hingga status menjadi ACTIVE. Untuk grup orang asli (real-person), satu grup dipetakan ke satu orang yang terverifikasi; unggahan dengan banyak wajah atau wajah yang tidak cocok dengan orang yang terverifikasi dapat gagal.
project_name memisahkan sumber daya dalam organisasi yang terautentikasi. Nilai default adalah default; gunakan nilai yang sama dan peka huruf besar-kecil untuk grup dan aset terkait. Kirim di body JSON untuk POST/PUT dan parameter kueri untuk GET/DELETE.
Contoh Permintaan
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"}'
Contoh Respons
{
"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
}
Otorisasi
Autentikasi API Key. Buat atau kelola API key di Dashboard > API > API Keys.
Body
URL sumber yang dapat dijangkau publik untuk diimpor. TokenLab menyimpan materi untuk penggunaan nanti; jangan mengandalkan URL ini sebagai alamat materi jangka panjang.
Nama tampilan opsional yang disimpan bersama aset materi.
1 - 128Image, Video, Audio Kelas pustaka materi. aigc_avatar untuk materi avatar virtual. liveness_face untuk materi orang asli yang terverifikasi.
aigc_avatar, liveness_face ID grup materi TokenLab. Diperlukan untuk materi liveness_face; opsional untuk aigc_avatar.
Cakupan proyek untuk aset materi. Aset dan grup diisolasi berdasarkan proyek di dalam organisasi yang terautentikasi.
1 - 128Metadata klien opsional yang disimpan bersama aset materi.
Respons
Aset materi berhasil dibuat
ID aset materi TokenLab. Gunakan ini sebagai material_asset_id setelah aset menjadi ACTIVE.
seedance.material_asset aigc_avatar, liveness_face Image, Video, Audio PROCESSING, ACTIVE, FAILED, DELETED True saat aset aktif dan tidak dihapus.
ID grup materi TokenLab yang memiliki aset materi ini.
Cakupan proyek untuk aset materi ini.
Kesalahan pemrosesan terminal yang aman untuk publik. Kegagalan validasi sumber permanen mencakup batasan dimensi yang ditolak.
Stempel waktu Unix saat catatan aset materi dibuat.
Stempel waktu Unix saat catatan aset materi terakhir diperbarui.