The format catalogue

One public, unauthenticated endpoint returns everything we convert and every route between formats. Build your interface from it rather than hardcoding a list.

No key required

GET https://rework.live/api/v1/formats needs no authentication. It is a capability list rather than data, and requiring a key to find out what a service converts is a small hostility — it would also mean nobody could evaluate the API before paying for it.

The response is cacheable for an hour. Fetch it at startup rather than per request.

curl https://rework.live/api/v1/formats

What comes back

Two arrays. formats describes each format we can read or write; conversions is every edge between them.

{
  "formats": [
    {
      "id": "png",
      "label": "PNG",
      "kind": "image",
      "extensions": ["png"],
      "mime": "image/png"
    }
  ],
  "conversions": [
    {
      "from": "png",
      "to": "webp",
      "fidelity": "high",
      "async": false,
      "maxInputMb": 200,
      "options": []
    }
  ]
}
FieldDescription
from / toFormat ids the edge connects
fidelityHow faithful the conversion is
asyncTrue when this conversion queues instead of running inline
maxInputMbLargest input this particular conversion accepts
optionsExtra parameters this conversion accepts, if any

Two ceilings, not one

maxInputMb is the ceiling for that specific conversion. Your plan has its own, and the smaller of the two is the one that applies. A 400 MB video on a Plus account still fails if the conversion itself accepts less.