---
title: "Create Seedance material asset"
method: POST
path: "/v1/videos/assets"
tags: ["Video"]
---

# Create Seedance material asset

`POST /v1/videos/assets`

## Request

- Base URL: `https://api.tokenlab.sh`
- URL: `https://api.tokenlab.sh/v1/videos/assets`
- Auth: HTTP bearer

Uploads one Seedance material asset URL into a TokenLab material group. Image materials must use supported dimensions; an invalid source is rejected with 400 seedance_material_source_invalid instead of remaining in PROCESSING. Real-person assets require the group_id mapped from Result.GroupId returned by GetVisualValidateResult.

## Request body

- SeedanceMaterialAssetCreateRequest
  - `asset_url` string, uri, required: Publicly reachable source URL to import. TokenLab stores the material for later use; do not rely on this URL as the long-term material address.
  - `asset_name` string: Optional display name stored with the material asset.
  - `asset_type` 'Image' | 'Video' | 'Audio'
  - `library_type` 'aigc_avatar' | 'liveness_face': Material library class. aigc_avatar is for virtual-avatar materials. liveness_face is for verified real-person materials.
  - `group_id` string: TokenLab material group ID. Required for liveness_face materials; optional for aigc_avatar.
  - `project_name` string: Project scope for the material asset. Assets and groups are isolated by project inside the authenticated organization.
  - `metadata` object, nullable: Optional client metadata stored with the material asset.

## Response `201`

Material asset created

- SeedanceMaterialAsset
  - `id` string, required: TokenLab material asset ID. Use this as material_asset_id after the asset becomes ACTIVE.
  - `object` 'seedance.material_asset', required
  - `group_id` string, nullable: TokenLab material group ID that owns this material asset.
  - `project_name` string: Project scope for this material asset.
  - `library_type` 'aigc_avatar' | 'liveness_face', required
  - `asset_name` string, nullable
  - `asset_type` 'Image' | 'Video' | 'Audio', required
  - `status` 'PROCESSING' | 'ACTIVE' | 'FAILED' | 'DELETED', required
  - `ready` boolean, required: True when the asset is active and not deleted.
  - `error_message` string, nullable: Public-safe terminal processing error. Permanent source validation failures include the rejected dimension constraint.
  - `metadata` object, nullable
  - `created_at` integer: Unix timestamp when the material asset record was created.
  - `updated_at` integer: Unix timestamp when the material asset record was last updated.

## Other responses

- `400`: Bad Request - Invalid input
- `401`: Unauthorized - Invalid or missing API key
- `409`: Material asset mapping conflict
- `500`: Internal Server Error
- `503`: Material library unavailable

---

[API](https://skmtc.dev/tokenlab/apis/tokenlab-ai-gateway.md) · [All operations](https://skmtc.dev/tokenlab/apis/tokenlab-ai-gateway/llms.txt) · [OpenAPI document](https://skmtc.dev/tokenlab/apis/tokenlab-ai-gateway/revisions/3208bfbcda22?raw)
