Converting a file

One endpoint does the work. POST a file and a target format, get back a job — finished if it was quick, queued if it was not.

Authentication

Every endpoint except the format catalogue needs an API key, sent as a bearer token. Create one on the Automate page in your account; it is shown once and stored only as a hash, so a key you lose cannot be recovered — issue a new one instead.

API access is part of the Plus plan. A key belonging to an account without it is rejected with NOT_ENTITLED.

Authorization: Bearer rlv_your_key_here

The request

POST https://rework.live/api/v1/convert, as multipart/form-data, with exactly two fields: the target format and the file itself. Field order does not matter.

curl -X POST https://rework.live/api/v1/convert \
  -H "Authorization: Bearer rlv_your_key_here" \
  -F "to=webp" \
  -F "file=@photo.png"
FieldTypeDescription
tostringTarget format id, for example pdf, webp, mp4
filefileThe file to convert. One per request.

The response

Always JSON, never raw bytes, and always the same shape whether the conversion finished or was queued. A client that had to branch on the content type to know what it received is a client that will eventually get it wrong.

200 means the job is done and download is ready. 202 means it was queued: status_url is where to poll and download is null until it finishes.

{
  "job": {
    "id": "6a84860000000000000000ab",
    "status": "done",
    "from": "png",
    "to": "webp",
    "bytes": 48213,
    "durationMs": 412,
    "notes": [],
    "expiresAt": "2026-09-03T10:22:31.000Z",
    "download": "https://rework.live/api/v1/jobs/6a84860000000000000000ab/download",
    "status_url": null,
    "queuePosition": null,
    "estimateMs": null
  }
}

Getting the bytes directly

Add ?download=1 if you would rather have the file than a link. A conversion that finishes inline then returns the bytes; one that queues still returns 202 with JSON, because there is nothing to send yet.