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

# Errors

> HTTP status, error.code, and when to retry.

Every failure is `{"error": {"code", "message"}}` with a matching HTTP status. The message says what to fix.

| HTTP | `error.code` | Meaning | Retry |
| - | - | - | - |
| 400 | `bad_request` | A parameter is missing or wrong: unknown chain, invalid address (on Solana, one that is not a 32-byte key; see [Addresses](/get-started/conventions#addresses)), interval out of the list, more than 50 ids, a cursor the server can no longer honour | No: fix the request, or start again from the first page |
| 401 | `unauthorized` | Missing or unknown key | No: fix the key |
| 404 | `not_found` | Unknown route, unknown board, or a token no source knows | No for a bad path; later for a token that may not be indexed yet |
| 429 | `rate_limited` | Over the per-minute cap of the key | Yes, after the minute turns |
| 502 | `upstream_unavailable` | A data source did not answer | Yes, with backoff |
| 503 | `upstream_unavailable` | A Solana trades, candles or wallet-trades request cannot be served right now | Yes, after `Retry-After` (2 s): the same request, same cursor |
| 503 | `server_busy` | A new WebSocket or SSE connection, while the server is at capacity | Yes, after `Retry-After` (30 s) |

```json theme={null}
{ "error": { "code": "bad_request", "message": "'abc' is not a Solana address" } }
```

```json theme={null}
{ "error": { "code": "not_found", "message": "token not found" } }
```

<Tip>
  **404** on `GET /v1/tokens/{chain}/{address}` means no source knows the token. **502** means a source did not answer this time: retry, and do not treat it as "does not exist". When a source fails, the API keeps answering from its last good copy for a couple of minutes before it returns 502.
</Tip>

Both **503**s above carry a `Retry-After` header, in seconds. Wait that long, then send the same request again: for a page, with the same `cursor`.

A `cursor` that keeps failing (a `400`, or a `502` again and again) while the first page loads will not heal: start the walk again from the first page. See [Pagination](/get-started/pagination).

## Live errors

On the WebSocket, a wrong subscribe or op answers a frame of type `error`, with the `id` of the subscription:

```json theme={null}
{ "type": "error", "id": "bad", "error": { "code": "bad_request", "message": "token is required" } }
```

| Message | Cause |
| - | - |
| `channel is required`, `unknown channel '…'` | Missing or wrong `channel` |
| `chain is required`, `token is required`, `wallet is required` | A parameter the channel needs |
| `'…' is not a Solana address` (or another chain's), `wallet is not a Solana address` | `token` or `wallet` is not an address of that chain (on Solana, it must be a 32-byte key) |
| `board must be new, graduating or graduated` | `launchpad` without a valid `board` |
| `the wallet channel is Solana only for now` | `wallet` on an EVM chain |
| `id already in use` | Subscribing twice with the same `id`; unsubscribe it first |
| `at most 200 subscriptions per socket` | Open a second socket |
| `op must be subscribe, unsubscribe or ping`, `frames must be JSON` | Malformed op |

A channel that cannot load its first data (for example a `token` channel on an unknown token) sends an `error` frame with the same code the REST route would give.

On SSE, wrong parameters answer **400** JSON before the stream starts.

While the server is at capacity, it refuses **new** connections, before the WebSocket upgrade or before the SSE stream starts, with **503** and `Retry-After: 30`:

```json theme={null}
{ "error": { "code": "server_busy", "message": "the server is at capacity, retry in 30 s" } }
```

Sockets and streams already open keep running, and an open socket can still subscribe. A browser `WebSocket` cannot read the status: it only sees the connection fail. An `EventSource` does not retry a 503 on its own. Reconnect after 30 s, with backoff.


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