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.