Upload images, videos, audio, or PDFs to get an asset_id you can reference in other endpoints — like POST /v3/video-agents, POST /v3/videos, or POST /v3/avatars.
Upload an Asset
Response
Supported File Types
Max file size: 32 MB. MIME type is auto-detected from file bytes. For larger files, use the direct upload flow below.
Direct Upload for Large Files
POST /v3/assets proxies file bytes through the API, which is why it’s capped at 32 MB. For larger files, use the presigned direct upload flow — three required steps:
POST /v3/assets/direct-uploadswithfilename,content_type, and exactsize_bytes→ returnsasset_id, a presignedupload_url, andupload_headers.PUTthe raw file bytes toupload_url, sendingupload_headersverbatim, before the URL expires (expires_in_seconds).POST /v3/assets/{asset_id}/completeto finalize. Idempotent. Theasset_idis not usable until this step succeeds.
max_bytes in the initialize response. See Upload Assets for full examples in Python and Node.js. To upload up to 100 files in one call, use the batch variant of this flow.
Using Assets
Once uploaded, reference theasset_id anywhere the API accepts asset inputs:
{"type": "url", "url": "https://..."}) or base64 ({"type": "base64", "media_type": "image/png", "data": "..."}). The 32 MB per-file limit applies to URL inputs too — for larger files, upload via the direct upload flow and pass the asset_id. Use asset_id when you need to reuse the same file across multiple requests.
