# Errors and limits

> What the API answers when a request fails, and how much it accepts.

This is one page of the Antiro docs (https://docs.antiro.io/api/errors). Every page in one file: https://docs.antiro.io/llms-full.txt

## Error format

Every error has the same body. `message` is always a list.

**401 Unauthorized**

```json
{
  "success": false,
  "statusCode": 401,
  "message": ["Invalid API key"],
  "errors": null,
  "timestamp": "2026-10-30T10:03:06.493Z"
}
```

## Status codes

| Status | Meaning | What to do |
| --- | --- | --- |
| `400` | A field has the wrong type, `id` is not valid, or an outcome has neither `verdict` nor `outcome`. | Fix the request. |
| `401` | The secret key is missing or wrong. | Check `X-API-Key`. |
| `404` | Antiro does not know this order or check, or an outcome names neither `order_id` nor `assessment_id`. | Check the id. |
| `429` | Too many requests. | Accept the order, and check it again shortly. |
| `5xx` | Antiro could not answer. | Accept the order, and check it again later. |

Never lose an order to an error: see [If no answer arrives](https://docs.antiro.io/api/decisions#if-no-answer-arrives).

## Rate limits

| Request | Limit |
| --- | --- |
| `POST /v1/assessments` | 600 a minute for each store |
| `POST /v1/outcomes` | 6,000 a minute for each key |
| `GET /v1/assessments/:id` | 600 a minute for each key |

A `429` can also appear when too many checks run at the same moment. It is always temporary. If you need a higher limit, [contact us](mailto:support@antiro.io).

## Field limits

Text longer than its limit is cut to that size, not refused.

| Field | Maximum characters |
| --- | --- |
| `session_token` | 1,024 |
| `order_id` | 128 |
| `phone` | 64 |
| `ip` | 64 |
| `name` | 500 |
| `address` | 3,000 |
| `wilaya`, `commune` | 300 |
