AsyncAPI description of the WebSocket surface that Arbitrum exposes from publicly documented endpoints. ## Important scope notes (from Arbitrum docs) Arbitrum's public RPC endpoints — `arb1.arbitrum.io/rpc`, `nova.arbitrum.io/rpc`, and `sepolia-rollup.arbitrum.io/rpc` — **do not expose JSON-RPC over WebSockets**. The Arbitrum documentation states explicitly: "Arbitrum public RPCs do not provide Websocket support." Production teams use Alchemy, QuickNode, Infura, Chainstack, dRPC, Ankr, Allnodes, or a self-hosted Nitro node to obtain a WSS JSON-RPC endpoint. The *only* WebSocket interface Arbitrum publishes on its own domains is the **Nitro Sequencer Feed**, a public, read-only broadcast of ordered `BroadcastFeedMessage` envelopes. This document describes: 1. The Nitro Sequencer Feed channels (`arb1`, `nova`, `sepolia`). 2. The `eth_subscribe` channels that work against an Arbitrum Nitro JSON-RPC WebSocket *when one is available* (self-hosted node or third-party provider). These are included so consumers can model the message shape with Arbitrum's documented block extensions (`l1BlockNumber`, `sendRoot`, `sendCount`, modified `mixHash`, fixed `difficulty` / `gasLimit`, custom transaction types). ## eth_subscribe support on Arbitrum Nitro * `newHeads` — supported. Blocks include the Arbitrum-specific fields documented under "RPC methods" (`l1BlockNumber`, `sendRoot`, `sendCount`, `extraData == sendRoot`, mixed `mixHash`, fixed `difficulty` / `gasLimit`). * `logs` — supported. * `newPendingTransactions` — Arbitrum has a single centralized Sequencer and orders transactions on receipt; there is no public mempool, so the practical utility differs from L1 Ethereum. The subscription topic is accepted by Nitro for compatibility but does not surface a mempool the way Ethereum does. * `syncing` — accepted by Nitro for go-ethereum compatibility. No `arb_subscribe` family of methods is documented by Offchain Labs at the time of writing.
View SpecView on GitHubLayer 2EthereumRollupJSON-RPCStylusNitroOrbitBridgeAsyncAPIWebhooksEvents
Channels
/feed/arb1
subscribereceiveArb1SequencerFeed
Receive ordered sequencer broadcast messages from Arbitrum One.
Nitro Sequencer broadcast feed for Arbitrum One. The connection is a raw WebSocket; each text frame is a JSON `BroadcastMessage`.
/feed/nova
subscribereceiveNovaSequencerFeed
Receive ordered sequencer broadcast messages from Arbitrum Nova.
Nitro Sequencer broadcast feed for Arbitrum Nova.
/feed/sepolia
subscribereceiveSepoliaSequencerFeed
Receive ordered sequencer broadcast messages from Arbitrum Sepolia.
Nitro Sequencer broadcast feed for Arbitrum Sepolia testnet.
eth_subscribe/newHeads
publishsubscribeNewHeads
Open a `newHeads` subscription.
`eth_subscribe("newHeads")` on a Nitro JSON-RPC WebSocket. Emits a notification for every new L2 head produced by the Sequencer. Blocks include Arbitrum-specific fields (`l1BlockNumber`, `sendRoot`, `sendCount`, modified `mixHash`, fixed `difficulty` / `gasLimit`).
eth_subscribe/logs
publishsubscribeLogs
Open a `logs` subscription with an address/topics filter.
`eth_subscribe("logs", {address, topics})` on a Nitro JSON-RPC WebSocket. Emits a notification for each log matching the supplied address/topics filter.
eth_subscribe/newPendingTransactions
publishsubscribeNewPendingTransactions
Open a `newPendingTransactions` subscription.
`eth_subscribe("newPendingTransactions")`. Accepted by Nitro for go-ethereum compatibility, but Arbitrum's centralized Sequencer orders transactions on receipt — there is no public mempool, so the stream is effectively empty / of limited use compared to L1 Ethereum.
eth_subscribe/syncing
publishsubscribeSyncing
Open a `syncing` subscription.
`eth_subscribe("syncing")`. Accepted by Nitro for go-ethereum compatibility. Notifications reflect the local node's sync status.
Messages
✉
BroadcastMessage
Nitro Sequencer Broadcast Envelope
Top-level envelope emitted by the Nitro Sequencer feed broadcaster.
✉
JsonRpcSubscribeRequestNewHeads
eth_subscribe newHeads request
✉
JsonRpcSubscribeRequestLogs
eth_subscribe logs request
✉
JsonRpcSubscribeRequestNewPendingTxs
eth_subscribe newPendingTransactions request
✉
JsonRpcSubscribeRequestSyncing
eth_subscribe syncing request
✉
EthSubscriptionNewHead
eth_subscription notification — newHeads
✉
EthSubscriptionLog
eth_subscription notification — logs
✉
EthSubscriptionPendingTxHash
eth_subscription notification — pending tx hash
✉
EthSubscriptionSyncing
eth_subscription notification — syncing
Servers
wss
arb1-feedarb1-feed.arbitrum.io/feed
Public Nitro Sequencer broadcast feed for Arbitrum One mainnet (chain ID 42161). Read-only stream of ordered `BroadcastFeedMessage` envelopes. The `blockNumber` carried inside messages refers to the parent-chain (L1) block; L2 block number is computed as `genesisBlockNumber + sequenceNumber` (Arbitrum One genesis is 22207817).
wss
nova-feednova-feed.arbitrum.io/feed
Public Nitro Sequencer broadcast feed for Arbitrum Nova (chain ID 42170, AnyTrust DAC chain).
wss
sepolia-feedsepolia-rollup.arbitrum.io/feed
Public Nitro Sequencer broadcast feed for Arbitrum Sepolia testnet (chain ID 421614).
wss
nitro-rpc-ws{host}
Generic JSON-RPC WebSocket endpoint exposed by a self-hosted Nitro node or a third-party provider (Alchemy, QuickNode, Infura, Chainstack, dRPC, Ankr, Allnodes). Arbitrum's own public RPC hosts (`arb1.arbitrum.io/rpc`, `nova.arbitrum.io/rpc`, `sepolia-rollup.arbitrum.io/rpc`) do not accept WebSocket upgrades.