Selvage Labs
Docs / Networks

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.

Archive Free public endpoint

Endpoints

WebSocketwss://asset-hub.selvagelabs.io
HTTPShttps://asset-hub.selvagelabs.io

Use WebSocket for subscriptions and long-lived apps, HTTPS for one-off calls. Live status and history: status.selvagelabs.io.

Quick start

polkadot.js
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
curl -s https://asset-hub.selvagelabs.io \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"chain_getHeader","params":[]}'
WebSocket, no library
// 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());
→ 1000000

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).

LimitValue
Open connections at once10
New connections or HTTPS calls20 a second, bursts to 40
Calls inside one WebSocket1,800 a minute
HTTPS request size1 MB
MethodsSafe 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

ChainPolkadot Asset Hub
HistoryArchive, from genesis
Chain specasset-hub-polkadot
Node releasepolkadot-stable2606-2

Need more than the public endpoint?

A dedicated node: your own URL, limits set for your workload, pruned or archive.

See plans