> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ledgerize.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Errors

Errors are returned in a normalized JSON envelope:

```json theme={null}
{
  "error": { "code": "RATE_LIMITED", "message": "Too many requests" }
}
```

Common codes:

* `AUTH_INVALID_KEY` (401): Invalid or missing API key
* `AUTH_NOT_CONFIGURED` (503): API auth is not configured on the server
* `AUTH_UNAVAILABLE` (503): Temporary issue validating API keys
* `RATE_LIMITED` (429): Per-key rate limit exceeded
* `FILE_REQUIRED` (400): Missing multipart `file` field
* `INVALID_IDS` (400): Missing or empty `ids[]` in a convert request
* `PASSWORD_REQUIRED` (400): Missing `password` in body
* `NOT_FOUND` (404): Job not found (expired or invalid `jobId`)
* `NOT_READY` (409): Job exists but is not completed yet
* `UPLOAD_UNEXPECTED` (502): Upload succeeded upstream, but the response could not be parsed
* `UPLOAD_FAILED`, `CONVERT_FAILED`, `SET_PASSWORD_FAILED` (502): Processing or upstream error (check `error.details.reason`)
