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.
Click one to see its parameters and a ready-to-paste curl call.
Re-encodes the input to WebP, AVIF, JPEG, PNG, GIF or TIFF. Animated sources keep their frames for WebP and GIF.
Returns: binary image
| Parameter | Type | Description |
|---|---|---|
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
Re-encodes at a lower quality and returns the smaller file, with `x-saved-percent` in the response headers.
Returns: binary image
| Parameter | Type | Description |
|---|---|---|
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
Scales to the given box. Pass one of width/height to keep the aspect ratio.
Returns: binary image
| Parameter | Type | Description |
|---|---|---|
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
Crop a rectangle out of an image
Returns: binary image
| Parameter | Type | Description |
|---|---|---|
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
Rotate or flip an image
Returns: binary image
| Parameter | Type | Description |
|---|---|---|
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
Stamp a text watermark on an image
Returns: binary image
| Parameter | Type | Description |
|---|---|---|
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
Returns a visually identical file with every metadata block dropped. `x-had-exif` says whether there was anything to remove.
Returns: binary image
| Parameter | Type | Description |
|---|---|---|
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
Read image dimensions, format and EXIF presence
Returns: json
| Parameter | Type | Description |
|---|---|---|
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"
Extract the dominant colours
Returns: json
| Parameter | Type | Description |
|---|---|---|
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"
Crops on the most interesting region rather than the centre.
Returns: binary image
| Parameter | Type | Description |
|---|---|---|
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