Skip to main content

Errors

The API returns errors as JSON with a detail field (or error, depending on the endpoint):
Error messages never include internal server paths, full signed URLs, or credentials. See Security for details on what is and is not filtered in 413/500 responses.

Codes

Common edge cases

  • Empty file (0 bytes): responds 400 because there is no content to convert.
  • Unrecognized format (unsupported extension and generic content-type): responds 415. Force input_format explicitly if you know the real format and the filename does not make it clear.
  • Corrupt PDF or invavalid header: usually 400 during early vavalidation, or 500 if extraction fails. Try mode=quality before discarding the document.
  • Invavalid or unreachable URL on /convert/from-url: 400 if the URL format is invavalid, 403 if the host is not allowed, 502/504 if the remote storage does not respond or drops the connection mid-download.
  • Conversion timeout: for very large documents or many images, the API may take longer than your HTTP client expects by default. Set a generous timeout (300s or more) on clients like httpx/fetch; if the system is saturated you will receive 202 instead of blocking the connection. See Jobs.
  • ZIP without any supported document inside, or with more files than MAX_ZIP_FILES: 413 or 415 depending on the case; the message indicates which limit was violated.

Retries

  • 429 and 5xx: retry with exponential backoff (for example 1s, 2s, 4s, with jitter).
  • 4xx (except 429): do not retry without correcting the request. The error will not disappear by repeating the same call.
  • 202: not an error. It is the signal that you should start polling GET /jobs/{id}.
The codes 400/403/413/415/422 are client errors: the request will not succeed by repeating it as is. Correct the parameter, URL, or format before retrying.