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, usage limit reached (Free tier), or spend limit reached (Pro/Enterprise tiers)
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 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):

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.

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

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