The Seedance Private Asset Library provides centralized hosting for reusable assets in video generation scenarios. You can upload images, videos, and audio to the asset library via API calls or through the "SD Asset Library" page in the DataeyesAI console. Once hosted, assets can be referenced in video generation requests using the asset://<AssetId> protocol, eliminating the need for repeated uploads.
Organize assets into groups by business dimension, with full CRUD support
Asset Hosting
Supports asynchronous upload, status polling, referencing, and deletion of Image / Video / Audio resources
Account Isolation
All resources are isolated at the account level. All API tokens under the same account share the same asset library; cross-account access is not permitted
Content Moderation
Assets are automatically reviewed for content safety after upload. Only assets with Active status can be used in video generation
Log in to the DataeyesAI console and navigate to the "API Tokens" module to create a token. It is recommended to assign separate tokens for different business lines for auditing and rate limiting purposes.
ResponseMetadata.RequestId: Unique identifier for this request. Always provide this field when troubleshooting.
Result: Business data, structured per API definition.
Error responses come in two forms:Form 1 — Gateway-level error (authentication failure, resource permission checks, etc. — no ResponseMetadata):
{"error":"resource does not belong to current user"}
Form 2 — Business-level error (parameter validation, business rules, etc. — includes ResponseMetadata.Error):
{"ResponseMetadata":{"RequestId":"...","Action":"CreateAssetGroup","Version":"2024-01-01","Service":"ark","Region":"cn-beijing","Error":{"Code":"MissingParameter.Name","Message":"The required parameter Name is missing."}}}
Paginated query of asset groups under the current account. The system automatically injects account-level isolation — no manual filtering required.Request:
POST /seedance?Action=ListAssetGroups&Version=2024-01-01
Fetch a resource from a public URL and ingest it into the library. This is an asynchronous API — a successful response only indicates the task has been accepted. You must poll GetAsset until the status becomes Active before the asset can be referenced in video generation.Request:
POST /seedance?Action=CreateAsset&Version=2024-01-01
Request Parameters:
Parameter
Type
Required
Description
GroupId
string
Yes
Parent asset group ID
URL
string
Yes
Publicly accessible URL of the asset
AssetType
string
Yes
Asset type: Image / Video / Audio
Name
string
No
Asset name, 1–64 characters. Used only for fuzzy search in ListAssets, not passed to model inference
Tip: Start polling the asset status immediately after upload. Image assets typically become Active within 3–10 seconds; video and audio assets may take longer.
Paginated query of assets with support for filtering by status, name, and type, as well as sorting. The system automatically injects account-level isolation.Request:
POST /seedance?Action=ListAssets&Version=2024-01-01
Request Parameters:
Parameter
Type
Required
Description
Filter.Statuses
string[]
No
Status filter: Processing / Active / Failed
Filter.Name
string
No
Fuzzy name matching
Filter.AssetType
string
No
Type filter: Image / Video / Audio
PageNumber
integer
No
Page number, defaults to 1
PageSize
integer
No
Items per page, defaults to 10, max 100
SortBy
string
No
Sort field, currently supports CreateTime
SortOrder
string
No
Sort direction: Asc or Desc (default)
Note: Filter is a nested object in the request body. Dot notation in the parameter table indicates hierarchy. For example, Filter.Statuses corresponds to {"Filter": {"Statuses": [...]}} in the request body.
Request Example:
Response Parameters:
Parameter
Type
Description
Result.TotalCount
integer
Total matching count
Result.PageNumber
integer
Current page number
Result.PageSize
integer
Current page size
Result.Items[]
array
List of assets
Result.Items[].Id
string
Asset ID
Result.Items[].Name
string
Asset name
Result.Items[].URL
string
Temporary download link (only returned when Active, valid for 12 hours)
Note: The URL field returns an empty string "" when the asset status is Processing. Once the status changes to Active, it returns a time-limited signed download link (valid for 12 hours by default). Call GetAsset again to obtain a new link after expiration.
Permanently delete an asset. This action is irreversible. It is not recommended to delete assets currently referenced by in-progress video generation tasks, as this may cause generation failures.Request:
POST /seedance?Action=DeleteAsset&Version=2024-01-01
Content array containing text descriptions and asset references
content[].type
string
Yes
Content type: text or image_url
content[].text
string
Conditional
Required when type=text, video description text
content[].role
string
Conditional
Optional when type=image_url, asset role (e.g., reference_image)
content[].image_url.url
string
Conditional
Required when type=image_url, supports asset://<AssetId> or public URL
ratio
string
No
Aspect ratio, e.g., 16:9, 9:16, 1:1
duration
integer
No
Video duration (seconds), e.g., 5, 10
watermark
boolean
No
Whether to add watermark, defaults to false
generate_audio
boolean
No
Whether to generate audio, defaults to false
Asset Reference Convention: Pass assets in the content array using asset://<AssetId>. In the prompt text, refer to assets using ordinal labels such as "Image 1", "Video 1", "Audio 1" (the ordinal is based on the asset's position among same-type assets in the array). Do NOT use Asset IDs directly in the prompt text.
Business-level errors include the full ResponseMetadata, with error details in ResponseMetadata.Error.
Error.Code
Description
Recommended Action
MissingParameter.<FieldName>
Required parameter is missing
Add the corresponding field as indicated in the Message
InvalidParameter.<FieldName>
Parameter format or value is invalid
Check parameter values against constraints
InvalidActionOrVersion
Action name or Version is incorrect
Check the Action and Version parameters in the URL
SubscriptionRequired
Required subscription not activated
Complete the authorization process in the console
Business-level error response example:
{"ResponseMetadata":{"RequestId":"202606241529096954A62A765732A09755","Action":"CreateAssetGroup","Version":"2024-01-01","Service":"ark","Region":"cn-beijing","Error":{"Code":"MissingParameter.Name","Message":"The required parameter Name is missing."}}}
Q: Asset remains in Processing status after upload?A: Check whether the source URL is publicly accessible. If the URL requires authentication or has geo-restrictions, the platform will be unable to fetch the resource, and the status will eventually change to Failed. Image assets typically complete processing within 3–10 seconds.Q: API call returns resource does not belong to current user?A: This error indicates that the resource (asset or asset group) you are trying to access does not belong to the account associated with the current API token. Please check:
1.
Whether the resource ID is correct;
2.
Whether you are using an API token from the correct account.
Asset library isolation is at the account level: all API tokens under the same account (regardless of which Seedance 2.0 model group they belong to) share the same asset library data. Resources are completely isolated between different accounts.
Q: Can API tokens from different groups under the same account share assets?A: Yes. The asset library is isolated at the account level. All API tokens across all Seedance 2.0 model groups under the same account see identical asset groups and assets. Assets created with any token can be viewed and referenced by all other tokens under the same account.Q: Asset download link URL field is an empty string?A: When the asset status is Processing, the URL field returns an empty string "". Wait for the asset status to change to Active before retrieving the download link.Q: Video generation task still not completed after a long time?A: Video generation time depends on resolution and duration. 720p / 5-second videos typically complete in 1–3 minutes; 4K resolution may take 30+ minutes.Q: What to do when the URL download link has expired?A: Asset download links are valid for 12 hours. After expiration, simply call the GetAsset API again to obtain a new signed link. The asset itself does not expire — only the temporary download link has a time limit.