Polkadot Asset Hub REST API 0.1.2 to 0.3.0 API CHANGES
v0.3.0https://dotassethub-playbook.nownodes.ioThis page lists what changed in the Polkadot Asset Hub REST API between server versions 0.1.2 and 0.3.0. Only changed methods are listed. Everything not mentioned here works exactly as described in the main Polkadot Asset Hub REST API reference. No method was added or removed in these releases.
Changed
- Blocks. An extrinsic that could not be decoded is no longer dropped: it keeps its index and carries a new
decodeErrorobject instead ofmethodandargs, and the block response carriespartial: true. Before, every later extrinsic in such a block received the wrongevents,success,paysFeeand fee. - Blocks. Events emitted after the last extrinsic are returned in a new
afterExtrinsicsobject instead of being discarded. - Account balance, proxy and vesting info return
503when the node read fails, instead of200with zero balances or empty lists. - Asset balances report failed per-asset queries in
partialanderrors, and accept a newstrictparameter. - Staking payouts include the validator self-stake incentive in two new fields.
- Dry run accepts a new optional
xcmVersionbody field. - Metadata blob now contains the extrinsic metadata and chain info required by offline signers.
- Account endpoints accept addresses encoded with any SS58 prefix.
- Transaction parse decodes v4 transactions on runtimes with several transaction extension versions, and
pallet dispatchables with
useRcBlock=trueare read from the queried block's metadata.
Affected methods:
GET /v1/accounts/{accountId}/asset-approvalsGET /v1/accounts/{accountId}/asset-balancesGET /v1/accounts/{accountId}/balance-infoGET /v1/accounts/{accountId}/foreign-asset-balancesGET /v1/accounts/{accountId}/pool-asset-approvalsGET /v1/accounts/{accountId}/pool-asset-balancesGET /v1/accounts/{accountId}/proxy-infoGET /v1/accounts/{accountId}/staking-infoGET /v1/accounts/{accountId}/staking-payoutsGET /v1/accounts/{accountId}/vesting-infoGET /v1/blocksGET /v1/blocks/headGET /v1/blocks/{blockId}GET /v1/blocks/{blockId}/extrinsics/{extrinsicIndex}GET /v1/pallets/{palletId}/dispatchablesGET /v1/pallets/{palletId}/dispatchables/{dispatchableId}GET /v1/rc/accounts/{accountId}/balance-infoGET /v1/rc/accounts/{accountId}/proxy-infoGET /v1/rc/accounts/{accountId}/staking-infoGET /v1/rc/accounts/{accountId}/staking-payoutsGET /v1/rc/accounts/{accountId}/vesting-infoGET /v1/rc/blocksGET /v1/rc/blocks/headGET /v1/rc/blocks/{blockId}GET /v1/rc/blocks/{blockId}/extrinsics/{extrinsicIndex}POST /v1/rc/transaction/dry-runPOST /v1/rc/transaction/metadata-blobPOST /v1/rc/transaction/parsePOST /v1/transaction/dry-runPOST /v1/transaction/metadata-blobPOST /v1/transaction/parse
About the new fields
partial, afterExtrinsics, decodeError and errors are omitted when they are not needed, so a response
without problems looks exactly as before. method of an extrinsic is absent when that extrinsic could not be
decoded, so a client that expects it to always be present should check decodeError first.
Authentication
api-keyAuthapiKeyAPI Key: api-key in header
dot-rest-api 0.1.2 > 0.3.0 API CHANGES / modified methods
accounts
Account asset approvals
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. Addresses encoded with any SS58 prefix are now accepted; before, an address from another network was rejected with 400.
Returns asset approval information for a given account, asset, and delegate.
Parameters
accountIdstringrequiredpathSS58-encoded account address
atstringqueryBlock hash or number to query at
useRcBlockbooleanqueryTreat 'at' as relay chain block identifier
assetIdstringrequiredqueryThe asset ID to query approval for
delegatestringrequiredqueryThe delegate address with spending approval
Response
Asset approval information
Invalid parameters
Internal server error
Service unavailable
Account asset balances
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. If the query for some asset fails, the asset is no longer silently dropped: the response carries partial: true and the failed assets are listed in the new errors array (assetId, reason). When partial is true, a missing asset must not be treated as a zero balance. New query parameter strict: when true, the endpoint returns 503 instead of a partial 200. Addresses encoded with any SS58 prefix are now accepted; before, an address from another network was rejected with 400.
Returns asset balances for a given account on Asset Hub chains. A missing assetId means the account holds none of that asset; when partial is true the asset list is incomplete (some per-asset queries failed, see errors) and a missing assetId must NOT be treated as a zero balance.
Parameters
accountIdstringrequiredpathSS58-encoded account address
atstringqueryBlock hash or number to query at
useRcBlockbooleanqueryTreat 'at' as relay chain block identifier
assetsstringqueryComma-separated list of asset IDs to query
showEmptybooleanqueryWhen true, include assets with zero balance (default: false). Even with showEmpty, an asset whose query failed is omitted and listed in errors (not returned as zero), so this does not guarantee one entry per requested asset under partial failure.
strictbooleanqueryWhen true, return 503 if any per-asset query fails instead of a partial 200 (default: false)
Response
Account asset balances (may be partial; check the partial flag)
Invalid parameters
Internal server error
Service unavailable, or strict=true and a per-asset query failed
Account balance info
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. If reading the account balance or locks from the node fails, the endpoint now returns 503 Service temporarily unavailable (safe to retry) instead of 200 with free: 0 and empty locks. An unrecognised storage layout returns 500. A 200 response is unchanged and now always reflects real on-chain data. Addresses encoded with any SS58 prefix are now accepted; before, an address from another network was rejected with 400.
Returns balance information for a given account including free, reserved, and locked balances.
Parameters
accountIdstringrequiredpathSS58-encoded account address
atstringqueryBlock hash or number to query at
useRcBlockbooleanqueryTreat 'at' as relay chain block identifier
tokenstringqueryToken symbol for chains with multiple tokens
denominatedbooleanqueryWhen true, denominate balances using chain decimals
Response
Account balance information
Invalid account or block parameter
Internal server error
Service unavailable
Account foreign asset balances
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. The foreignAssets filter now accepts locations in the same form the API returns them: grouped numbers ("1,000"), 0x-prefixed byte arrays and camelCase keys (chainId, blockNumber, blockHash). Snake case keys and plain numbers still work. Addresses encoded with any SS58 prefix are now accepted; before, an address from another network was rejected with 400.
Returns foreign asset balances for a given account on Asset Hub chains. Foreign assets use XCM MultiLocation as their identifier.
Parameters
accountIdstringrequiredpathSS58-encoded account address
atstringqueryBlock hash or number to query at
useRcBlockbooleanqueryTreat 'at' as relay chain block identifier
foreignAssetsArray<string>queryList of multilocation JSON strings to filter by
showEmptybooleanqueryWhen true, include assets with zero balance (default: false)
Response
Foreign asset balances
Invalid account or parameters
Internal server error
Service unavailable
Account pool asset approvals
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. Addresses encoded with any SS58 prefix are now accepted; before, an address from another network was rejected with 400.
Returns pool asset approval information for a given account, asset, and delegate.
Parameters
accountIdstringrequiredpathSS58-encoded account address
atstringqueryBlock hash or number to query at
useRcBlockbooleanqueryTreat 'at' as relay chain block identifier
assetIdstringrequiredqueryThe pool asset ID to query approval for
delegatestringrequiredqueryThe delegate address with spending approval
Response
Pool asset approval information
Invalid parameters
Internal server error
Service unavailable
Account pool asset balances
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. Addresses encoded with any SS58 prefix are now accepted; before, an address from another network was rejected with 400.
Returns pool asset balances for a given account.
Parameters
accountIdstringrequiredpathSS58-encoded account address
atstringqueryBlock hash or number to query at
useRcBlockbooleanqueryTreat 'at' as relay chain block identifier
assetsstringqueryComma-separated list of pool asset IDs to query
showEmptybooleanqueryWhen true, include assets with zero balance (default: false)
Response
Pool asset balances
Invalid parameters
Internal server error
Service unavailable
Account proxy info
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. If reading proxy definitions from the node fails, the endpoint now returns 503 Service temporarily unavailable (safe to retry) instead of 200 with an empty proxy list. An unrecognised storage layout returns 500. A 200 response is unchanged and now always reflects real on-chain data. Addresses encoded with any SS58 prefix are now accepted; before, an address from another network was rejected with 400.
Returns proxy information for a given account including delegated proxies and their types.
Parameters
accountIdstringrequiredpathSS58-encoded account address
atstringqueryBlock hash or number to query at
useRcBlockbooleanqueryTreat 'at' as relay chain block identifier
Response
Proxy information
Invalid parameters
Internal server error
Service unavailable
Account staking info
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. Addresses encoded with any SS58 prefix are now accepted; before, an address from another network was rejected with 400.
Returns staking information for a given stash account including bonded amount, controller, and nominations.
Parameters
accountIdstringrequiredpathSS58-encoded stash account address
atstringqueryBlock hash or number to query at
useRcBlockbooleanqueryTreat 'at' as relay chain block identifier
includeClaimedRewardsbooleanqueryWhen true, include claimed rewards in the response
Response
Staking information
Invalid parameters
Internal server error
Service unavailable
Account staking payouts
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. Validator self-stake incentive is now included. Each entry of payouts has a new field validatorSelfStakeIncentive, and each entry of erasPayouts has a new field totalEraSelfStakeIncentivePayout (both "0" on chains without this incentive). totalEraPayout now explicitly covers the staker reward pool only; add totalEraSelfStakeIncentivePayout to get the full validator era payout. validatorSelfStakeIncentive is income for the queried account only when validatorId equals the account, so do not sum it across entries. Addresses encoded with any SS58 prefix are now accepted; before, an address from another network was rejected with 400.
Returns staking payout history for a given account including era rewards and claimed status.
Parameters
accountIdstringrequiredpathSS58-encoded stash account address
atstringqueryBlock hash or number to query at
depthstringqueryNumber of eras to query (default: 1)
erastringqueryThe era to query at (default: active_era - 1)
unclaimedOnlybooleanqueryOnly show unclaimed rewards (default: true)
useRcBlockbooleanqueryTreat 'at' as relay chain block identifier
Response
Staking payout information
Invalid parameters
Internal server error
Service unavailable
Account vesting info
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. If reading vesting schedules from the node fails, the endpoint now returns 503 Service temporarily unavailable (safe to retry) instead of 200 with an empty vesting list. An unrecognised storage layout returns 500. A 200 response is unchanged and now always reflects real on-chain data. Addresses encoded with any SS58 prefix are now accepted; before, an address from another network was rejected with 400.
Returns vesting information for a given account including vesting schedules and locked amounts.
Parameters
accountIdstringrequiredpathSS58-encoded account address
atstringqueryBlock hash or number to query at
useRcBlockbooleanqueryTreat 'at' as relay chain block identifier
includeClaimablebooleanqueryWhen true, calculate vested amounts
Response
Vesting information
Invalid parameters
Internal server error
Service unavailable
blocks
Get blocks by range
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. An extrinsic that could not be decoded is no longer dropped. It stays at its own index with a new decodeError object (index, reason, rawHex), without method and args, and with era as an empty object; the response then carries partial: true. Before, such entries were skipped, so every later extrinsic received the previous one's events, success, paysFee and fee. Events emitted after the last extrinsic (poll hook, multi block migrations) were discarded and are now returned in a new top-level afterExtrinsics object with the same shape as onFinalize. A block body the node does not have now returns an error instead of an empty list. Extrinsics that were previously skipped on runtimes with several transaction extension versions, and tuple arguments in events, are now decoded correctly. partial and afterExtrinsics are omitted when not needed, so a block that decodes cleanly looks exactly as before.
Returns a collection of blocks given a numeric range. Range is inclusive and limited to 500 blocks. An entry that could not be decoded is still returned at its own index, with decodeError set, no method or args, and era as an empty object, and the response carries partial: true; its events, success and paysFee come from the block's events, and success is false when the block carried no outcome event for that index. Events emitted after the last extrinsic, by the FRAME poll hook or a multi block migration, are returned in a separate afterExtrinsics object, omitted when the block has none.
Parameters
rangestringqueryBlock range in format 'start-end' (e.g. '100-200')
eventDocsbooleanqueryInclude documentation for events
extrinsicDocsbooleanqueryInclude documentation for extrinsics
noFeesbooleanquerySkip fee calculation for extrinsics
useRcBlockbooleanqueryTreat range as Relay Chain blocks
useEvmFormatbooleanqueryConvert AccountId32 addresses to EVM format for revive pallet events
Response
Array of block information
Invalid range parameter
Internal server error
Service unavailable
Get latest block
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. An extrinsic that could not be decoded is no longer dropped. It stays at its own index with a new decodeError object (index, reason, rawHex), without method and args, and with era as an empty object; the response then carries partial: true. Before, such entries were skipped, so every later extrinsic received the previous one's events, success, paysFee and fee. Events emitted after the last extrinsic (poll hook, multi block migrations) were discarded and are now returned in a new top-level afterExtrinsics object with the same shape as onFinalize. A block body the node does not have now returns an error instead of an empty list. Extrinsics that were previously skipped on runtimes with several transaction extension versions, and tuple arguments in events, are now decoded correctly. partial and afterExtrinsics are omitted when not needed, so a block that decodes cleanly looks exactly as before.
Returns the latest finalized or canonical block with full extrinsic and event details. An entry that could not be decoded is still returned at its own index, with decodeError set, no method or args, and era as an empty object, and the response carries partial: true; its events, success and paysFee come from the block's events, and success is false when the block carried no outcome event for that index. Events emitted after the last extrinsic, by the FRAME poll hook or a multi block migration, are returned in a separate afterExtrinsics object, omitted when the block has none.
Parameters
finalizedbooleanqueryWhen true (default), returns finalized head. When false, returns canonical head.
eventDocsbooleanqueryInclude documentation for events
extrinsicDocsbooleanqueryInclude documentation for extrinsics
noFeesbooleanquerySkip fee calculation for extrinsics
decodedXcmMsgsbooleanqueryDecode and include XCM messages
paraIdinteger<int32>>= 0queryFilter XCM messages by parachain ID
useRcBlockbooleanqueryWhen true, use relay chain head to find corresponding Asset Hub blocks
useEvmFormatbooleanqueryConvert AccountId32 addresses to EVM format for revive pallet events
Response
Latest block information
Internal server error
Service unavailable
Get block by ID
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. An extrinsic that could not be decoded is no longer dropped. It stays at its own index with a new decodeError object (index, reason, rawHex), without method and args, and with era as an empty object; the response then carries partial: true. Before, such entries were skipped, so every later extrinsic received the previous one's events, success, paysFee and fee. Events emitted after the last extrinsic (poll hook, multi block migrations) were discarded and are now returned in a new top-level afterExtrinsics object with the same shape as onFinalize. A block body the node does not have now returns an error instead of an empty list. Extrinsics that were previously skipped on runtimes with several transaction extension versions, and tuple arguments in events, are now decoded correctly. partial and afterExtrinsics are omitted when not needed, so a block that decodes cleanly looks exactly as before.
Returns block information for a given block identifier (hash or number), including extrinsics, events, and fees. An entry that could not be decoded is still returned at its own index, with decodeError set, no method or args, and era as an empty object, and the response carries partial: true; its events, success and paysFee come from the block's events, and success is false when the block carried no outcome event for that index. Events emitted after the last extrinsic, by the FRAME poll hook or a multi block migration, are returned in a separate afterExtrinsics object, omitted when the block has none.
Parameters
blockIdstringrequiredpathBlock height number or block hash
eventDocsbooleanqueryInclude documentation for events
extrinsicDocsbooleanqueryInclude documentation for extrinsics
noFeesbooleanquerySkip fee calculation for extrinsics
finalizedKeybooleanqueryWhen true (default), include finalized status in response
decodedXcmMsgsbooleanqueryDecode and include XCM messages
paraIdinteger<int32>>= 0queryFilter XCM messages by parachain ID
useRcBlockbooleanqueryTreat blockId as Relay Chain block and return Asset Hub blocks
useEvmFormatbooleanqueryConvert AccountId32 addresses to EVM format for revive pallet events
Response
Block information
Invalid block identifier
Internal server error
Service unavailable
Get extrinsic by index
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. The extrinsic at the requested on-chain index is now always returned. Before, if an earlier extrinsic in the block could not be decoded, the list shifted and a different extrinsic could be returned. If the requested extrinsic itself cannot be decoded, it is returned with a new decodeError object (index, reason, rawHex), without method and args, and with era as an empty object.
Returns a specific extrinsic from a block by its index within the block. If that entry could not be decoded it is still returned, with decodeError set, no method or args, and era as an empty object; its events, success and paysFee come from the block's events, and success is false when the block carried no outcome event for that index.
Parameters
blockIdstringrequiredpathBlock height number or block hash
extrinsicIndexstringrequiredpathIndex of the extrinsic within the block
eventDocsbooleanqueryInclude documentation for events
extrinsicDocsbooleanqueryInclude documentation for extrinsics
noFeesbooleanquerySkip fee calculation
useRcBlockbooleanqueryWhen true, treat blockId as Relay Chain block and return Asset Hub extrinsics
useEvmFormatbooleanqueryConvert AccountId32 addresses to EVM format for revive pallet events
Response
Extrinsic details
Invalid block identifier or extrinsic index
Internal server error
Service unavailable
pallets
Pallet dispatchables
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. With useRcBlock=true, dispatchables are now read from the metadata of the queried block instead of the current runtime, so type ids in the response match that block. Request and response fields are unchanged.
Returns the dispatchable calls defined in a pallet.
Parameters
palletIdstringrequiredpathName or index of the pallet
atstringqueryBlock hash or number to query at
onlyIdsbooleanqueryOnly return dispatchable names
useRcBlockbooleanqueryTreat 'at' as relay chain block identifier
Response
Pallet dispatchables
Invalid pallet
Internal server error
Service unavailable
Pallet dispatchable details
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. With useRcBlock=true, dispatchables are now read from the metadata of the queried block instead of the current runtime, so type ids in the response match that block. Request and response fields are unchanged.
Returns a single dispatchable call defined in a pallet.
Parameters
palletIdstringrequiredpathName or index of the pallet
dispatchableIdstringrequiredpathName of the dispatchable
atstringqueryBlock hash or number to query at
metadatabooleanqueryInclude metadata
useRcBlockbooleanqueryTreat 'at' as relay chain block identifier
Response
Dispatchable details
Dispatchable not found
Internal server error
Service unavailable
rc
RC get balance info
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. If reading the account balance or locks from the node fails, the endpoint now returns 503 Service temporarily unavailable (safe to retry) instead of 200 with free: 0 and empty locks. An unrecognised storage layout returns 500. A 200 response is unchanged and now always reflects real on-chain data. Addresses encoded with any SS58 prefix are now accepted; before, an address from another network was rejected with 400.
Returns balance information for a given account on the relay chain.
Parameters
accountIdstringrequiredpathSS58-encoded account address
atstringqueryBlock identifier (number or hash)
tokenstringqueryToken symbol (defaults to native token)
denominatedbooleanqueryDenominate balances using chain decimals
Response
Balance information
Invalid account address
Internal server error
Relay chain not configured
RC get proxy info
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. If reading proxy definitions from the node fails, the endpoint now returns 503 Service temporarily unavailable (safe to retry) instead of 200 with an empty proxy list. An unrecognised storage layout returns 500. A 200 response is unchanged and now always reflects real on-chain data. Addresses encoded with any SS58 prefix are now accepted; before, an address from another network was rejected with 400.
Returns proxy information for a given account on the relay chain.
Parameters
accountIdstringrequiredpathSS58-encoded account address
atstringqueryBlock identifier (number or hash)
Response
Proxy information
Invalid account address
Internal server error
Relay chain not configured
RC get staking info
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. Addresses encoded with any SS58 prefix are now accepted; before, an address from another network was rejected with 400.
Returns staking information for a given stash account on the relay chain.
Parameters
accountIdstringrequiredpathSS58-encoded stash account address
atstringqueryBlock identifier (number or hash)
includeClaimedRewardsbooleanqueryWhen true, include claimed rewards in the response
Response
Staking information
Invalid account address
Internal server error
Relay chain not configured
RC get staking payouts
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. Validator self-stake incentive is now included. Each entry of payouts has a new field validatorSelfStakeIncentive, and each entry of erasPayouts has a new field totalEraSelfStakeIncentivePayout (both "0" on chains without this incentive). totalEraPayout now explicitly covers the staker reward pool only; add totalEraSelfStakeIncentivePayout to get the full validator era payout. validatorSelfStakeIncentive is income for the queried account only when validatorId equals the account, so do not sum it across entries. Addresses encoded with any SS58 prefix are now accepted; before, an address from another network was rejected with 400.
Returns staking payout information for a given account on the relay chain.
Parameters
accountIdstringrequiredpathSS58-encoded account address
atstringqueryBlock identifier (number or hash)
depthinteger<int32>>= 0queryNumber of eras to query (default: 1)
erainteger<int32>>= 0queryThe era to query at (default: active_era - 1)
unclaimedOnlybooleanqueryOnly show unclaimed rewards (default: true)
Response
Staking payouts
Invalid account address
Internal server error
Relay chain not configured
RC get vesting info
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. If reading vesting schedules from the node fails, the endpoint now returns 503 Service temporarily unavailable (safe to retry) instead of 200 with an empty vesting list. An unrecognised storage layout returns 500. A 200 response is unchanged and now always reflects real on-chain data. Addresses encoded with any SS58 prefix are now accepted; before, an address from another network was rejected with 400.
Returns vesting information for a given account on the relay chain.
Parameters
accountIdstringrequiredpathSS58-encoded account address
atstringqueryBlock identifier (number or hash)
Response
Vesting information
Invalid account address
Internal server error
Relay chain not configured
RC get blocks by range
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. An extrinsic that could not be decoded is no longer dropped. It stays at its own index with a new decodeError object (index, reason, rawHex), without method and args, and with era as an empty object; the response then carries partial: true. Before, such entries were skipped, so every later extrinsic received the previous one's events, success, paysFee and fee. Events emitted after the last extrinsic (poll hook, multi block migrations) were discarded and are now returned in a new top-level afterExtrinsics object with the same shape as onFinalize. A block body the node does not have now returns an error instead of an empty list. Extrinsics that were previously skipped on runtimes with several transaction extension versions, and tuple arguments in events, are now decoded correctly. partial and afterExtrinsics are omitted when not needed, so a block that decodes cleanly looks exactly as before.
Returns relay chain blocks within a specified range (max 500 blocks). An entry that could not be decoded is still returned at its own index, with decodeError set, no method or args, and era as an empty object, and the response carries partial: true; its events, success and paysFee come from the block's events, and success is false when the block carried no outcome event for that index. Events emitted after the last extrinsic, by the FRAME poll hook or a multi block migration, are returned in a separate afterExtrinsics object, omitted when the block has none.
Parameters
rangestringqueryBlock range (e.g., '100-200')
eventDocsbooleanqueryInclude event documentation
extrinsicDocsbooleanqueryInclude extrinsic documentation
noFeesbooleanquerySkip fee calculation
decodedXcmMsgsbooleanqueryDecode and include XCM messages
paraIdinteger<int32>>= 0queryFilter XCM messages by parachain ID
Response
Relay chain blocks
Invalid range or missing parameter
Internal server error
Relay chain not configured
RC get head block
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. An extrinsic that could not be decoded is no longer dropped. It stays at its own index with a new decodeError object (index, reason, rawHex), without method and args, and with era as an empty object; the response then carries partial: true. Before, such entries were skipped, so every later extrinsic received the previous one's events, success, paysFee and fee. Events emitted after the last extrinsic (poll hook, multi block migrations) were discarded and are now returned in a new top-level afterExtrinsics object with the same shape as onFinalize. A block body the node does not have now returns an error instead of an empty list. Extrinsics that were previously skipped on runtimes with several transaction extension versions, and tuple arguments in events, are now decoded correctly. partial and afterExtrinsics are omitted when not needed, so a block that decodes cleanly looks exactly as before.
Returns the latest block on the relay chain. An entry that could not be decoded is still returned at its own index, with decodeError set, no method or args, and era as an empty object, and the response carries partial: true; its events, success and paysFee come from the block's events, and success is false when the block carried no outcome event for that index. Events emitted after the last extrinsic, by the FRAME poll hook or a multi block migration, are returned in a separate afterExtrinsics object, omitted when the block has none.
Parameters
finalizedbooleanqueryWhen true returns finalized head (default: true)
eventDocsbooleanqueryInclude event documentation
extrinsicDocsbooleanqueryInclude extrinsic documentation
noFeesbooleanquerySkip fee calculation
decodedXcmMsgsbooleanqueryDecode and include XCM messages
paraIdinteger<int32>>= 0queryFilter XCM messages by parachain ID
Response
Relay chain head block
Internal server error
Relay chain not configured
RC get block by ID
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. An extrinsic that could not be decoded is no longer dropped. It stays at its own index with a new decodeError object (index, reason, rawHex), without method and args, and with era as an empty object; the response then carries partial: true. Before, such entries were skipped, so every later extrinsic received the previous one's events, success, paysFee and fee. Events emitted after the last extrinsic (poll hook, multi block migrations) were discarded and are now returned in a new top-level afterExtrinsics object with the same shape as onFinalize. A block body the node does not have now returns an error instead of an empty list. Extrinsics that were previously skipped on runtimes with several transaction extension versions, and tuple arguments in events, are now decoded correctly. partial and afterExtrinsics are omitted when not needed, so a block that decodes cleanly looks exactly as before.
Returns relay chain block information for a given block identifier. An entry that could not be decoded is still returned at its own index, with decodeError set, no method or args, and era as an empty object, and the response carries partial: true; its events, success and paysFee come from the block's events, and success is false when the block carried no outcome event for that index. Events emitted after the last extrinsic, by the FRAME poll hook or a multi block migration, are returned in a separate afterExtrinsics object, omitted when the block has none.
Parameters
blockIdstringrequiredpathBlock height number or block hash
eventDocsbooleanqueryInclude event documentation
extrinsicDocsbooleanqueryInclude extrinsic documentation
noFeesbooleanquerySkip fee calculation
decodedXcmMsgsbooleanqueryInclude decoded XCM messages
paraIdinteger<int32>>= 0queryFilter XCM messages by parachain ID
Response
Relay chain block information
Invalid block identifier
Internal server error
Relay chain not configured
RC get extrinsic by index
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. The extrinsic at the requested on-chain index is now always returned. Before, if an earlier extrinsic in the block could not be decoded, the list shifted and a different extrinsic could be returned. If the requested extrinsic itself cannot be decoded, it is returned with a new decodeError object (index, reason, rawHex), without method and args, and with era as an empty object.
Returns a specific extrinsic from a relay chain block by its index. If that entry could not be decoded it is still returned, with decodeError set, no method or args, and era as an empty object; its events, success and paysFee come from the block's events, and success is false when the block carried no outcome event for that index.
Parameters
blockIdstringrequiredpathBlock height number or block hash
extrinsicIndexstringrequiredpathIndex of the extrinsic in the block
eventDocsbooleanqueryInclude event documentation
extrinsicDocsbooleanqueryInclude extrinsic documentation
noFeesbooleanquerySkip fee calculation
Response
Extrinsic details
Invalid block ID or extrinsic index
Internal server error
Relay chain not configured
RC dry run transaction
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. New optional body field xcmVersion (integer): the XCM version used to encode the XCM programs in the dry run result. It is used only on runtimes whose dry run API takes this parameter; when omitted, the chain's safe XCM version is used. Before, the endpoint failed on such runtimes.
Dry run a transaction on the relay chain.
Body
Transaction with 'tx', 'senderAddress', and optional 'at' and 'xcmVersion' fields
Response
Dry run result
Invalid transaction
Internal server error
Service unavailable
RC metadata blob
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. The returned metadataBlob now also contains the extrinsic metadata and the chain info (specVersion, specName, base58Prefix, decimals, tokenSymbol) after the Merkle proof, as required by offline signers. Before, it contained the proof only. Request and response fields are unchanged.
Generates a metadata blob from the relay chain for transaction signing.
Body
Request with 'tx' field and optional 'at' block
Response
Metadata blob
Internal server error
Service unavailable
Parse transaction (relay chain)
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. Transactions in the v4 format are now decoded correctly on runtimes that expose several transaction extension versions; before, they failed to decode. Request and response fields are unchanged.
Decode a raw transaction using relay chain metadata. Only available on parachains. Returns the decoded pallet/method, call arguments, signature info, nonce, tip, era, and hash. Note: This endpoint uses the relay chain's current (latest) metadata for decoding. Transactions created for older runtime versions may fail to decode if the extrinsic format has changed.
Body
Transaction with 'tx' field containing hex-encoded extrinsic
Request body for transaction parsing.
txstringHex-encoded extrinsic with optional 0x prefix.
Response
Parsed transaction
Invalid transaction or relay chain not configured
Internal server error
Relay chain unavailable
transaction
Dry run transaction
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. New optional body field xcmVersion (integer): the XCM version used to encode the XCM programs in the dry run result. It is used only on runtimes whose dry run API takes this parameter; when omitted, the chain's safe XCM version is used. Before, the endpoint failed on such runtimes.
Dry run a transaction to check validity without submitting.
Body
Transaction with 'tx', 'senderAddress', and optional 'at' and 'xcmVersion' fields
Response
Dry run result
Invalid transaction
Internal server error
Service unavailable
Generate metadata blob
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. The returned metadataBlob now also contains the extrinsic metadata and the chain info (specVersion, specName, base58Prefix, decimals, tokenSymbol) after the Merkle proof, as required by offline signers. Before, it contained the proof only. Request and response fields are unchanged.
Generates a metadata blob for transaction signing with the CheckMetadataHash extension.
Body
Request with 'tx' field and optional 'at' block
Response
Metadata blob
Invalid parameters
Internal server error
Service unavailable
Parse transaction
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Changed. Transactions in the v4 format are now decoded correctly on runtimes that expose several transaction extension versions; before, they failed to decode. Request and response fields are unchanged.
Decode a raw transaction and return its components without executing or submitting it. Returns the decoded pallet/method, call arguments, signature info, nonce, tip, era, and hash. Note: This endpoint uses the chain's current (latest) metadata for decoding. Transactions created for older runtime versions may fail to decode if the extrinsic format has changed.
Body
Transaction with 'tx' field containing hex-encoded extrinsic
Request body for transaction parsing.
txstringHex-encoded extrinsic with optional 0x prefix.
Response
Parsed transaction
Invalid transaction
Internal server error