Upload an asset
multipart/form-data. On success, the server returns 202 Accepted and begins background processing (enrichment, derivative generation) if runEnrichment is enabled.
Request fields
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.).string
Optional description for the asset. Maximum 1000 characters.
string
Optional alt text for the asset. Maximum 1000 characters.
boolean
Whether the asset should be publicly accessible. Defaults to
true.string (uuid)
Optional. The ID of the storage provider profile to use. If omitted, the default storage provider is used.
boolean
Whether to run AI enrichment after upload. Defaults to
true.string
Optional commit message for storage providers that support it (e.g. GitHub Repo).
Response — 202 Accepted
object
Errors
Example
List assets
Query parameters
integer
Page number. Defaults to
1.integer
Number of results per page. Defaults to the server-configured default, capped at the configured maximum.
string
Free-text search. Also accepted as
keyword. Matches file name, description, and alt text.string
Filter by MIME type (e.g.
image/jpeg).string
Filter by processing status. One of:
pending, processing, ready, failed.string
Field to sort by. Also accepted as
sortBy. Supported values: createdAtUtc (default), size.string
Sort direction. Also accepted as
sortDirection. One of: asc, desc (default).Response
object
Example
Get an asset
Path parameters
string (uuid)
required
The unique identifier of the asset.
Response
object
404 Not Found with error code asset_not_found if the asset does not exist.
Example
Update asset metadata
Path parameters
string (uuid)
required
The unique identifier of the asset to update.
Request body
string
New description. Maximum 1000 characters. Omit to leave unchanged.
string
New alt text. Maximum 1000 characters. Omit to leave unchanged.
string
New original filename. Omit to leave unchanged.
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
Path parameters
string (uuid)
required
The unique identifier of the asset to delete.
Request body (optional)
string
Optional commit message for storage backends that support versioning (e.g. GitHub Repo).
Response
object
404 Not Found with error code asset_not_found if the asset does not exist.
Example
Batch delete assets
notFoundIds.
Request body
array of strings (uuid)
required
An array of asset IDs to delete.
Response
object
Example
Get asset content
- Public asset: Returns a
307 Temporary Redirectto the public content URL. - Private asset: Streams the content directly (requires valid JWT or API key).
Path parameters
string (uuid)
required
The unique identifier of the asset.
404 Not Found with error code asset_not_found if the asset does not exist.
Example
List available skills
Response
array
Example
Run a skill on an asset
Path parameters
string (uuid)
required
The unique identifier of the asset.
string
required
The name of the skill to run. Use List available skills to discover valid skill names.
Request body (optional)
object
Optional skill-specific parameters as a JSON object. The accepted parameters depend on the skill being run.
Response
object
Example
Get usage statistics
Response
object