JSON-RPC
Error reference
Codes that come from Arc, and codes that come from us. The second group exists to turn a silent Arc failure into something your client can catch.
| Code | Source | Meaning | Fix |
|---|---|---|---|
| -32001 | arc | Pending transaction access denied by Arc | Use newHeads or logs, or txpool_* for pool inspection |
| -32000 | arc | intrinsic gas too high on eth_createAccessList | Pass an explicit gas value in the call object |
| -32603 | arc | Unimplemented method on the Reth execution client | eth_coinbase and eth_mining have no meaning on a BFT chain |
| -32020 | arcrpc | below_base_fee_floor | Raise maxFeePerGas to at least 20 Gwei, or set belowFloorPolicy to autobump |
| -32021 | arcrpc | pending_tag_unsupported | An explicit error in place of the silent null Arc returns |
| -32022 | arcrpc | decimal_mismatch_guard | An 18 decimal value was passed where 6 was expected, or the reverse |
| 401 | arcrpc | Key missing, revoked or out of scope | Check the key, its method scope and its IP allowlist |
| 429 | arcrpc | Rate limit | Back off using retry-after, or raise plan RPS |
The quiet failures
Three Arc behaviours produce no error at all on a standard endpoint: a transaction under the base fee floor vanishes, eth_getBlockByNumber("pending") returns null, and eth_getTransactionBySenderAndNonce returns null. We convert the first to -32020 and the second to -32021 so they surface in your error handling rather than in a reconciliation report.
Response headers
Every response carries x-arcrpc-units, x-arcrpc-region and x-arcrpc-node-build. The last one is the same string arc_getVersion returns, so a support ticket can name the build without a round trip.