Base URL: /api/assets
Assets ​
List Assets ​
GET /
- Query Params:
limit: Number of items (default 50)offset: Pagination offsetfolderId: Filter by foldertype: Filter by asset type (IMAGE, VIDEO, etc.)tags: Filter by tags (comma-separated)search: Search term
- Response:
{ assets: Asset[], total: number }
Get Asset Details ​
GET /:id
- Response:
Assetobject
Upload Asset (Direct) ​
POST /direct
- Body: Multipart form data (
file) - Response:
{ asset: Asset, cdnUrl: string }
Import from URL ​
POST /import
- Body:
{ url: string, folderId?: string } - Response:
Assetobject
Update Asset ​
PATCH /:id
- Body:
{ title?, description?, altText?, tags?, folderId? } - Response: Updated
Assetobject
Delete Asset ​
DELETE /:id
- Query Params:
hard=truefor permanent delete - Response:
{ success: true }
Folders ​
List Folders ​
GET /folders
- Query Params:
parentId(optional) - Response:
AssetFolder[]
Create Folder ​
POST /folders
- Body:
{ name: string, parentId?: string } - Response:
AssetFolder
AI & Validation ​
Analyze Asset ​
POST /:id/analyze
- Triggers background AI analysis.
- Response:
{ queued: boolean, jobId: string }
Validate Asset ​
POST /:id/validate
- Body:
{ platforms: Platform[] } - Response:
Record<Platform, ValidationResult>
List Tags ​
GET /tags
- Returns all used tags with usage counts.
- Response:
{ name: string, count: number }[]