Skip to main content
All asset management endpoints require authentication via JWT Bearer token or API key. See Authentication for details.

Upload an asset

Uploads a new image asset. The request must be multipart/form-data. On success, the server returns 202 Accepted and begins background processing (enrichment, derivative generation) if runEnrichment is enabled.

Request fields

file
file
required
The image file to upload. Must not be empty. Allowed content types are configured server-side (typically image/png, image/jpeg, image/gif, image/webp, etc.).
description
string
Optional description for the asset. Maximum 1000 characters.
altText
string
Optional alt text for the asset. Maximum 1000 characters.
isPublic
boolean
Whether the asset should be publicly accessible. Defaults to true.
storageProviderProfileId
string (uuid)
Optional. The ID of the storage provider profile to use. If omitted, the default storage provider is used.
runEnrichment
boolean
Whether to run AI enrichment after upload. Defaults to true.
commitMessage
string
Optional commit message for storage providers that support it (e.g. GitHub Repo).

Response — 202 Accepted

data
object

Errors

Example


List assets

Returns a paginated list of all assets visible to the authenticated user.

Query parameters

page
integer
Page number. Defaults to 1.
pageSize
integer
Number of results per page. Defaults to the server-configured default, capped at the configured maximum.
query
string
Free-text search. Also accepted as keyword. Matches file name, description, and alt text.
contentType
string
Filter by MIME type (e.g. image/jpeg).
status
string
Filter by processing status. One of: pending, processing, ready, failed.
orderBy
string
Field to sort by. Also accepted as sortBy. Supported values: createdAtUtc (default), size.
orderDirection
string
Sort direction. Also accepted as sortDirection. One of: asc, desc (default).

Response

data
object

Example


Get an asset

Returns full details for a single asset, including all derivatives and structured AI results.

Path parameters

id
string (uuid)
required
The unique identifier of the asset.

Response

data
object
Returns 404 Not Found with error code asset_not_found if the asset does not exist.

Example


Update asset metadata

Updates metadata fields for an existing asset. Only fields you include in the request body are changed (patch semantics).

Path parameters

id
string (uuid)
required
The unique identifier of the asset to update.

Request body

description
string
New description. Maximum 1000 characters. Omit to leave unchanged.
altText
string
New alt text. Maximum 1000 characters. Omit to leave unchanged.
originalFileName
string
New original filename. Omit to leave unchanged.
isPublic
boolean
Change public visibility. Omit to leave unchanged.

Response

Returns the full updated asset object (same shape as Get an asset).

Example


Delete an asset

Permanently deletes an asset. This is a hard delete — the asset record and its file in storage are both removed.

Path parameters

id
string (uuid)
required
The unique identifier of the asset to delete.

Request body (optional)

commitMessage
string
Optional commit message for storage backends that support versioning (e.g. GitHub Repo).

Response

data
object
Returns 404 Not Found with error code asset_not_found if the asset does not exist.

Example


Batch delete assets

Deletes multiple assets in one request. Assets that do not exist are silently skipped and reported in notFoundIds.

Request body

ids
array of strings (uuid)
required
An array of asset IDs to delete.

Response

data
object

Example


Get asset content

Accesses the content of an asset, with access control applied:
  • Public asset: Returns a 307 Temporary Redirect to the public content URL.
  • Private asset: Streams the content directly (requires valid JWT or API key).

Path parameters

id
string (uuid)
required
The unique identifier of the asset.
Returns 404 Not Found with error code asset_not_found if the asset does not exist.

Example


List available skills

Returns a list of AI skills available to run against assets.

Response

data
array

Example


Run a skill on an asset

Triggers an AI skill to run against a specific asset. Skills can generate captions, alt text, thumbnails, and other derived outputs.

Path parameters

id
string (uuid)
required
The unique identifier of the asset.
skillName
string
required
The name of the skill to run. Use List available skills to discover valid skill names.

Request body (optional)

parameters
object
Optional skill-specific parameters as a JSON object. The accepted parameters depend on the skill being run.

Response

data
object

Example


Get usage statistics

Returns aggregate usage statistics across all assets.

Response

data
object

Example