Docs
Supported ChainsAsset HubSubstrate APIState Methods

state_getMetadata - Asset Hub RPC Method

Get runtime metadata on Asset Hub. Essential for decoding storage and extrinsics.

Returns the runtime metadata on Asset Hub.

Use Cases

  • Runtime introspection - Discover available pallets and calls
  • Extrinsic building - Get call and type information for native stablecoin transfers (USDC, USDT), DOT staking and governance, and cross-chain asset management via XCM
  • Storage key generation - Build storage keys from metadata
  • Client generation - Auto-generate typed APIs

Request Parameters

Request
blockHashString

Block hash for historical metadata

Response Body

Response

Code Examples

Bash
curl https://api-asset-hub-polkadot.n.dwellir.com/<YOUR_API_KEY>/YOUR_API_KEY \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "state_getMetadata",
    "params": [],
    "id": 1
  }'
JavaScript
import { ApiPromise, WsProvider } from '@polkadot/api';

const provider = new WsProvider('wss://api-asset-hub-polkadot.n.dwellir.com/YOUR_API_KEY');
const api = await ApiPromise.create({ provider });

// Get runtime metadata
const metadata = await api.rpc.state.getMetadata();

// List available pallets
const pallets = metadata.asLatest.pallets.map(p => p.name.toString());
console.log('Available pallets:', pallets);

// Get specific pallet info
const systemPallet = metadata.asLatest.pallets.find(p => p.name.toString() === 'System');
console.log('System pallet calls:', systemPallet.calls.isSome ? 'Available' : 'None');

await api.disconnect();
Python
import requests

def get_metadata():
    url = 'https://api-asset-hub-polkadot.n.dwellir.com/<YOUR_API_KEY>/YOUR_API_KEY'

    payload = {
        'jsonrpc': '2.0',
        'method': 'state_getMetadata',
        'params': [],
        'id': 1
    }

    response = requests.post(url, json=payload)
    return response.json()['result']

metadata_hex = get_metadata()
print(f'Metadata length: {len(metadata_hex)} bytes')

On this page