Image: Compress — API reference

Reduce image file size while preserving quality

All API tools
POST

/api/v1/jobs

tool: image-compress
scope: image:write
~1 credits

Reduce image file size while preserving quality

Request body

FieldTypeRequiredDescription

tool

string

required

Must be "image-compress" for this endpoint.

input.url

string (URL)

required

Publicly fetchable URL of the source image file. Use /v1/uploads to upload directly to R2 if you don't have one.

options

object

optional

Tool-specific knobs. Defaults shown in the example. Unknown keys are ignored.

webhookUrl

string (URL)

optional

If set, we POST the final result to this URL. Pro/Max only — see Webhooks.

idempotencyKey

string

optional

Re-submitting with the same key within 24 h returns the original response without re-running the job.

Code sample

curl -X POST https://api.utified.com/v1/jobs \
  -H "Authorization: Bearer utf_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "tool": "image-compress",
    "input": { "url": "https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=1200" },
    "options": {
      "quality": 0.8
    }
  }'

Responses

202

Accepted — job queued

{
  "id": "job_abc123def456",
  "state": "queued",
  "statusUrl": "/api/v1/jobs/job_abc123def456"
}

Polled status (GET /api/v1/jobs/<id>)

{
  "id": "job_abc123def456",
  "tool": "image-compress",
  "state": "completed",
  "progress": 100,
  "result": {
    "status": "converted",
    "outputFormat": "webp",
    "downloadUrl": "https://media.utified.com/processed/abc123-photo_converted.webp",
    "message": "Successfully processed image-convert"
  },
  "createdAt": "2026-05-17T15:42:00.000Z",
  "startedAt": "2026-05-17T15:42:01.124Z",
  "finishedAt": "2026-05-17T15:42:13.842Z",
  "queue": "image-standard-queue"
}

Pull result.downloadUrl once state === 'completed'. Set up a webhook to skip polling — see /docs/api/webhooks.