Asset Management

Asset management lets video generation and other scenarios reference image/video/audio assets. The platform provides two sets of asset APIs:

APIPathAuthenticationUse case
Proprietary asset library/api/business/v1/assetsAPI key or JWTNot yet in the public OpenAPI; not a standalone integration entry
Volcengine-compatible assets/api/ark/*Volcengine V4 signingVolcengine SDK migration

The proprietary asset library is not yet part of the public OpenAPI. The content below only describes existing business flows and must not be treated as a standalone integration example that can be completed from the public docs alone. For new integrations, contact SilvaMux first to confirm permissions and contracts. The Volcengine-compatible asset APIs can be integrated against the public /api/ark OpenAPI contract.

On this page:

Proprietary Asset Library

Base path /api/business/v1, authenticated with Authorization: Bearer sk_live_... or JWT.

Data Model (AssetView)

{
  "id": "AST-01JQ8Y7P8R6L7S9T0U1V2W3X4Y",
  "url": "https://example.com/image.png",
  "asset_type": "Image",
  "name": "cover-image",
  "asset_url": "asset://asset-123456",
  "status": "processing",
  "created_at": "2026-03-27T10:00:00Z"
}
FieldDescription
idAsset ID
urlAsset download URL. Once active, a signed (time-limited) volcengine download URL is returned and auto-refreshed by the platform when expired; while processing, the original asset URL is returned
asset_typeAsset type (Image/Video/Audio)
nameAsset name
asset_urlAsset reference, format asset://<asset-id>, used by video generation
statusprocessing, active, failed, timeout; only active is usable

Endpoints

MethodPathDescription
POST/assetsCreate an asset (register a public URL)
GET/assetsList assets (paginated)
GET/assets/{asset_id}Get a single asset

Creating an Asset

curl -X POST https://www.silvamux.com/api/business/v1/assets \
  -H "Authorization: Bearer $SILVAMUX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/image.png",
    "asset_type": "Image",
    "name": "cover-image"
  }'
FieldRequiredDescription
urlYesPublic URL of the asset
asset_typeYesImage, Video, Audio
nameNoAsset name; derived from the URL when omitted

A successful create returns 201 with an AssetView body. New assets usually start as processing and later become active, failed, or timeout. The backend polls processing assets every 5 seconds; assets still not ready 24 hours after creation are marked timeout.

Listing Assets

curl "https://www.silvamux.com/api/business/v1/assets?limit=20" \
  -H "Authorization: Bearer $SILVAMUX_API_KEY"
ParameterDescription
limitPage size, 1–100, default 20
cursorPagination cursor; omit on the first call

Getting a Single Asset

curl "https://www.silvamux.com/api/business/v1/assets/AST-01JQ8Y7P8R6L7S9T0U1V2W3X4Y" \
  -H "Authorization: Bearer $SILVAMUX_API_KEY"

Commonly used to poll the asset status until it becomes active.

Minimal Call Flow

  1. Prepare a publicly accessible asset URL
  2. POST /assets to create it and get id and asset_url
  3. Poll GET /assets/{id} until status becomes active
  4. Reference asset_url in video generation

Referencing a non-active asset returns InvalidParameter.asset_status. Make sure the asset is active before using it in video generation.

Volcengine-Compatible API

Compatible with the Volcengine asset management operations listed on this page. Customers migrating from Volcengine can keep using the official Volcengine SDKs, pointing the access address at this platform and swapping credentials for platform-issued AK/SK.

POST/api/ark

火山兼容 API

多个素材和 CV Action 共用该路径,请求体结构由 Action 和 Version 决定。

Volcengine V4 SigningRequests are signed with HMAC-SHA256 V4 using AK/SK issued by the platform.

Request structure

The section below confirms the method, URL and authentication scheme. It is an HTTP structure snippet, not a standalone runnable example.

HTTP
POST https://www.silvamux.com/api/ark
Authorization: HMAC-SHA256 Credential=<AK>/...
Content-Type: application/json

Request parameters

ParameterType & locationRequiredDescription
Actionstring (CreateAssetGroup | GetAssetGroup | ListAssetGroups | UpdateAssetGroup | DeleteAssetGroup | CreateAsset | GetAsset | ListAssets | UpdateAsset | DeleteAsset | CVProcess | CVSubmitTask | CVGetResult) · queryYes
Versionstring (2024-01-01 | 2022-08-31) · queryNo火山协议版本。素材操作使用 2024-01-01,CV 操作使用 2022-08-31;当前 handler 不强制校验该参数。

Request body

application/json · CreateAssetGroup | GetAssetGroup / DeleteAssetGroup | ListAssetGroups | UpdateAssetGroup | CreateAsset | GetAsset / DeleteAsset | ListAssets | UpdateAsset | CVSubmitTask / CVProcess / CVGetResult · Required

CreateAssetGroup

FieldTypeRequiredDescription
DescriptionstringNo
GroupTypestring (AIGC)No
NamestringYes

GetAssetGroup / DeleteAssetGroup

FieldTypeRequiredDescription
IdstringYes

ListAssetGroups

FieldTypeRequiredDescription
FilterobjectNo
Filter.GroupIdsarray<string>No
Filter.GroupTypestringNo
Filter.NamestringNo
PageNumberinteger (int64)No
PageSizeinteger (int64)No
SortBystringNo
SortOrderstringNo

UpdateAssetGroup

FieldTypeRequiredDescription
DescriptionstringNo
IdstringYes
NamestringNo

CreateAsset

FieldTypeRequiredDescription
AssetTypestring (Image | Video | Audio)Yes
GroupIdstringYes
NamestringNo
URLstring (uri)Yes

GetAsset / DeleteAsset

FieldTypeRequiredDescription
IdstringYes

ListAssets

FieldTypeRequiredDescription
FilterobjectNo
Filter.GroupIdsarray<string>No
Filter.GroupTypestringNo
Filter.NamestringNo
Filter.Statusesarray<string>No
PageNumberinteger (int64)No
PageSizeinteger (int64)No
SortBystringNo
SortOrderstringNo

UpdateAsset

FieldTypeRequiredDescription
IdstringYes
NamestringNo

CVSubmitTask / CVProcess / CVGetResult

FieldTypeRequiredDescription
audio_urlstring (uri)No
image_urlstring (uri)No
mask_urlstring (uri) | array<string (uri)>No
req_keystringYes
task_idstringNo

Response

200火山兼容响应 envelope。

application/json · ArkResponse

FieldTypeDescription
ResponseMetadataFreeFormObject
ResultFreeFormObject

default火山兼容错误 envelope。

application/json · ArkResponse

FieldTypeDescription
ResponseMetadataFreeFormObject
ResultFreeFormObject
ItemValue
Endpointhttps://www.silvamux.com/api/ark
Regioncn-beijing
Serviceark
AuthenticationVolcengine V4 signing with platform-issued AK/SK
InvocationPOST /api/ark?Action=<Action>&Version=2024-01-01

Preparation

  1. Console → Credentials → create a Volcengine compatible (AK/SK) credential; the AK and SK are returned once (the SK is visible only then).
  2. AK/SK are bound to the organization; the project is selected via the ProjectName field.

SDK Configuration

In the asset client of the official Volcengine SDK, change:

ConfigValue
Endpointhttps://www.silvamux.com/api/ark
Regioncn-beijing
Access KeyPlatform-issued AK
Secret KeyPlatform-issued SK

The exact client class names and initialization follow the Volcengine SDK version you use. This repository does not ship a standalone client named ArkAssetClient.

Supported Operations

Request body field names match Volcengine (camelCase, capitalized).

Asset groups (AssetGroup): CreateAssetGroup (AIGC only; backfills the organization-level shared Volcengine group id on creation), GetAssetGroup, ListAssetGroups, UpdateAssetGroup, DeleteAssetGroup. ListAssetGroups takes an optional Filter.GroupType, default AIGC (lists only AIGC groups); pass LivenessFace to list real-person groups; other values return InvalidParameter.GroupType. DeleteAssetGroup on a real-person group also deletes the upstream Volcengine real-person group (errors out if provider_group_id is missing); AIGC groups only clear local records (shared groups are not deleted).

Assets: CreateAsset (GroupId+URL+AssetType+Name, optional GroupType), GetAsset, ListAssets, UpdateAsset, DeleteAsset. AssetType can be Image/Video/Audio.

CreateAsset routes the upstream group automatically by the target group's type: pointing at an AIGC group uploads through the normal AIGC asset pipeline (into the organization-level AIGC Volcengine group); pointing at a LivenessFace group returned by the CreateVisualValidateSession + GetVisualValidateResult flow goes through the real-person asset pipeline, with the upstream real-person group id resolved internally — clients never need to know it. See Liveness Verification for the full flow.

An empty ProjectName or default uses the default project; other values are matched exactly by project name.

Important Limits

  • Historical assets are not visible: assets previously uploaded through the Volcengine console or other accounts cannot be accessed through this API; they must be re-uploaded.
  • Asset types: CreateAsset pointing at an AIGC group handles normal AIGC assets (images/videos/audio); real-person assets (LivenessFace) require completing liveness verification via CreateVisualValidateSession + GetVisualValidateResult first, then uploading to the returned LivenessFace group — the platform routes by group type automatically (see Liveness Verification).
  • CreateAsset requires a publicly accessible asset URL; the platform fetches and ingests it.

Error Codes

CodeMeaning
InvalidSignatureSignature verification failed (wrong AK/SK, tampered request, or excessive clock skew)
InvalidActionUnsupported action
MissingParameter.*Missing required field
InvalidParameter.*Invalid field value
NotFound.asset_id / NotFound.projectAsset / project not found
SubscriptionRequiredThe organization has not enabled the capability
InternalErrorInternal error; note the RequestId and contact support

Referencing Assets in Video Generation

Once an asset is active, reference it in video generation's content via asset_url (asset://...):

{
  "model": "<MODEL_CALL_NAME>",
  "content": [
    {"type": "video_url", "video_url": "asset://asset-123456"},
    {"type": "text", "text": "Make the character in the frame dance"}
  ]
}

Migration Notes (Volcengine → SilvaMux)

CapabilityVolcengineSilvaMuxNotes
Chat (Doubao)/api/v3/chat/completionsPOST /api/v3/chat/completionsProtocol compatible — change the base URL + key; use the platform call name for model
Video generation/contents/generations/tasksPOST /api/v3/contents/generations/tasksPlatform API + API key, no V4 signing
Asset managementVolcengine official APIPOST /api/ark/* (this page) or /api/business/v1/assetsTwo options
  • Video generation uses the API key, not V4 signing. V4 signing is only for the asset APIs on this page.
  • API keys (sk_live_) and AK/SK are created separately in the console and are different credentials.
  • model uses the real call name shown by the Model Plaza or the model list, not a Volcengine endpoint ID.
  • Video and 3D tasks support task lists, single-task queries, and a callback_url at creation; fields and authentication follow the public OpenAPI contract.