> For a complete page index, fetch https://docs.conduit.xyz/llms.txt

# RPC Error Reference

> Complete reference for HTTP status codes and JSON-RPC error codes returned by Conduit RPC endpoints.

Conduit RPC responses follow the [JSON-RPC 2.0 specification](https://www.jsonrpc.org/specification). Errors are returned in two places:

* **HTTP layer**: the response status code signals the category of failure.
* **JSON body**: the `error` object carries a `code` and `message` when the request could not be fulfilled.

Most JSON-RPC errors are returned with HTTP 200. Exceptions are noted in the tables below.

---

## HTTP status codes

| Status | Meaning                             | Common cause                                                                                                        |
| ------ | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| `200`  | OK (check body for JSON-RPC errors) | Successful response, or JSON-RPC error returned in body                                                             |
| `400`  | Bad request                         | Malformed JSON, invalid params, block range exceeded                                                                |
| `401`  | Unauthorized                        | Invalid or missing API key                                                                                          |
| `403`  | Forbidden                           | Disabled/deleted key, wrong network, usage limit reached (Free tier), or spend limit reached (Pro/Enterprise tiers) |
| `408`  | Request timeout                     | Request took longer than 35 s to complete                                                                           |
| `429`  | Too many requests                   | CU/s throughput limit exceeded                                                                                      |
| `500`  | Internal server error               | Unexpected proxy error                                                                                              |
| `502`  | Bad gateway                         | Invalid response received from backend node                                                                         |
| `503`  | Service unavailable                 | Backend node is not healthy                                                                                         |
| `504`  | Gateway timeout                     | Backend node did not respond in time                                                                                |

---

## JSON-RPC error codes

### Standard codes

These follow the JSON-RPC 2.0 spec and are returned as HTTP 200 with an error body.

| Code     | Name             | Cause                                                                                                                               |
| -------- | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| `-32700` | Parse error      | The request body is not valid JSON. Check for syntax errors, trailing commas, or unescaped characters.                              |
| `-32600` | Invalid request  | The request is valid JSON but not a valid JSON-RPC 2.0 object. Verify `jsonrpc`, `method`, and `id` fields are present.             |
| `-32601` | Method not found | The method name does not exist or the backend has no route for it. Check the method name for typos.                                 |
| `-32602` | Invalid params   | The parameters supplied are invalid for the requested method. Also returned when an `eth_getLogs` block range exceeds 2,000 blocks. |

### Conduit-specific codes

These are in the `-32000` to `-32408` range (server-defined per the spec) and may be returned alongside a non-200 HTTP code.

| Code     | HTTP  | Message                                                                                                    | Cause                                                                                                                                       |
| -------- | ----- | ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| `-32001` | `403` | `rpc method is not available`                                                                              | The method is not on Conduit's allowed list. See [supported methods](#supported-and-restricted-methods).                                    |
| `-32003` | `400` | *(error detail included in message)*                                                                       | Request failed a validation check before reaching the backend. The message field contains a description of the specific validation failure. |
| `-32010` | `502` | `invalid response: <detail>`                                                                               | The backend returned a response that could not be parsed.                                                                                   |
| `-32013` | `500` | `backend returned an invalid response`                                                                     | The backend returned an unexpected or malformed JSON-RPC response.                                                                          |
| `-32014` | `400` | `Sorry, the maximum batch request size is <N>. Please reduce the size of your request and try again.`      | Batch request exceeded the configured maximum. Split into smaller batches.                                                                  |
| `-32015` | `504` | `gateway timeout`                                                                                          | The backend did not respond within the allowed window. Retry with exponential backoff.                                                      |
| `-32017` | `429` | `Rate Limit Exceeded. Please get an api key at https://app.conduit.xyz/nodes to increase your rate limit.` | Your request rate exceeded the CU/s limit for your plan. See [Throughput](/rpc-nodes/information/throughput).                               |
| `-32018` | `503` | `backend is currently not healthy to serve traffic`                                                        | The backend is temporarily unavailable. Retry with backoff.                                                                                 |
| `-32019` | `400` | `block is out of range`                                                                                    | The requested block number is beyond the current chain tip or is not yet indexed.                                                           |
| `-32020` | `400` | `address is blocked`                                                                                       | The `from` address on the request is blocked.                                                                                               |
| `-32401` | `401` | `invalid rpc key. visit https://app.conduit.xyz/rpc-keys to create a valid key`                            | The API key in the request is unrecognized.                                                                                                 |
| `-32403` | `403` | *(see [API key errors](#api-key-errors) below)*                                                            | The API key is valid but cannot be used for this request.                                                                                   |
| `-32408` | `408` | `request timeout`                                                                                          | The request exceeded the 35 s server-side timeout.                                                                                          |

---

## API key errors

All API key errors return HTTP `403` with JSON-RPC code `-32403`. The `message` field distinguishes the cause.

| Message                       | Cause                                                                                                                                                                                                     | Fix                                                                                            |
| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| `invalid rpc key`             | The key does not exist in Conduit's system (returns HTTP `401` / code `-32401`).                                                                                                                          | Create a new key at [app.conduit.xyz/rpc-keys](https://app.conduit.xyz/rpc-keys).              |
| `disabled rpc key`            | The key exists but has been manually disabled.                                                                                                                                                            | Re-enable or create a new key at [app.conduit.xyz/rpc-keys](https://app.conduit.xyz/rpc-keys). |
| `deleted rpc key`             | The key has been deleted.                                                                                                                                                                                 | Create a new key at [app.conduit.xyz/rpc-keys](https://app.conduit.xyz/rpc-keys).              |
| `unauthorized rpc key`        | The key is scoped to a different network than the one being called.                                                                                                                                       | Use the correct endpoint for the network, or create a key scoped to the right network.         |
| `account is over spend limit` | Your organization has reached its usage limit (Free tier) or spend limit (Pro/Enterprise tiers). Both return HTTP `403` with the same code, and requests are blocked until the limit resets or is raised. | Review your limit in the Conduit dashboard or contact support.                                 |

**Example response (disabled key):**

```json
{
  "jsonrpc": "2.0",
  "error": {
    "code": -32403,
    "message": "disabled rpc key. visit https://app.conduit.xyz/rpc-keys to create a new key"
  },
  "id": 1
}
```

---

## Rate limit errors (429)

Exceeding your plan's CU/s throughput limit returns HTTP `429` with JSON-RPC code `-32017`.

```json
{
  "jsonrpc": "2.0",
  "error": {
    "code": -32017,
    "message": "Rate limit exceeded. Please get an API key at https://app.conduit.xyz/nodes to increase your rate limit."
  },
  "id": 1
}
```

**Throughput limits by plan:**

| Plan       | Limit        |
| ---------- | ------------ |
| Public     | 25 req/s     |
| Free       | 250 req/s    |
| Pro        | 250,000 CU/s |
| Enterprise | Custom       |

Limits change on **August 4, 2026 at 12:00 PM PST**. Pro and Enterprise limits are unchanged.

See [Throughput](/rpc-nodes/information/throughput) for full guidance on handling 429s, including backoff strategies and how to use batch requests to reduce overhead.

---

## `eth_getLogs` errors

Conduit enforces two separate limits on `eth_getLogs`. They produce different errors.

| Limit           | Value                      | Error code | HTTP  |
| --------------- | -------------------------- | ---------- | ----- |
| Block range     | 2,000 blocks per request   | `-32602`   | `400` |
| Log event count | 10,000 events per response | `-32005`   | `200` |

**Block range exceeded (from rpcproxy):**

```json
{
  "jsonrpc": "2.0",
  "error": {
    "code": -32602,
    "message": "Log response size exceeded. You can make eth_getLogs requests with up to a 2K block range."
  },
  "id": 1
}
```

**Log count exceeded (from the node backend):**

```json
{
  "jsonrpc": "2.0",
  "error": {
    "code": -32005,
    "message": "logs count limit exceeded (10000) consider refine/narrow down your query"
  },
  "id": 0
}
```

**Fix:** paginate your query in chunks of ≤2,000 blocks and filter by `topics` or `address` to keep event counts below 10,000. See [Throughput](/rpc-nodes/information/throughput) for full pagination guidance.

## `eth_getProof` history window

On OP Stack networks, `eth_getProof` is limited to a recent history window. Requests for state older than the window will not be served. Proofs for recent and latest blocks are unaffected.

This limit was introduced with the Reth v2 upgrade (rolled out June 2026) to protect RPC availability for all users on a network.

**If you need proofs over a longer history window:**

* Run your own node configured with a larger `eth_getProof` window, or
* Contact [support@conduit.xyz](mailto:support@conduit.xyz) and we will work with you on options.

Katana networks are not affected by this limit.

---

## Supported and restricted methods

Conduit supports the full `eth_*`, `net_*`, and `web3_*` standard method suites. A subset of `debug_*` methods is available on an allowlist. Any method not on the list returns `-32001` (HTTP `403`).

**`debug_*` and `trace_*` methods require an API key** starting August 4, 2026 at 12:00 PM PST. Unauthenticated requests to these methods return HTTP `401` or `403`. [Get an API key](/rpc-nodes/getting-started/get-api-key).

**Allowed `debug_*` methods (with API key):**

`debug_getExecutionWitness`, `debug_getRawBlock`, `debug_getRawHeader`, `debug_getRawTransaction`, `debug_getRawReceipts`, `debug_getBadBlocks`, `debug_storageRangeAt`, `debug_getTrieFlushInterval`, `debug_traceBlock`, `debug_traceBlockByHash`, `debug_traceBlockByNumber`, `debug_traceCall`, `debug_traceTransaction`, `debug_dbGet`, `debug_chainConfig`

See [Compute Units](/rpc-nodes/information/compute-units) for CU costs on supported methods.

---

## Batch requests

Conduit accepts JSON-RPC batch requests (an array of request objects in a single HTTP call). The maximum payload size is 5 MB. Exceeding this returns `-32014` (HTTP `400`).

---

## Retrying errors

| Error                     | Retry? | Strategy                                                                  |
| ------------------------- | ------ | ------------------------------------------------------------------------- |
| `429` rate limit          | Yes    | Exponential backoff with jitter; honor `Retry-After` header if present    |
| `503` not healthy         | Yes    | Short retry (1–2 s); backend recovers quickly                             |
| `504` gateway timeout     | Yes    | Retry once; if it persists, the method may be too heavy for a single call |
| `408` request timeout     | Yes    | Retry once; if it persists, consider narrowing the query                  |
| `401` / `403` key errors  | No     | Fix the key or credentials first                                          |
| `400` bad request         | No     | Fix the request params or block range                                     |
| `-32601` method not found | No     | Check the method name                                                     |