Endpoint
Stream selectors take the form <network>@<table>. Wildcards are accepted on either side.
| URL | Mode | Envelope |
|---|---|---|
/ws/<a> | Single channel | Raw payload |
/ws/<a>/<b>/… | Multi channel | Wrapped |
/stream?streams=<a>/<b>/… | Combined, query string | Wrapped |
When wrapped, every payload is delivered as { "stream": "<id>", "data": <raw> }. Bare /ws with no streams returns HTTP 400 — use /ws/*@* to explicitly opt into every stream.
Multi-network selectors
The <network> side accepts a comma-separated list to subscribe to the same table across chains in one selector — <n1>,<n2>,…@<table>. The server expands it into one entry per network, and LIST_SUBSCRIPTIONS echoes the expanded form.
wss://ws.pinax.network/ws/solana,base,mainnet@swaps // LIST_SUBSCRIPTIONS → ["solana@swaps", "base@swaps", "mainnet@swaps"]
Works on URL paths (/ws/…, /stream?streams=…) and in SUBSCRIBE / UNSUBSCRIBE params. A bare * can't be mixed with named networks (use * alone); empty or duplicate entries are rejected, and the comma list is not allowed on the <table> side.