smallapis

Image Toolkit API

One endpoint per job, no SDK required. Backed by libvips, so a 4000x3000 JPEG converts to WebP in well under a second. Accepts a multipart upload, a public URL, or base64.

10 endpoints

Click one to see its parameters and a ready-to-paste curl call.

POST /v1/image/convert Convert an image to another format

Re-encodes the input to WebP, AVIF, JPEG, PNG, GIF or TIFF. Animated sources keep their frames for WebP and GIF.

Returns: binary image

ParameterTypeDescription
file file Image to convert (multipart). Alternative to `url` / `base64`.
url string Public URL of the image to fetch instead of uploading.
format string Target format: webp, avif, jpeg, png, gif, tiff. Default: webp
quality integer Encoder quality, 1-100. Default: 82
lossless boolean Lossless mode for webp and avif. Default: false
curl -X POST "https://173-249-18-142.sslip.io/v1/image/convert" \
  -H "X-API-Key: $SMALLAPIS_KEY" \
  -F "file=@input.jpg" \
  -F "format=webp" \
  -F "quality=82" \
  -F "lossless=false" \
  --output result.bin
POST /v1/image/compress Compress an image and report the saving

Re-encodes at a lower quality and returns the smaller file, with `x-saved-percent` in the response headers.

Returns: binary image

ParameterTypeDescription
file file Image to compress.
url string Public URL instead of an upload.
quality integer Encoder quality, 1-100. Default: 78
format string Output format; defaults to the source format.
curl -X POST "https://173-249-18-142.sslip.io/v1/image/compress" \
  -H "X-API-Key: $SMALLAPIS_KEY" \
  -F "file=@input.jpg" \
  -F "quality=78" \
  --output result.bin
POST /v1/image/resize Resize an image

Scales to the given box. Pass one of width/height to keep the aspect ratio.

Returns: binary image

ParameterTypeDescription
file file Image to resize.
url string Public URL instead of an upload.
width integer Target width in pixels.
height integer Target height in pixels.
fit string cover, contain, fill, inside or outside. Default: inside
withoutEnlargement boolean Never upscale a smaller source. Default: true
background string Padding colour used by fit=contain. Default: #ffffff
curl -X POST "https://173-249-18-142.sslip.io/v1/image/resize" \
  -H "X-API-Key: $SMALLAPIS_KEY" \
  -F "file=@input.jpg" \
  -F "fit=inside" \
  -F "withoutEnlargement=true" \
  -F "background=#ffffff" \
  --output result.bin
POST /v1/image/crop Crop a rectangle out of an image

Crop a rectangle out of an image

Returns: binary image

ParameterTypeDescription
file file Image to crop.
left integer Left offset in pixels. Default: 0
top integer Top offset in pixels. Default: 0
width integer Crop width in pixels.
height integer Crop height in pixels.
curl -X POST "https://173-249-18-142.sslip.io/v1/image/crop" \
  -H "X-API-Key: $SMALLAPIS_KEY" \
  -F "file=@input.jpg" \
  -F "left=0" \
  -F "top=0" \
  --output result.bin
POST /v1/image/rotate Rotate or flip an image

Rotate or flip an image

Returns: binary image

ParameterTypeDescription
file file Image to rotate.
angle integer Rotation in degrees. Default: 90
flip boolean Mirror vertically. Default: false
flop boolean Mirror horizontally. Default: false
curl -X POST "https://173-249-18-142.sslip.io/v1/image/rotate" \
  -H "X-API-Key: $SMALLAPIS_KEY" \
  -F "file=@input.jpg" \
  -F "angle=90" \
  -F "flip=false" \
  -F "flop=false" \
  --output result.bin
POST /v1/image/watermark Stamp a text watermark on an image

Stamp a text watermark on an image

Returns: binary image

ParameterTypeDescription
file file Image to stamp.
text required string Caption to draw.
position string north, northeast, east, southeast, south, southwest, west, northwest, center. Default: southeast
fontSize integer Font size in pixels; scales with the image by default.
opacity number Fill opacity, 0.05-1. Default: 0.45
color string Hex colour of the text. Default: #ffffff
curl -X POST "https://173-249-18-142.sslip.io/v1/image/watermark" \
  -H "X-API-Key: $SMALLAPIS_KEY" \
  -F "file=@input.jpg" \
  -F "text=CONFIDENTIAL" \
  -F "position=southeast" \
  -F "opacity=0.45" \
  -F "color=#ffffff" \
  --output result.bin
POST /v1/image/strip Remove EXIF, GPS and XMP metadata

Returns a visually identical file with every metadata block dropped. `x-had-exif` says whether there was anything to remove.

Returns: binary image

ParameterTypeDescription
file file Image to clean.
url string Public URL instead of an upload.
curl -X POST "https://173-249-18-142.sslip.io/v1/image/strip" \
  -H "X-API-Key: $SMALLAPIS_KEY" \
  -F "file=@input.jpg" \
  --output result.bin
POST /v1/image/metadata Read image dimensions, format and EXIF presence

Read image dimensions, format and EXIF presence

Returns: json

ParameterTypeDescription
file file Image to inspect.
url string Public URL instead of an upload.
curl -X POST "https://173-249-18-142.sslip.io/v1/image/metadata" \
  -H "X-API-Key: $SMALLAPIS_KEY" \
  -F "file=@input.jpg"
POST /v1/image/palette Extract the dominant colours

Extract the dominant colours

Returns: json

ParameterTypeDescription
file file Image to analyse.
colors integer How many colours to return, 1-16. Default: 6
curl -X POST "https://173-249-18-142.sslip.io/v1/image/palette" \
  -H "X-API-Key: $SMALLAPIS_KEY" \
  -F "file=@input.jpg" \
  -F "colors=6"
POST /v1/image/thumbnail Produce a square WebP thumbnail

Crops on the most interesting region rather than the centre.

Returns: binary image

ParameterTypeDescription
file file Source image.
size integer Side length in pixels. Default: 320
curl -X POST "https://173-249-18-142.sslip.io/v1/image/thumbnail" \
  -H "X-API-Key: $SMALLAPIS_KEY" \
  -F "file=@input.jpg" \
  -F "size=320" \
  --output result.bin