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

# Errors and limits

> Status codes, error bodies and rate limits.

Every response is JSON and carries an `x-request-id` header. Send your own `x-request-id` (1 to 64 characters: letters, digits, `.`, `_`, `:`, `-`) to trace a request; otherwise one is generated. Include it when you report a problem.

## Status codes

| Status | Body | Meaning | What to do |
| - | - | - | - |
| `200` | `{ "ok": true, ... }` | Success | |
| `400` | `{ "error": "Invalid quote parameters" }` | Malformed address or amount | Fix the request |
| `400` | `{ "error": "Parameter not available for this key: ..." }` | Unknown parameter, or a swap parameter on a quote-only key | Remove it, or ask for swap permission |
| `401` | `{ "error": "Unauthorized" }` | Missing, wrong or revoked key | Check the `Authorization` header |
| `403` | `{ "error": "Not available for this key" }` | Endpoint is not part of the partner API | Use `/quote`, `/tokens` or `/health` |
| `405` | `{ "error": "GET required" }` | Wrong method | Use `GET` |
| `422` | `{ "ok": false, "error": "no admitted route" }` | No route for this pair or size | Try another size or pair |
| `422` | `{ "ok": false, "error": "execution check failed" }` | The route did not deliver the exact quote through the executor | Retry; do not send an older transaction |
| `422` | `{ "ok": false, "error": "minOut above the quoted output" }` | Your `minOut` is higher than `swap.netOut` | Lower `minOut` |
| `429` | `{ "error": "Rate limit exceeded for this key" }` | Over your per-minute limit | Wait for `retry-after` seconds |
| `429` | `{ "error": "Too many concurrent requests for this key" }` | Over your concurrency cap | Wait for an in-flight request to finish |
| `503` | `{ "error": "Pool state not fresh" }` | Route is catching up with the chain | Retry after a second |
| `503` | `{ "error": "Busy, retry shortly" }` | Service at capacity | Retry after `retry-after` |

## Rate limits

Each key has:

* **Requests per minute.** Requests refill continuously. You can burst up to a tenth of a minute's allowance at once.
* **Concurrent requests.** The number of requests that may be in flight at the same time.

Both apply to every endpoint. A `429` includes a `retry-after` header in seconds. Back off and retry; do not retry in a tight loop.

Need more? DM @rapidssh with your current usage and expected peak.

## Timeouts

Requests must arrive within 5 seconds. Set your client timeout to 10 seconds and retry once on network errors or `503`.


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