TUIWOTUIWO
APIByteDanceSeedance series

Asset library overview

Entry points, authentication, responses and limits for assets.

Endpoint

Asset operations use POST with Action and Version:

DeploymentAsset URL
Unified /aihttps://ai.tuiwo.vip/ai?Action=<Action>&Version=2024-01-01

All asset operations use the /ai entry point.

Authentication

Authorization: Bearer <TUIWO_API_TOKEN>
Content-Type: application/json
  • Use a TUIWO API key, not a native AccessKey/SecretKey.
  • The key must be bound to a concrete group and allow at least one Seedance model in that group.
  • The platform proxies to an asset-capable channel in the current group; callers never see service credentials.
  • This is not an AK/SK signing flow; use native signing with the model service if you need it.

Request

{
  "Action": "ListAssets",
  "Version": "2024-01-01"
}

Action and Version are URL query parameters, not body fields:

curl -X POST 'https://ai.tuiwo.vip/ai?Action=ListAssets&Version=2024-01-01' \
  -H 'Authorization: Bearer $TUIWO_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"PageNumber":1,"PageSize":20}'

The request body is limited to 10 MiB. Version must be 2024-01-01.

Response

Business data is under Result; platform metadata is under ResponseMetadata:

{
  "ResponseMetadata": {
    "RequestId": "0217...",
    "Action": "CreateAsset",
    "Version": "2024-01-01",
    "Service": "ark",
    "Region": "cn-beijing"
  },
  "Result": {
    "Id": "ASSET_ID"
  }
}

Errors may be under ResponseMetadata.Error even when HTTP is 200, so always inspect it:

{
  "ResponseMetadata": {
    "Error": {
      "Code": "ContentRestricted",
      "Message": "content moderation failed"
    }
  }
}

Platform authentication, group and proxy failures use:

{
  "error": {
    "code": "AccessDenied",
    "message": "The pinned channel is not available"
  }
}

Actions

CategoryActionPurpose
GroupCreateAssetGroupCreate a group
GroupGetAssetGroupGet a group
GroupListAssetGroupsList groups
GroupUpdateAssetGroupRename or update a group
GroupDeleteAssetGroupDelete a group and its assets
AssetCreateAssetCreate an image, video or audio asset
AssetGetAssetGet asset status and metadata
AssetListAssetsList and filter assets
AssetUpdateAssetRename an asset
AssetDeleteAssetDelete an asset
LivenessCreateVisualValidateSessionCreate a liveness session
LivenessGetVisualValidateResultPoll the liveness result

CreateRealValidateH5 is present in the proxy allowlist but is not documented by the service; do not rely on it until confirmed.

Detailed pages

Minimal workflow

  1. CreateAssetGroup and read Result.Id.
  2. CreateAsset into that group and read Result.Id.
  3. Poll GetAsset or ListAssets until Status = Active.
  4. Reference asset://<ASSET_ID> in a video request.
{
  "type": "image_url",
  "image_url": {"url": "asset://ASSET_ID"},
  "role": "reference_image"
}

Limits

  • Only Active assets can be used. Processing needs more polling; inspect Error for Failed.
  • Groups and assets belong to the current authorized workspace. Customers in the same group can see and reference each other's groups, including liveness groups. Only share a group with trusted customers.
  • The group must have exactly one asset-capable service configuration. Multiple configurations return 409 AmbiguousServiceConfiguration; none returns 404 NotFound.
  • The platform does not store video files. directly reachable asset URLs are returned as-is; other service URLs use the platform-signed proxy. Proxy URLs use /v1/media/image, /v1/media/audio or /v1/media/video by asset type; downloads are named after the asset ID with the actual extension.
  • Some model services return Pending; the Statuses filter is service-defined and does not guarantee that only Active items are returned, so check each item.
  • Page size depends on the service; the platform currently caps around 50, while the reference API allows up to 100.
  • Deleting assets or groups is irreversible.

Common errors

codeMeaning
InvalidActionOrVersionAction not allowed, or Version is not 2024-01-01
QuotaExceededAsset quota exhausted
FlowLimitExceededToo many concurrent or frequent requests
ContentRestrictedModeration failed
DownloadFailedService cannot download the asset URL
TypeMismatchAsset type does not match the content
FormatUnsupported / FormatUndetectableUnsupported or undetectable format
FaceMismatchReal-person asset does not match the verified person
VisualValidateFailed / VisualValidateSessionExpiredLiveness failed or the session expired
InternalErrorService internal error