Images
To transform an image, you need to make a request with parameters. The service will create a new file, return it in response to the request, and save it to your storage.
For subsequent requests with the same parameters, the already created file will be returned.
Example:
// create a new image with a width of 100px while maintaining the aspect ratiohttps://api.defaultuploader.com/v1/image/upload/token/sample.jpg?w=100Creates an image with the specified width while maintaining the correct aspect ratio.
min 0, max 5000height
Section titled “height”Creates an image with the specified height while maintaining the correct aspect ratio.
min 0, max 5000format
Section titled “format”Changes the image format.
Supported formatsJPEG, PNG, WebP, AVIF, TIFF, GIF, SVG, HEIC
autoComing soonAutomatic detection of modern image format support by the browser.
quality
Section titled “quality”min 0, max 100, default value = 75Change the image quality.
1, 2 — default 1Supports high-resolution screens, doubling the image size.
animated
Section titled “animated”animated=0Disable animation for GIF or WebP.
How the image should be resized/cropped to fit the target size(s).
cover, contain, fill, inside, outsideSets the background color when using fit=contain. The empty space around the image is filled with the specified color instead of black.
Format: 6-character hex color without #Example: bg=ffffff, bg=1a1a2eAdds padding around the image as a percentage of the canvas size. Works only with fit=contain.
min 0, max 50 (percentage)Smart crop. face and auto use AI to find a face or the “interesting” part of the image and center it in the crop. manual skips detection and crops around a focal point you choose with pos_x/pos_y — that point is placed at the center of the crop, with the framing controlled by zoom, the target aspect from w/h, and edge handling via pos_edge.
face, auto, manualCut out an explicit rectangle of the source image, in percentages — no detection involved. Format: x,y,w,h, where x/y are the offset of the top-left corner and w/h the size of the region, each from 0 to 100.
x,y,w,h — each 0–100 (percent); x+w ≤ 100, y+h ≤ 100Combine with w/h to resize the cropped region afterwards. crop needs no detection and takes an exact region, so it always takes precedence over func.
Optional parameter for “smart” cropping (func). Adjusts how tightly the crop frames the subject.
min 0.1, max 10, step 0.1 — default 1Values greater than 1 zoom in (a tighter crop around the face). Values less than 1 zoom out, keeping more context around the face — handy for banners and wide layouts. When zooming out past the image edges, the empty area is handled by pos_edge.
Horizontal position of the detected face within the output frame, as a percentage. Requires func=face. With func=manual it instead sets the horizontal focal point in the source image (see func).
min 0, max 100 — default 50 (centered)pos_x=0 aligns the face to the left edge, pos_x=100 to the right edge.
Vertical position of the detected face within the output frame, as a percentage. Requires func=face. With func=manual it instead sets the vertical focal point in the source image (see func).
min 0, max 100 — default 38 (golden ratio)When omitted, the face sits at about 38% from the top (golden ratio), shifting toward the center for group photos.
pos_edge
Section titled “pos_edge”Strategy for the area that falls outside the source image when the crop extends past its edges (for example with zoom < 1, or an extreme pos_x/pos_y). Requires func=face or func=manual.
fill, clamp, outpaint — default fillfill— keep the requested framing and fill the overflow with thebgcolor, or transparency (white for formats without an alpha channel, such as JPEG).clamp— shift the crop to stay inside the image so there are no margins (the face position may move slightly).outpaint— generate the missing background with AI. heavy slower, processed on a separate queue.
Creates a blurred image
min 0.3, max 1000negate
Section titled “negate”Creates a “negative” image
?negatenormalize_lower
Section titled “normalize_lower”Enhances the contrast of the output image by stretching its brightness to cover the full dynamic range
min 1, max 99normalize_upper
Section titled “normalize_upper”Enhances the contrast of the output image by stretching its brightness to cover the full dynamic range
min 1, max 99saturation
Section titled “saturation”Sets the image saturation
min 0.1brightness
Section titled “brightness”Sets the image brightness
min 0.1Sets the image hue
min 1lightness
Section titled “lightness”Sets the image lightness
min 0.1greyscale
Section titled “greyscale”Converts the image to black and white
?greyscaleradius
Section titled “radius”Rounds the corners of the image
min 0 max 100To create a circular image, set equal dimensions.
remove_background
Section titled “remove_background”Removes the background from the image
?rm_bgsuper_resolution coming soon
Section titled “super_resolution ”Uses AI to upscale the image resolution.
download
Section titled “download”Forces the browser to download the file instead of opening it inline, by setting the Content-Disposition: attachment response header. Works with any media type and combines with all transformation parameters. It does not affect the cached file — the ETag stays the same with and without download.
?download — download with the original file name?download=report.pdf — download with a custom file namenostore
Section titled “nostore”Processes the requested transformation and returns the result without saving the variation to storage. The processed image is served from a temporary worker cache and is still cached by the CDN (the Cache-Control header is unchanged), so repeat requests stay fast — but no new object is written to your bucket. Useful for one-off or preview transforms you don’t want to persist.
Applies to images only and combines with any transformation parameters. CPU and traffic are billed as usual; the transformation limit is not counted against the request. If the requested variation already exists in storage (for example, from an earlier normal request), it is returned as-is.
?width=300&nostore=1 — resize, return the result, do NOT store the variation?width=300&nostore — same (the parameter's presence enables it)