result field is omitted and the error object contains a numeric code and a message. These codes are distinct from HTTP status codes (e.g. 401, 429, 504). Use the table below to interpret error.code in the response.
For a successful HTTP 200, the response may still contain a JSON-RPC error (e.g. chain not supported). Always check for the presence of error in the response body.
Code → meaning and when it occurs
Standard JSON-RPC codes
- -32700 and -32600 follow the JSON-RPC 2.0 spec for parse and invalid request errors.
- -32601 is the JSON-RPC 2.0 “Method not found” code, repurposed here to signal an empty credit balance.
- -32602 is used for invalid
chainId(invalid params) and foreth_getLogsblock-span rejections. - -32603 is used for internal router errors.
- -32005 follows EIP-1474 (limit exceeded) for both
eth_getLogsquery-density failures (HTTP 400) and router capacity cooldowns (HTTP 429). - -32xxx in the -32000 range are router-specific and documented above.
eth_getLogs error messages
RouteMesh normalizes upstreameth_getLogs limit errors into two client-facing shapes. Hints appear in error.message (not a separate field):
When the router can suggest a smaller span, the message includes a hint suffix:
-32602, block span too large):
-32005, query too dense):
What to do when you see an error
- -32700 / -32600: Fix the request payload (valid JSON, non-empty batch, required fields present).
- -32602: Check the URL path for a valid
chainId. Foreth_getLogs, reducetoBlock - fromBlockor split the query into smaller chunks. Use the hint suffix when present. - -32003: This code is not returned by the router (it is reserved by EIP-1474 for “Transaction rejected” and may be passed through from an upstream node). If you see it from a provider, treat it as a rejected transaction, not a cooldown.
- -32005: Two cases. If the block span is acceptable but the filter returned too much data, narrow
fromBlock/toBlockusing the hint, or tightenaddress/topics— see Request behavior: eth_getLogs limits. If the response is HTTP 429 witherror.data.reason=capacity_cooldown, every node was temporarily in cooldown: retry after a short backoff — see Request behavior: Cooldowns and rate limiting. - -32014: State reads at an explicit historical block may route only to providers that honor historical block tags. Retry at a more recent block.
- -32015: By-hash transaction lookups route only to providers with a complete transaction index. Very old transactions may be unavailable on some routes.
- -32016: No provider currently retains the deep trace history needed for the trace method (
debug_trace*,trace_*,arbtrace_*). Retry later; if it persists, contact support. - -32001: Use a supported chain or contact us to request support for a new chain.
- -32002: The method is not available for this chain; use a different method or chain.
- -32603 / -32000: Retry once; if it persists, contact support.
X-Batch-Id response header from the failed request if you have it. See Debugging.
