Five chain-isolated networks: Ethereum Mainnet, Base, Arbitrum One, OP Mainnet, and Polygon PoS. Each network has separate HTTP, WebSocket, and local cache namespaces.
Official zero-dependency JavaScript SDK with an EIP-1193 provider and viem-compatible transport.
Non-submitting transaction simulation through rpc_relay_simulateTransaction (eth_call, eth_estimateGas, and eth_createAccessList).
Signed confirmed-log webhooks with explicit event IDs and at-least-once delivery.
Pro and Pro+ tiers with queue-aware rate limits, token management, webhook configuration, and benchmark support.
Tier boundaries
Free: 10 logical RPC calls per 60 seconds per account. Edge only; no local accelerator or WebSocket.
Pro: 300 logical calls per 10 seconds per account per Cloudflare location. Includes the local cache accelerator.
Pro+: 600 logical calls per 10 seconds per account per Cloudflare location. Includes everything in Pro, plus token APIs and fuller simulation output.
Token APIs
GET /api/token/balance returns ERC-20 balance for a Pro or Pro+ account.
GET /api/token/prices is not provided.
GET /api/transfers/:address returns ERC-20 transfer logs filtered to the requested address for a Pro or Pro+ account.
Not offered
Archive tracing is not available. Free public RPC backends do not support debug methods, and RPC Relay does not allow user-supplied backends.
Requests such as debug_traceCall, debug_traceTransaction, trace_call, and trace_transaction return -32601 Method not found.
For transaction simulation, use rpc_relay_simulateTransaction.
Limits and honest boundaries
A batch is charged by the number of logical calls, not as one call.
WebSocket connections accept at most 32 messages in flight and 20 calls per batch.
Messages, bodies, and upstream calls retain hard size, concurrency, and timeout limits.
Missing chain data returns an explicit error when a network route is not configured for the selected chain id.
Malformed JSON-RPC requests return -32600 with a short message. Always send {"jsonrpc":"2.0","id":1,"method":"...","params":[...]}.
Subrequest-limit responses return -32000. Retry after backoff; the published batching envelope stays at or below 20 logical calls per miss.
Auth failures return 401 or explicit invalid-token responses. Tokens are HMAC signed and rotated through /api/token/rotate.
Cold misses still pay internet transit and upstream latency. Published sub-5ms/1.55ms numbers apply to warm local reads only.
Deliberately gated
Transaction submission is disabled unless TRANSACTION_SUBMISSION_ENABLED=true; production enablement requires nonce coordination, simulation policy, abuse prevention, provider terms, and explicit customer controls.
Paymasters and gas sponsorship require a funded sponsor policy, per-account budgets, allowlists, replay protection, and legal/billing review.
Pay-as-you-go overages require strongly consistent invoice-grade metering. Current counters and Cloudflare rate limits are operational controls, not billing records.
Dropped/pending-transaction webhooks require a real mempool feed. The current webhook pilot delivers confirmed logs only.
A 99.9% SLA requires measured multi-region origin capacity, incident response, error budgets, and contractual terms; it cannot be created by changing copy.
Team seats require organization membership, scoped tokens, roles, audit logs, and account recovery.
Build-versus-integrate decisions
Viem's official custom transport is the SDK extension point; ethers users can consume the EIP-1193 provider or localhost JSON-RPC URL.
High-volume historical and live indexing should integrate a maintained indexer such as SQD or Envio HyperIndex/HyperSync rather than rebuilding a chain index inside a request Worker.
Simulation uses standard node methods first. Provider-specific state-diff and asset-change enrichment should be added through capability adapters so unsupported public nodes fail explicitly instead of returning invented data.
Projected capabilities
Current policy:
Archive trace methods are not offered.
Privacy boundary
Warm local hits do not leave the device. Padded, shuffled miss batches reduce direct one-action/one-request correlation, but they are not private information retrieval: the Relay Worker can inspect misses and the selected upstream sees the padded batch. Marketing must not claim that no provider can profile all strategy activity.
References
- Viem custom transports: https://viem.sh/docs/clients/transports/custom
- Ethers abstract providers and plugins: https://docs.ethers.org/v6/api/providers/abstract-provider/
- SQD EVM log filtering: https://docs.sqd.dev/en/sdk/squid-sdk/reference/processors/evm-batch/logs
- Envio documentation: https://docs.envio.dev/
- Live status: /status
← Back to home