# Errors

The statuses the API returns, and the body each one carries.

| Status | Meaning | Body |
|---|---|---|
| 401 | Missing, malformed, expired or revoked key | `{"message": "Unauthenticated."}` |
| 403 | The key lacks the ability, or the action is not allowed for the team or plan | `{"message": "...", "required_ability": "monitors:write"}` (`required_ability` only on an ability refusal) |
| 404 | Not found, or it belongs to another team | `{"message": "..."}` |
| 409 | Conflict, such as an analysis already running | `{"message": "..."}` |
| 422 | Validation failed | `{"message": "...", "errors": {"field": ["..."]}}` |
| 429 | Rate limited | `{"message": "..."}` with a `Retry-After` header |

Fix the request on a 4xx other than 429; retrying unchanged gives the same answer.
