RPC Error Reference

Conduit RPC responses follow the JSON-RPC 2.0 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

StatusMeaningCommon cause
200OK (check body for JSON-RPC errors)Successful response, or JSON-RPC error returned in body
400Bad requestMalformed JSON, invalid params, block range exceeded
401UnauthorizedInvalid or missing API key
403ForbiddenDisabled/deleted key, wrong network, or spend limit reached
408Request timeoutRequest took longer than 35 s to complete
429Too many requestsCU/s throughput limit exceeded
500Internal server errorUnexpected proxy error
502Bad gatewayInvalid response received from backend node
503Service unavailableBackend node is not healthy
504Gateway timeoutBackend 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.

CodeNameCause
-32700Parse errorThe request body is not valid JSON. Check for syntax errors, trailing commas, or unescaped characters.
-32600Invalid requestThe request is valid JSON but not a valid JSON-RPC 2.0 object. Verify jsonrpc, method, and id fields are present.
-32601Method not foundThe method name does not exist or the backend has no route for it. Check the method name for typos.
-32602Invalid paramsThe 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.

CodeHTTPMessageCause
-32001403rpc method is not availableThe method is not on Conduit’s allowed list. See supported methods.
-32003400(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.
-32010502invalid response: <detail>The backend returned a response that could not be parsed.
-32013500backend returned an invalid responseThe backend returned an unexpected or malformed JSON-RPC response.
-32014400Sorry, 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.
-32015504gateway timeoutThe backend did not respond within the allowed window. Retry with exponential backoff.
-32017429Rate 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.
-32018503backend is currently not healthy to serve trafficThe backend is temporarily unavailable. Retry with backoff.
-32019400block is out of rangeThe requested block number is beyond the current chain tip or is not yet indexed.
-32020400address is blockedThe from address on the request is blocked.
-32401401invalid rpc key. visit https://app.conduit.xyz/rpc-keys to create a valid keyThe API key in the request is unrecognized.
-32403403(see API key errors below)The API key is valid but cannot be used for this request.
-32408408request timeoutThe 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.

MessageCauseFix
invalid rpc keyThe key does not exist in Conduit’s system (returns HTTP 401 / code -32401).Create a new key at app.conduit.xyz/rpc-keys.
disabled rpc keyThe key exists but has been manually disabled.Re-enable or create a new key at app.conduit.xyz/rpc-keys.
deleted rpc keyThe key has been deleted.Create a new key at app.conduit.xyz/rpc-keys.
unauthorized rpc keyThe 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 limitYour organization has reached its spend limit.Review your limit in the Conduit dashboard or contact support.

Example response (disabled key):

1{
2 "jsonrpc": "2.0",
3 "error": {
4 "code": -32403,
5 "message": "disabled rpc key. visit https://app.conduit.xyz/rpc-keys to create a new key"
6 },
7 "id": 1
8}

Rate limit errors (429)

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

1{
2 "jsonrpc": "2.0",
3 "error": {
4 "code": -32017,
5 "message": "Rate limit exceeded. Please get an API key at https://app.conduit.xyz/nodes to increase your rate limit."
6 },
7 "id": 1
8}

Throughput limits by plan:

PlanCU/s
Unauthenticated200
Free12,500
Pro250,000

See 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.

LimitValueError codeHTTP
Block range2,000 blocks per request-32602400
Log event count10,000 events per response-32005200

Block range exceeded (from rpcproxy):

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

Log count exceeded (from the node backend):

1{
2 "jsonrpc": "2.0",
3 "error": {
4 "code": -32005,
5 "message": "logs count limit exceeded (10000) consider refine/narrow down your query"
6 },
7 "id": 0
8}

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 for full pagination guidance.


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).

Allowed debug_* methods:

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

All trace_* methods are supported. See Compute Units for CU costs.


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

ErrorRetry?Strategy
429 rate limitYesExponential backoff with jitter; honor Retry-After header if present
503 not healthyYesShort retry (1–2 s); backend recovers quickly
504 gateway timeoutYesRetry once; if it persists, the method may be too heavy for a single call
408 request timeoutYesRetry once; if it persists, consider narrowing the query
401 / 403 key errorsNoFix the key or credentials first
400 bad requestNoFix the request params or block range
-32601 method not foundNoCheck the method name