Skip to main content
Post a multipart form to /upload. Every file comes back with its storage path and a /t/ delivery URL.
Auth: API Key, session, or a presigned signature from Sign Upload Content-Type: multipart/form-data

Form fields

Allowed types: JPEG, PNG, WebP, AVIF, GIF, HEIC/HEIF, PSD, MP4, MOV, WebM, WAV, MP3, OGG, GLB, glTF Max size per file: configurable via MAX_FILE_SIZE_MB, default 50 MB Prewarming pre-generates and caches each variant, so the first user request is served from cache with no processing delay. HEIC and HEIF files are transcoded to JPEG on upload. The returned filename, path and url carry a .jpg extension instead of the original .heic or .heif.
Content is checked, not just the extension. The first bytes of each file must match the format it claims to be, so a .jpg holding an HTML document is rejected here rather than stored. A mismatch fails that one file with File content does not match its .jpg type and the rest of the batch still uploads.

Examples

Response

A fully successful upload returns only success and files. There is no errors key, and the optional per-file arrays appear only when they have something in them:
Each entry in files: Each entry in errors carries filename, the name of the failed file, and error, the message.

Create Folder

Create an empty folder in storage.

Upload & Cache Warming

Prewarm strategy guide.

Delete File

Remove a file and its cached variants.

Sign Upload

Let an untrusted client upload without your API key.