Upload Image
Storage Endpoints
Upload Image
Upload an image with server-side processing and named variant generation
POST
Upload Image
Uploads an image, processes it with Sharp, and stores the original plus all requested variants. Returns proxy URLs for all variants immediately.
This endpoint accepts
multipart/form-data. Requires an authenticated user.
Rate limit: 20 requests per 5 minutes.
Body Parameters
file
required
The image file to upload. Must be a valid image format recognized by Sharp (JPEG, PNG, WebP, AVIF, TIFF, GIF, SVG). Maximum 50 MB.
string
required
Processing mode. One of:
exact-dimensions, aspect-ratio-width-based, aspect-ratio-height-based, original-aspect, multi-aspect-ratio.object
Required for
exact-dimensions mode. An object mapping variant names to { width, height } pairs.object
Required for
aspect-ratio-width-based and aspect-ratio-height-based modes. { width, height } ratio.object
Required for
aspect-ratio-width-based mode. An object mapping variant names to pixel widths.object
Required for
aspect-ratio-height-based mode. An object mapping variant names to pixel heights.object
Required for
original-aspect and multi-aspect-ratio modes. An object mapping variant names to longest-edge pixel sizes.array
Required for
multi-aspect-ratio mode. Array of { width, height } aspect ratio objects.string
Sharp fit strategy. Defaults to
cover. Valid values depend on the mode:exact-dimensions,aspect-ratio-width-based,aspect-ratio-height-based,multi-aspect-ratio:cover,contain,inside, oroutsideoriginal-aspect:insideoroutsideonly (cover/containare not valid for this mode)
number
Output quality (1–100). Applies to JPEG and WebP. Defaults to
85.string
Output format:
webp, jpeg, png, or original. Defaults to webp.boolean
Remove EXIF metadata from output. Defaults to
true.array
Storage path segments as a JSON-encoded array. Defaults to
["images", "<fileId>"].string
Associates the file with an entity for cascade deletion.
string
Associates the file with a comment for cascade deletion.
string
Associates the file with a space.
string
Attribute the upload to a specific user. With a user token the upload is
already attributed to the caller; only service/master keys may name a
different user. Omit for a backend/project-owned file (no owning user).
Response
Error Responses
No File — 400 Bad Request
No File — 400 Bad Request
File Too Large — 413
File Too Large — 413
Invalid Image — 422
Invalid Image — 422

