Docs
Beam speaks standard Ethereum JSON-RPC over HTTPS and WebSocket. If your tooling works with any EVM endpoint, it works here.
Connect
In a wallet, add Arc as a custom network with chain ID 5042 (0x13b2), currency USDC and the RPC URL below. The home page has a one-click button and a manual setup table.
- RPC URL
- https://rpc.beamrpc.com
- WebSocket URL
- wss://rpc.beamrpc.com
- Chain ID
- 5042 · 0x13b2
- Currency
- USDC · 18 decimals
- Block time
- ~500 ms
curl
curl -s https://rpc.beamrpc.com \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' ethers v6
import { JsonRpcProvider } from "ethers";
const provider = new JsonRpcProvider("https://rpc.beamrpc.com", 5042);
const block = await provider.getBlockNumber(); Foundry
cast block-number --rpc-url https://rpc.beamrpc.com WebSocket
The same JSON-RPC methods are available over wss://rpc.beamrpc.com, plus eth_subscribe for newHeads and logs. Subscribe once and receive a notification per block, instead of polling.
wscat
wscat -c wss://rpc.beamrpc.com
> {"jsonrpc":"2.0","id":1,"method":"eth_subscribe","params":["newHeads"]}
< {"jsonrpc":"2.0","id":1,"result":"0x9ce59a13fd2c4f0e"}
< {"jsonrpc":"2.0","method":"eth_subscription","params":{"subscription":"0x9ce59a13fd2c4f0e","result":{"number":"0x1423e0a","hash":"0x…","timestamp":"0x68c9…"}}} Limits: 20 subscriptions per connection and 300 messages/second per IP. Idle connections are kept open; reconnect with backoff if the socket closes, and re-subscribe, since subscription ids do not survive a reconnect.
Rate limits
300 requests/second per IP, burst-friendly. Short bursts above that are tolerated; sustained excess returns HTTP 429. There are no API keys and no tiers. If you need more for a production app, back off and retry with jitter rather than fanning out across IPs.
Method support
Standard eth_, net_ and web3_ read methods, plus eth_sendRawTransaction for broadcasting signed transactions. JSON-RPC batches are accepted, up to 100 calls per request.
Tracing is served from our own node for recent blocks only: debug_traceTransaction, debug_traceCall, debug_traceBlockByNumber, debug_traceBlockByHash, trace_transaction, trace_block, trace_call, trace_callMany, trace_replayTransaction, trace_get and trace_filter. State is kept for roughly the last 800 blocks (about 7 minutes); a trace of an older block returns -32014. These calls are HTTP only, one call per request (not inside a batch, not over WebSocket), limited to 5 per second per IP, and trace_filter accepts at most 100 blocks per call. While the node is busy with another trace the call returns -32005; retry after a short wait.
The pending pool (txpool_*) is not available: Arc's mempool is sequencer-private, so no public node can offer it. The remaining debug_* and trace_* methods and the admin_* namespace are not exposed. Calls to them return JSON-RPC error -32601 (method not available).
CORS, keys and privacy
- CORS is enabled for every origin, so browser dApps can call the endpoint directly.
- No API key or signup. The URL is the whole integration.
- No cookies, no analytics, no stored IP addresses or request bodies; only aggregate counts. The privacy page lists exactly what is and is not kept.
- The endpoint is free to use. It is an independent, third-party service and is not affiliated with Circle.
Status
Live block height and observed block time are on the status page. The same health data is available as JSON at https://rpc.beamrpc.com/status.