โš ๏ธBlast API (blastapi.io) ends Oct 31. Migrate to Dwellir and skip Alchemy's expensive compute units.
Switch Today โ†’
Skip to main content

Kusama โ€“ Polkadot's Canary Network for Rapid Innovation

Kusama RPC
With Dwellir, you get access to our global Kusama network which always routes your API requests to the nearest available location, ensuring low latency and the fastest speeds.

Get your API key โ†’

Why Build on Kusama?โ€‹

Kusama is Polkadotโ€™s canary network, offering the same Substrate architecture with faster governance and real economic conditions. It is the proving ground for runtime features before they ship to Polkadot, making it ideal for teams that need production-grade infrastructure with rapid iteration cycles.

๐Ÿš€ Fast Iteration with Economic Finalityโ€‹

  • Governance cycles finalize upgrades in 7 days, letting you ship runtime changes weeks before Polkadot equivalents.
  • Real staking economics and on-chain treasury make Kusama suitable for live user pilots and incentivized testing.
  • Shared validator set delivers secure finality (~6s blocks) while preserving flexibility for experimental features.

๐Ÿงช Early Access to Substrate Innovationsโ€‹

  • New runtime pallets, XCM improvements, and networking upgrades land on Kusama first, giving you a head start on upcoming Polkadot capabilities.
  • Developers can validate performance at scale without waiting for Polkadot release windows.
  • Canary parachains (Statemine, Karura, Hydration, and more) provide a rich ecosystem for cross-chain experimentation.

๐ŸŒ Production Tooling & Ecosystem Depthโ€‹

  • Fully compatible with the Polkadot JS stack, Subxt, py-substrate-interface, and Dwellir Sidecar REST APIs.
  • Rich telemetry, explorers (Subscan, Statescan), and infrastructure partners support monitoring and analytics.
  • Seamlessly migrate winning features to Polkadot once product-market fit is proven.

Quick Start with Kusamaโ€‹

Connect to Kusamaโ€™s relay chain endpoints and Sidecar REST surface with Dwellir.

๐Ÿ”— RPC Endpoints

Kusama Relay Chain
Mainnet
Archive-enabled WebSocket endpoint with low-latency routing across Dwellir POPs.
WSS
wss://api-kusama.n.dwellir.com/YOUR_API_KEY
โœ“ Archive Nodeโœ“ Trace APIโœ“ Debug APIโœ“ WebSocketโœ“ Relay chain

Quick Connect:

curl -X POST https://api-kusama.n.dwellir.com/YOUR_API_KEY \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'

Installation & Setupโ€‹

import { ApiPromise, WsProvider } from '@polkadot/api';

async function main() {
const provider = new WsProvider('wss://api-kusama.n.dwellir.com/YOUR_API_KEY');
const api = await ApiPromise.create({ provider });

const [chain, version] = await Promise.all([
api.rpc.system.chain(),
api.rpc.system.version(),
]);

console.log(`Connected to ${chain.toString()} v${version.toString()}`);

// Subscribe to finalized blocks
const unsub = await api.rpc.chain.subscribeFinalizedHeads((header) => {
console.log(`Finalized block #${header.number} at ${header.hash}`);
});

// Stop subscription after 3 blocks
setTimeout(async () => {
await unsub();
await api.disconnect();
}, 18000);
}

main().catch(console.error);

Network Informationโ€‹

Genesis Hash

0xb0a8d493โ€ฆ3dafe

Relay chain

Native Token

KSM

12 decimals

SS58 Prefix

2

Address format

Runtime Spec Version

1007001

As of 3 Oct 2025

Transaction Version

26

state_getRuntimeVersion

Explorer

Subscan

kusama.subscan.io

Kusama operates as a relay chain without a parent relay. Parachain IDs are allocated per project; refer to individual parachain docs for cross-chain calls. Runtime and transaction versions above reflect the live values queried via state_getRuntimeVersion on 3 October 2025.

Substrate JSON-RPC API Referenceโ€‹

Kusama exposes the same Substrate RPC namespaces as Polkadot, covering node telemetry, block production, storage access, and finality tracking. Use the tables below to open the method guides for each namespace.

Core Substrate namespacesโ€‹

NamespacePurposeKey Methods
system_*Inspect node state, peers, and runtime metadata.system_chain, system_health, system_properties, system_version
chain_*Retrieve blocks, headers, and follow finality streams.chain_getHeader, chain_getBlockHash, chain_getFinalizedHead, chain_subscribeNewHeads, chain_subscribeFinalizedHeads
state_*Read storage, fetch metadata, and call runtime APIs.state_getStorage, state_getKeys, state_getKeysPaged, state_getMetadata, state_getRuntimeVersion, state_call
author_*Submit extrinsics and manage transaction queues.author_submitExtrinsic, author_submitAndWatchExtrinsic, author_pendingExtrinsics, author_rotateKeys
rpc_methodsDiscover every RPC namespace exposed by the node.rpc_methods

Finality and relay trackingโ€‹

NamespacePurposeKey Methods
grandpa_*Inspect GRANDPA voting rounds and validator thresholds.grandpa_roundState
beefy_*Track parachain proofs relayed through BEEFY.beefy_getFinalizedHead

Common Integration Patternsโ€‹

Track Finality with GRANDPA and BEEFYโ€‹

const finalizedHeads = await api.rpc.chain.subscribeFinalizedHeads((header) => {
console.log(`GRANDPA finalized #${header.number}`);
});

const beefySub = await api.rpc.beefy.subscribeJustifications((event) => {
console.log('BEEFY justification', event);
});

Combine GRANDPA finalized heads with beefy_subscribeJustifications to monitor parachain finality for bridges and XCMP relayers.

Paginate Large Storage Scansโ€‹

const page = await api.rpc.state.getKeysPaged(
'0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9',
100,
'0x',
null
);

console.log('Fetched', page.length, 'System.Account keys');

Use state_getKeysPaged with archive access to traverse large storage maps without overwhelming RPC quotas.

Decode Fees Before Submissionโ€‹

const ext = api.tx.balances.transferAllowDeath(dest, amount);
const info = await api.rpc.payment.queryInfo(ext.toHex());
console.log(`PartialFee: ${info.partialFee.toHuman()}`);

Estimate transaction costs using payment_queryInfo so you can bound fees before broadcasting to Kusama.

Performance Best Practicesโ€‹

  • Prefer WebSocket connections for subscriptions, finality, and multi-round queries.
  • Cache runtime metadata (api.runtimeVersion, type bundles) and reuse the ApiPromise instance across requests.
  • Shard heavy workloads across archive nodes if you need deep historical access; avoid full-chain scans without pagination.
  • Back off exponentially on retries when encountering isSyncing or transient -32010 errors.
  • Use Sidecar REST for read-heavy explorers when SCALE decoding is unnecessary.

Troubleshootingโ€‹

  • WebSocket handshake fails โ€“ Confirm your API key is appended exactly as provided and outbound TCP/443 is open.
  • Invalid SS58 address โ€“ Ensure addresses use prefix 2. Convert from Polkadot (prefix 0) with @polkadot/util-crypto helpers.
  • Type errors in clients โ€“ Refresh metadata (api.runtimeMetadata) after runtime upgrades; Kusama upgrades more frequently than Polkadot.
  • Extrinsic rejected โ€“ Decode the dispatch error via api.registry.findMetaError to surface module/error details.
  • rateLimit/TooManyRequests โ€“ Implement per-IP backoff and share a single connection pool across services.

Smoke Testsโ€‹

Run these baseline checks against production endpoints (values captured 3 Oct 2025):

# Node health (peers: 68, isSyncing: false)
curl -s https://api-kusama.n.dwellir.com/YOUR_API_KEY \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"system_health","params":[]}'

# Latest block header (#30363294)
curl -s https://api-kusama.n.dwellir.com/YOUR_API_KEY \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"chain_getHeader","params":[]}'

# Block hash for #30363295 (0x028651โ€ฆ2e0c)
curl -s https://api-kusama.n.dwellir.com/YOUR_API_KEY \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"chain_getBlockHash","params":["0x1cf4e9f"]}'

# Runtime version (specVersion 1007001, transactionVersion 26)
curl -s https://api-kusama.n.dwellir.com/YOUR_API_KEY \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"state_getRuntimeVersion","params":[]}'

Verify the response fields match the expected peers, block numbers, hashes, and version metadata before onboarding workloads.

Migration Guideโ€‹

  • Endpoints โ€“ Replace Polkadot RPC URLs with https://api-kusama.n.dwellir.com/YOUR_API_KEY or wss://api-kusama.n.dwellir.com/YOUR_API_KEY across services.
  • Addresses โ€“ Re-encode SS58 addresses with prefix 2; Polkadot addresses (prefix 0) are not valid on Kusama.
  • Runtime Types โ€“ Update your custom type bundles to match the Kusama spec (specVersion 1007001 as of Oct 2025) and refresh metadata caches after each upgrade.
  • Fee Calibration โ€“ Kusama uses different fee multipliers; re-run payment_queryInfo and adjust heuristics for tipping and priority fees.
  • Bridges & XCM โ€“ Confirm target parachain IDs and HRMP channels; Kusama pairs differ from Polkadot equivalents.

Resources & Toolsโ€‹