POST /v1/imaging/image-resize

Resize an image

Fit an image to the size you need without visible artefacts, and strip its metadata.

Resize an image now No key, no code — 2 credits either way.

curl -X POST "$DOATHING_API/v1/imaging/image-resize" \
  -H "x-api-key: $DOATHING_KEY" \
  -H "content-type: application/json" \
  -d '{"file": {"filename": "photo.jpg", "content_type": "image/jpeg", "data_b64": "<base64>"}, "options": {"width": 800, "mode": "fit"}}'

Fit an image to the size you need without visible artefacts, and strip its metadata.

Resize an image by fit, fill or exact dimensions using high-quality resampling.

Input

Send a file object with base64 data_b64, its content_type and a filename. Accepted types: image/png, image/jpeg, image/webp, image/gif, image/tiff.

The declared type is not trusted — the bytes are sniffed and a contradiction is rejected rather than corrected.

Response

The result carries your remaining balance alongside it, so you can track spend without a second call.

{
  "original": {
    "width": 4032,
    "height": 3024
  },
  "resized": {
    "width": 800,
    "height": 600
  },
  "mode": "fit",
  "request_id": "37f01edb-0163-42a1-ac51-0acaef979800",
  "credits_remaining": 96
}

Cost

2 credits per call, whether it is run from the site or from the API — the credential differs, the price does not. A new account starts with 20 credits.

A rejected request still costs a credit: the authorizer decrements before the tool validates. A call rejected for a missing or invalid key is free.

Parameters

Generated from the endpoint’s own validation, so this is exactly what it accepts. A body field goes at the top level; an option goes inside options.

NameInTypeDefaultNotes
widthoptionsintegerTarget width in pixels. 1 to 20000
heightoptionsintegerTarget height in pixels. One of the two is enough. 1 to 20000
modeoptionsstring"fit"fit keeps the ratio inside the box; fill crops to cover it; exact ignores the ratio. one of fit, fill, exact
formatoptionsstring"same"Output format, or 'same' to keep the input's. one of same, png, jpeg, webp, gif, bmp, tiff, avif
allow_upscaleoptionsbooleanfalsePermit enlarging. Off by default, because enlarging invents detail.
qualityoptionsinteger881 to 100, for lossy output formats. 1 to 100