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

# Status mapping

> Each error code's HTTP status, including the two that share 429.

## Mapping

| Code | HTTP status | Notes |
| - | - | - |
| `invalid_request` | `400` | Malformed or invalid request. |
| `model_unavailable` | `400` | `param` is `model`. The message may suggest a close match. |
| `unknown_route` | `404` | An API-looking path that does not exist. |
| `unauthorized` | `401` | Bad or missing credential. |
| `forbidden` | `403` | Not permitted. |
| `registered_free_unavailable` | `403` | Free-plan policy denial before dispatch. |
| `payment_required` | `402` | Payment needed. |
| `insufficient_quota` | `429` | Over quota. |
| `rate_limited` | `429` | Over a request-rate or in-flight limit. |
| `reservation_invalid` | `409` | Encrypted Free-plan reservation invalid or replayed. |
| `unavailable` | `503` | Temporarily unavailable. |
| `provider_error` | `502` | Upstream provider error. |
| unknown / `internal_error` | `500` | Unclassified. |

## Two Codes Share 429

`rate_limited` is a request-rate limit: back off and retry after `Retry-After`. `insufficient_quota` is exhausted balance or allowance: retrying does not clear it. Read `error.code` to tell them apart.

`model_unavailable` returns `400`, not `404`, with `param` set to `model`. A request-rate `429` carries `X-RateLimit-*` headers and, when computable, `Retry-After`.

## Related

* [Error codes](/api/api-reference/errors-and-rate-limits/error-codes)
* [Rate limits](/api/api-reference/errors-and-rate-limits/rate-limits)
* [Retry behavior](/api/api-reference/errors-and-rate-limits/retry-behavior)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.