Skip to content

Compress Image ​

Reduce image file size by specifying a quality level or a target file size in kilobytes. The tool uses iterative binary search to hit size targets accurately.

Target sizes count 1 KB as 1000 bytes, the way upload forms do, so a 20 KB target never returns more than 20,000 bytes. The tool lowers quality first. If that isn't enough, it scales the image down step by step, and the response then includes resizedTo with the final width and height. If even the smallest step can't reach the target, the request fails with a message saying so.

API Endpoint ​

POST /api/v1/tools/image/compress

Accepts multipart form data with an image file and a JSON settings field.

Parameters ​

ParameterTypeRequiredDefaultDescription
modestringNo"quality"Compression mode: quality or targetSize
qualitynumberNo80Quality level (1-100). Used when mode is quality.
targetSizeKbnumberNo-Target file size in KB (1 KB = 1000 bytes). Used when mode is targetSize.

Example Request ​

Compress to quality 60:

bash
curl -X POST http://localhost:1349/api/v1/tools/image/compress \
  -H "Authorization: Bearer si_your-api-key" \
  -F "file=@photo.jpg" \
  -F 'settings={"mode": "quality", "quality": 60}'

Compress to target size of 200 KB:

bash
curl -X POST http://localhost:1349/api/v1/tools/image/compress \
  -H "Authorization: Bearer si_your-api-key" \
  -F "file=@photo.jpg" \
  -F 'settings={"mode": "targetSize", "targetSizeKb": 200}'

Example Response ​

json
{
  "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/photo.jpg",
  "originalSize": 2450000,
  "processedSize": 204800
}

Notes ​

  • In quality mode, lower values produce smaller files with more compression artifacts. A value of 80 is a good default for web use.
  • In targetSize mode, the engine performs iterative compression to get as close to the target as possible without exceeding it.
  • Output format matches the input format. The compression applies to the format's native encoding (e.g. JPEG quality for JPEG files, WebP quality for WebP files).
  • If the default quality (80) is acceptable, you can omit the quality parameter entirely.