SnapPDF
endpoint

Compress

POST /api/v1/compress

Reduce file size with lossy image re-encoding and lossless stream compression.

credits: 2returns: application/pdf

Image re-encoding is CPU-bound.

Parameters

NameTypeRequiredDescription
filemultipart filerequiredSource PDF.
level"low" | "medium" | "high" | "max"optionalCompression aggressiveness.default: medium
grayscalebooleanoptionalFlatten color to grayscale — big savings on scans.
stripMetadatabooleanoptionalClear info dict and embedded XMP.
imageMaxDpiintegeroptionalDownsample images above this DPI.default: 150

Examples

curl
curl -X POST https://api.snappdf.au/api/v1/compress \
  -H "Authorization: Bearer $SNAPPDF_API_KEY" \
  -F "file=@big.pdf" -F "level=max" -F "grayscale=true" \
  -o small.pdf
JavaScript
const r = await snap.pdf.compress({ file: bytes, level: 'max', grayscale: true });
console.log(r.originalSize, '→', r.compressedSize);
Python
r = snap.pdf.compress(file=bytes, level="max", grayscale=True)
PHP
$r = $snap->pdf->compress(file: $bytes, level: 'max', grayscale: true);
Ruby
r = snap.pdf.compress(file: bytes, level: 'max', grayscale: true)
Go
r, _ := client.Compress(ctx, &snappdf.CompressInput{File: bytes, Level: "max", Grayscale: true})