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

# Errors

> How the API reports failures

Check the HTTP status first. For `422`, read `data[]`. Otherwise use `message`.

```json theme={"theme":{"light":"min-light","dark":"poimandres"}}
{
  "message": "Customer not found",
  "data": null
}
```

```json theme={"theme":{"light":"min-light","dark":"poimandres"}}
{
  "message": "Invalid email address",
  "data": [
    { "path": "email", "message": "Invalid email address", "location": "body" }
  ]
}
```

| Status | Meaning                                       |
| ------ | --------------------------------------------- |
| `400`  | Business rule                                 |
| `401`  | Bad or missing key                            |
| `403`  | IP not whitelisted                            |
| `404`  | Not found                                     |
| `409`  | Conflict                                      |
| `422`  | Schema validation (`data` is an issues array) |
| `429`  | Rate limit (100 req / 15 min per IP)          |
| `500`  | Server error                                  |

`429` is `{ status, message }` — not the usual envelope. Back off and retry.
