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.

POSThttps://rpc.baseazul.dev
p50 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 docs
curl -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.

Read the docs