Drop Azul into your stack.
Standard JSON-RPC over HTTPS. Same URL whether you’re calling from viem, ethers, wagmi, web3.py, or curl. Writes hit the local node and two upstreams in parallel — lower propagation time to the sequencer, fewer dropped txs.
POST
https://rpc.baseazul.devp50 latency
13ms
From proxy
p99 latency
99ms
p95 38ms
Rate limit
100/s
Per anon IP
eth_getLogs
5,000
Blocks per call
Code samples
Full docscurl -X POST https://rpc.baseazul.dev \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'Production tips
1
Pair with a fallback. Azul is a single-region service. viem has
fallback([http(azul), http(coinbase)]) — first transport wins, second takes over on error or timeout.2
Writes already fan-out for you.
eth_sendRawTransactiongoes to local reth and the two fastest healthy upstreams in parallel — the tx reaches the sequencer over whichever path is fastest right now, so you don’t need a wrapper.3
Batch fan-out reads. Multicall, indexer warmup, ENS resolution — group up to 50 calls per request. One TLS handshake, lower tail latency.
4
Chunk
eth_getLogs over wide ranges. Max 5,000 blocks per call; parallelize across pages.5
Don’t poll
eth_blockNumber for tip-follow. Use the WS endpoint and eth_subscribe("newHeads"). Lower latency, less load on both sides.6
Scale ceilings. No SLA, no per-customer reservation. Anonymous: 100 req/s per IP (10/s on heavy methods). Need more — ask for a key.
Need the full method reference?
Limits, supported namespaces, error codes, gotchas.