⚠️Blast API (blastapi.io) ends Oct 31. Migrate to Dwellir and skip Alchemy's expensive compute units.
Switch Today β†’
Skip to main content

Moonriver – Moonbeam's Canary Network on Kusama

Moonriver RPC
With Dwellir, you get access to our global Moonriver 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 Moonriver?​

Moonriver is Moonbeam’s canary network on Kusama, delivering the same Substrate foundation and EVM compatibility with faster iteration cycles. It is ideal for deploying and testing EVM and Substrate-based functionality under real economic conditions before promoting to Moonbeam.

⚑ Fast Iteration, Real Economics​

  • Rapid runtime upgrade cadence enables shipping features earlier than Moonbeam.
  • Real MOVR token economics and on-chain governance for production-like validation.
  • Shared Kusama security provides fast finality while enabling experimentation.

πŸ”— EVM + Substrate Interop​

  • Full EVM compatibility via Frontier with MetaMask, Hardhat, and Solidity tooling.
  • Native Substrate interfaces for storage, blocks, and runtime APIs.
  • Seamless migration path to Moonbeam after validation on Moonriver.

Quick Start with Moonriver​

Connect to Moonriver production endpoints with Dwellir’s global network.

πŸ”— RPC Endpoints

Moonriver (Kusama Parachain 2023)
Mainnet
Archive-enabled WebSocket and HTTPS endpoints with global routing.
WSS
wss://api-moonriver.n.dwellir.com/YOUR_API_KEY
HTTPS
https://api-moonriver.n.dwellir.com/YOUR_API_KEY
βœ“ Archive Nodeβœ“ Trace APIβœ“ Debug APIβœ“ WebSocketβœ“ Kusama parachain 2023

Quick Connect:

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

Installation & Setup​

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

Network Information​

Genesis Hash

0x401a1f9d…1474b

chain_getBlockHash(0)

Native Token

MOVR

18 decimals

SS58 Prefix

1285

system_properties

Relay / Para ID

Kusama / 2023

Parachain on Kusama

Runtime Spec Version

3900

As of 9 Oct 2025

Transaction Version

3

state_getRuntimeVersion

Explorer

Moonscan

moonriver.moonscan.io

Example Values Used in Docs​

These chain-specific variables are used across Moonriver examples:

exampleEvmAddress: 0x6bEc0BCA2F15876f675f2C38958Ff986551e4db1
exampleBlockHash: 0x1849c7bc2c547b315fef716c6f2fb6f5e256da60482a013286caf975d035f766
exampleBlockNumberHex: 0xcd64f5
explorerMainnet: https://moonriver.moonscan.io

Substrate JSON-RPC API Reference​

Moonriver exposes standard Substrate RPC namespaces for node telemetry, block production, storage access, and fee estimation. Open method guides from the dropdown below.

Available JSON-RPC Methods

System & Runtime

Identify the chain, runtime versions, and node health.

+

Chain Data & Finality

Inspect blocks, headers, and finality streams.

+

State Access & Storage

Query storage, metadata, and runtime entry points.

+

Authoring & Sessions

Submit extrinsics and manage session keys.

+

RPC Introspection

Discover supported RPC namespaces and versions.

+

Get your API key

Get your API key β†’

Common Integration Patterns​

Track new blocks (subscriptions)​

const unsub = await api.rpc.chain.subscribeNewHeads((header) => {
console.log(`New #${header.number} (${header.hash})`);
});

Paginate large storage scans​

const page = await api.rpc.state.getKeysPaged(
api.query.system.account.keyPrefix(),
100,
'0x',
null
);
console.log('Fetched', page.length, 'System.Account keys');

Estimate fees before broadcast​

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

Performance Best Practices​

  • Prefer WebSocket connections for subscriptions and multi-round queries.
  • Cache runtime metadata and reuse a single ApiPromise instance.
  • Use state_getKeysPaged for large scans; avoid full-chain traversals.
  • Exponential backoff on retries for transient -32010/TooManyRequests errors.

Troubleshooting​

  • WebSocket failure – Verify your API key and outbound TCP/443. Try HTTPS for single calls.
  • Type mismatches – Refresh metadata after runtime upgrades (api.runtimeVersion).
  • Invalid address – Moonriver uses SS58 prefix 1285 for Substrate addresses; EVM 0x… accounts are also supported in the runtime.
  • Extrinsic rejected – Decode with api.registry.findMetaError to surface module/error.

Smoke Tests​

Run these checks against production endpoints (values as of 9 Oct 2025):

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

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

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

Migration Guide​

  • Endpoints – Replace Polkadot/Moonbeam URLs with https://api-moonriver.n.dwellir.com/YOUR_API_KEY or wss://api-moonriver.n.dwellir.com/YOUR_API_KEY.
  • Addresses – Use SS58 prefix 1285 for Substrate-style addresses when needed; EVM 0x… addresses remain valid for account state.
  • Runtime types – Update custom type bundles as needed and refresh metadata caches after upgrades (specVersion 3900 on Oct 9, 2025).
  • Fees – Calibrate using payment_queryInfo/payment_queryFeeDetails for MOVR-denominated fees.
  • XCM/Parachain – Confirm HRMP channels and destination parachain IDs for XCM; Moonriver is parachain 2023 on Kusama.

Resources & Tools​