Polkadot Asset Hub
A full-history archive node, free to use. No API key and no sign-up: point your client at the URL below.
Endpoints
wss://asset-hub.selvagelabs.iohttps://asset-hub.selvagelabs.ioUse WebSocket for subscriptions and long-lived apps, HTTPS for one-off calls. Live status and history: status.selvagelabs.io.
Quick start
import { ApiPromise, WsProvider } from '@polkadot/api'; const api = await ApiPromise.create({ provider: new WsProvider('wss://asset-hub.selvagelabs.io'), }); const header = await api.rpc.chain.getHeader(); console.log(header.number.toNumber());
curl -s https://asset-hub.selvagelabs.io \ -H 'Content-Type: application/json' \ -d '{"jsonrpc":"2.0","id":1,"method":"chain_getHeader","params":[]}'
// New block headers, as they arrive const ws = new WebSocket('wss://asset-hub.selvagelabs.io'); ws.onopen = () => ws.send(JSON.stringify({ jsonrpc: '2.0', id: 1, method: 'chain_subscribeNewHeads', params: [], })); ws.onmessage = (e) => console.log(e.data);
Archive queries
This node keeps every block's state since genesis, so you can read storage as it was at any block. A pruned node answers State already discarded for anything older than its last few hundred blocks.
For example, the block number stored in System.Number, as it was at block 1,000,000:
const hash = await api.rpc.chain.getBlockHash(1_000_000); const then = await api.at(hash); console.log((await then.query.system.number()).toNumber());
The archive_v1_* methods (archive_v1_storage, archive_v1_hashByHeight and the rest) are served too.
Limits
The public endpoint is shared, so each client gets a fair share. Limits apply per IP address (IPv6 per /64).
| Limit | Value |
|---|---|
| Open connections at once | 10 |
| New connections or HTTPS calls | 20 a second, bursts to 40 |
| Calls inside one WebSocket | 1,800 a minute |
| HTTPS request size | 1 MB |
| Methods | Safe methods only |
A new connection or HTTPS call over the limit gets HTTP 429: back off for a second and retry. Calls over the limit inside an open WebSocket are slowed down, then refused with a JSON-RPC error. Reading state, subscribing and submitting transactions all work; node administration methods are refused. More in the docs.
What's served
Need more than the public endpoint?
A dedicated node: your own URL, limits set for your workload, pruned or archive.