Home

Kusama Asset Hub REST API 0.1.2 to 0.3.0 API CHANGES

v0.3.0
Base URL
https://ksmassethub-playbook.nownodes.io

This page lists what changed in the Kusama 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 Kusama 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 decodeError object instead of method and args, and the block response carries partial: true. Before, every later extrinsic in such a block received the wrong events, success, paysFee and fee.
  • Blocks. Events emitted after the last extrinsic are returned in a new afterExtrinsics object instead of being discarded.
  • Account balance, proxy and vesting info return 503 when the node read fails, instead of 200 with zero balances or empty lists.
  • Asset balances report failed per-asset queries in partial and errors, and accept a new strict parameter.
  • Staking payouts include the validator self-stake incentive in two new fields.
  • Dry run accepts a new optional xcmVersion body 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=true are read from the queried block's metadata.

Affected methods:

  • GET /v1/accounts/{accountId}/asset-approvals
  • GET /v1/accounts/{accountId}/asset-balances
  • GET /v1/accounts/{accountId}/balance-info
  • GET /v1/accounts/{accountId}/foreign-asset-balances
  • GET /v1/accounts/{accountId}/pool-asset-approvals
  • GET /v1/accounts/{accountId}/pool-asset-balances
  • GET /v1/accounts/{accountId}/proxy-info
  • GET /v1/accounts/{accountId}/staking-info
  • GET /v1/accounts/{accountId}/staking-payouts
  • GET /v1/accounts/{accountId}/vesting-info
  • GET /v1/blocks
  • GET /v1/blocks/head
  • GET /v1/blocks/{blockId}
  • GET /v1/blocks/{blockId}/extrinsics/{extrinsicIndex}
  • GET /v1/pallets/{palletId}/dispatchables
  • GET /v1/pallets/{palletId}/dispatchables/{dispatchableId}
  • GET /v1/rc/accounts/{accountId}/balance-info
  • GET /v1/rc/accounts/{accountId}/proxy-info
  • GET /v1/rc/accounts/{accountId}/staking-info
  • GET /v1/rc/accounts/{accountId}/staking-payouts
  • GET /v1/rc/accounts/{accountId}/vesting-info
  • GET /v1/rc/blocks
  • GET /v1/rc/blocks/head
  • GET /v1/rc/blocks/{blockId}
  • GET /v1/rc/blocks/{blockId}/extrinsics/{extrinsicIndex}
  • POST /v1/rc/transaction/dry-run
  • POST /v1/rc/transaction/metadata-blob
  • POST /v1/rc/transaction/parse
  • POST /v1/transaction/dry-run
  • POST /v1/transaction/metadata-blob
  • POST /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-keyAuthapiKey

API Key: api-key in header

ksm-rest-api 0.1.2 > 0.3.0 API CHANGES / modified methods

accounts

Account asset approvals

GET
https://ksmassethub-playbook.nownodes.io/v1/accounts/{accountId}/asset-approvals

Authorizations

ApiKeyAuthApiKeyAuth

api-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

accountIdstringrequiredpath

SS58-encoded account address

atstringquery

Block hash or number to query at

useRcBlockbooleanquery

Treat 'at' as relay chain block identifier

assetIdstringrequiredquery

The asset ID to query approval for

delegatestringrequiredquery

The delegate address with spending approval

Response

200OK

Asset approval information

400Bad Request

Invalid parameters

500Internal Server Error

Internal server error

503Service Unavailable

Service unavailable

Account asset balances

GET
https://ksmassethub-playbook.nownodes.io/v1/accounts/{accountId}/asset-balances

Authorizations

ApiKeyAuthApiKeyAuth

api-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

accountIdstringrequiredpath

SS58-encoded account address

atstringquery

Block hash or number to query at

useRcBlockbooleanquery

Treat 'at' as relay chain block identifier

assetsstringquery

Comma-separated list of asset IDs to query

showEmptybooleanquery

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

strictbooleanquery

When true, return 503 if any per-asset query fails instead of a partial 200 (default: false)

Response

200OK

Account asset balances (may be partial; check the partial flag)

400Bad Request

Invalid parameters

500Internal Server Error

Internal server error

503Service Unavailable

Service unavailable, or strict=true and a per-asset query failed

Account balance info

GET
https://ksmassethub-playbook.nownodes.io/v1/accounts/{accountId}/balance-info

Authorizations

ApiKeyAuthApiKeyAuth

api-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

accountIdstringrequiredpath

SS58-encoded account address

atstringquery

Block hash or number to query at

useRcBlockbooleanquery

Treat 'at' as relay chain block identifier

tokenstringquery

Token symbol for chains with multiple tokens

denominatedbooleanquery

When true, denominate balances using chain decimals

Response

200OK

Account balance information

400Bad Request

Invalid account or block parameter

500Internal Server Error

Internal server error

503Service Unavailable

Service unavailable

Account foreign asset balances

GET
https://ksmassethub-playbook.nownodes.io/v1/accounts/{accountId}/foreign-asset-balances

Authorizations

ApiKeyAuthApiKeyAuth

api-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

accountIdstringrequiredpath

SS58-encoded account address

atstringquery

Block hash or number to query at

useRcBlockbooleanquery

Treat 'at' as relay chain block identifier

foreignAssetsArray<string>query

List of multilocation JSON strings to filter by

showEmptybooleanquery

When true, include assets with zero balance (default: false)

Response

200OK

Foreign asset balances

400Bad Request

Invalid account or parameters

500Internal Server Error

Internal server error

503Service Unavailable

Service unavailable

Account pool asset approvals

GET
https://ksmassethub-playbook.nownodes.io/v1/accounts/{accountId}/pool-asset-approvals

Authorizations

ApiKeyAuthApiKeyAuth

api-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

accountIdstringrequiredpath

SS58-encoded account address

atstringquery

Block hash or number to query at

useRcBlockbooleanquery

Treat 'at' as relay chain block identifier

assetIdstringrequiredquery

The pool asset ID to query approval for

delegatestringrequiredquery

The delegate address with spending approval

Response

200OK

Pool asset approval information

400Bad Request

Invalid parameters

500Internal Server Error

Internal server error

503Service Unavailable

Service unavailable

Account pool asset balances

GET
https://ksmassethub-playbook.nownodes.io/v1/accounts/{accountId}/pool-asset-balances

Authorizations

ApiKeyAuthApiKeyAuth

api-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

accountIdstringrequiredpath

SS58-encoded account address

atstringquery

Block hash or number to query at

useRcBlockbooleanquery

Treat 'at' as relay chain block identifier

assetsstringquery

Comma-separated list of pool asset IDs to query

showEmptybooleanquery

When true, include assets with zero balance (default: false)

Response

200OK

Pool asset balances

400Bad Request

Invalid parameters

500Internal Server Error

Internal server error

503Service Unavailable

Service unavailable

Account proxy info

GET
https://ksmassethub-playbook.nownodes.io/v1/accounts/{accountId}/proxy-info

Authorizations

ApiKeyAuthApiKeyAuth

api-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

accountIdstringrequiredpath

SS58-encoded account address

atstringquery

Block hash or number to query at

useRcBlockbooleanquery

Treat 'at' as relay chain block identifier

Response

200OK

Proxy information

400Bad Request

Invalid parameters

500Internal Server Error

Internal server error

503Service Unavailable

Service unavailable

Account staking info

GET
https://ksmassethub-playbook.nownodes.io/v1/accounts/{accountId}/staking-info

Authorizations

ApiKeyAuthApiKeyAuth

api-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

accountIdstringrequiredpath

SS58-encoded stash account address

atstringquery

Block hash or number to query at

useRcBlockbooleanquery

Treat 'at' as relay chain block identifier

includeClaimedRewardsbooleanquery

When true, include claimed rewards in the response

Response

200OK

Staking information

400Bad Request

Invalid parameters

500Internal Server Error

Internal server error

503Service Unavailable

Service unavailable

Account staking payouts

GET
https://ksmassethub-playbook.nownodes.io/v1/accounts/{accountId}/staking-payouts

Authorizations

ApiKeyAuthApiKeyAuth

api-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

accountIdstringrequiredpath

SS58-encoded stash account address

atstringquery

Block hash or number to query at

depthstringquery

Number of eras to query (default: 1)

erastringquery

The era to query at (default: active_era - 1)

unclaimedOnlybooleanquery

Only show unclaimed rewards (default: true)

useRcBlockbooleanquery

Treat 'at' as relay chain block identifier

Response

200OK

Staking payout information

400Bad Request

Invalid parameters

500Internal Server Error

Internal server error

503Service Unavailable

Service unavailable

Account vesting info

GET
https://ksmassethub-playbook.nownodes.io/v1/accounts/{accountId}/vesting-info

Authorizations

ApiKeyAuthApiKeyAuth

api-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

accountIdstringrequiredpath

SS58-encoded account address

atstringquery

Block hash or number to query at

useRcBlockbooleanquery

Treat 'at' as relay chain block identifier

includeClaimablebooleanquery

When true, calculate vested amounts

Response

200OK

Vesting information

400Bad Request

Invalid parameters

500Internal Server Error

Internal server error

503Service Unavailable

Service unavailable

blocks

Get blocks by range

GET
https://ksmassethub-playbook.nownodes.io/v1/blocks

Authorizations

ApiKeyAuthApiKeyAuth

api-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

rangestringquery

Block range in format 'start-end' (e.g. '100-200')

eventDocsbooleanquery

Include documentation for events

extrinsicDocsbooleanquery

Include documentation for extrinsics

noFeesbooleanquery

Skip fee calculation for extrinsics

useRcBlockbooleanquery

Treat range as Relay Chain blocks

useEvmFormatbooleanquery

Convert AccountId32 addresses to EVM format for revive pallet events

Response

200OK

Array of block information

400Bad Request

Invalid range parameter

500Internal Server Error

Internal server error

503Service Unavailable

Service unavailable

Get latest block

GET
https://ksmassethub-playbook.nownodes.io/v1/blocks/head

Authorizations

ApiKeyAuthApiKeyAuth

api-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

finalizedbooleanquery

When true (default), returns finalized head. When false, returns canonical head.

eventDocsbooleanquery

Include documentation for events

extrinsicDocsbooleanquery

Include documentation for extrinsics

noFeesbooleanquery

Skip fee calculation for extrinsics

decodedXcmMsgsbooleanquery

Decode and include XCM messages

paraIdinteger<int32>>= 0query

Filter XCM messages by parachain ID

useRcBlockbooleanquery

When true, use relay chain head to find corresponding Asset Hub blocks

useEvmFormatbooleanquery

Convert AccountId32 addresses to EVM format for revive pallet events

Response

200OK

Latest block information

500Internal Server Error

Internal server error

503Service Unavailable

Service unavailable

Get block by ID

GET
https://ksmassethub-playbook.nownodes.io/v1/blocks/{blockId}

Authorizations

ApiKeyAuthApiKeyAuth

api-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

blockIdstringrequiredpath

Block height number or block hash

eventDocsbooleanquery

Include documentation for events

extrinsicDocsbooleanquery

Include documentation for extrinsics

noFeesbooleanquery

Skip fee calculation for extrinsics

finalizedKeybooleanquery

When true (default), include finalized status in response

decodedXcmMsgsbooleanquery

Decode and include XCM messages

paraIdinteger<int32>>= 0query

Filter XCM messages by parachain ID

useRcBlockbooleanquery

Treat blockId as Relay Chain block and return Asset Hub blocks

useEvmFormatbooleanquery

Convert AccountId32 addresses to EVM format for revive pallet events

Response

200OK

Block information

400Bad Request

Invalid block identifier

500Internal Server Error

Internal server error

503Service Unavailable

Service unavailable

Get extrinsic by index

GET
https://ksmassethub-playbook.nownodes.io/v1/blocks/{blockId}/extrinsics/{extrinsicIndex}

Authorizations

ApiKeyAuthApiKeyAuth

api-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

blockIdstringrequiredpath

Block height number or block hash

extrinsicIndexstringrequiredpath

Index of the extrinsic within the block

eventDocsbooleanquery

Include documentation for events

extrinsicDocsbooleanquery

Include documentation for extrinsics

noFeesbooleanquery

Skip fee calculation

useRcBlockbooleanquery

When true, treat blockId as Relay Chain block and return Asset Hub extrinsics

useEvmFormatbooleanquery

Convert AccountId32 addresses to EVM format for revive pallet events

Response

200OK

Extrinsic details

400Bad Request

Invalid block identifier or extrinsic index

500Internal Server Error

Internal server error

503Service Unavailable

Service unavailable

pallets

Pallet dispatchables

GET
https://ksmassethub-playbook.nownodes.io/v1/pallets/{palletId}/dispatchables

Authorizations

ApiKeyAuthApiKeyAuth

api-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

palletIdstringrequiredpath

Name or index of the pallet

atstringquery

Block hash or number to query at

onlyIdsbooleanquery

Only return dispatchable names

useRcBlockbooleanquery

Treat 'at' as relay chain block identifier

Response

200OK

Pallet dispatchables

400Bad Request

Invalid pallet

500Internal Server Error

Internal server error

503Service Unavailable

Service unavailable

Pallet dispatchable details

GET
https://ksmassethub-playbook.nownodes.io/v1/pallets/{palletId}/dispatchables/{dispatchableId}

Authorizations

ApiKeyAuthApiKeyAuth

api-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

palletIdstringrequiredpath

Name or index of the pallet

dispatchableIdstringrequiredpath

Name of the dispatchable

atstringquery

Block hash or number to query at

metadatabooleanquery

Include metadata

useRcBlockbooleanquery

Treat 'at' as relay chain block identifier

Response

200OK

Dispatchable details

404Not Found

Dispatchable not found

500Internal Server Error

Internal server error

503Service Unavailable

Service unavailable

rc

RC get balance info

GET
https://ksmassethub-playbook.nownodes.io/v1/rc/accounts/{accountId}/balance-info

Authorizations

ApiKeyAuthApiKeyAuth

api-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

accountIdstringrequiredpath

SS58-encoded account address

atstringquery

Block identifier (number or hash)

tokenstringquery

Token symbol (defaults to native token)

denominatedbooleanquery

Denominate balances using chain decimals

Response

200OK

Balance information

400Bad Request

Invalid account address

500Internal Server Error

Internal server error

503Service Unavailable

Relay chain not configured

RC get proxy info

GET
https://ksmassethub-playbook.nownodes.io/v1/rc/accounts/{accountId}/proxy-info

Authorizations

ApiKeyAuthApiKeyAuth

api-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

accountIdstringrequiredpath

SS58-encoded account address

atstringquery

Block identifier (number or hash)

Response

200OK

Proxy information

400Bad Request

Invalid account address

500Internal Server Error

Internal server error

503Service Unavailable

Relay chain not configured

RC get staking info

GET
https://ksmassethub-playbook.nownodes.io/v1/rc/accounts/{accountId}/staking-info

Authorizations

ApiKeyAuthApiKeyAuth

api-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

accountIdstringrequiredpath

SS58-encoded stash account address

atstringquery

Block identifier (number or hash)

includeClaimedRewardsbooleanquery

When true, include claimed rewards in the response

Response

200OK

Staking information

400Bad Request

Invalid account address

500Internal Server Error

Internal server error

503Service Unavailable

Relay chain not configured

RC get staking payouts

GET
https://ksmassethub-playbook.nownodes.io/v1/rc/accounts/{accountId}/staking-payouts

Authorizations

ApiKeyAuthApiKeyAuth

api-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

accountIdstringrequiredpath

SS58-encoded account address

atstringquery

Block identifier (number or hash)

depthinteger<int32>>= 0query

Number of eras to query (default: 1)

erainteger<int32>>= 0query

The era to query at (default: active_era - 1)

unclaimedOnlybooleanquery

Only show unclaimed rewards (default: true)

Response

200OK

Staking payouts

400Bad Request

Invalid account address

500Internal Server Error

Internal server error

503Service Unavailable

Relay chain not configured

RC get vesting info

GET
https://ksmassethub-playbook.nownodes.io/v1/rc/accounts/{accountId}/vesting-info

Authorizations

ApiKeyAuthApiKeyAuth

api-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

accountIdstringrequiredpath

SS58-encoded account address

atstringquery

Block identifier (number or hash)

Response

200OK

Vesting information

400Bad Request

Invalid account address

500Internal Server Error

Internal server error

503Service Unavailable

Relay chain not configured

RC get blocks by range

GET
https://ksmassethub-playbook.nownodes.io/v1/rc/blocks

Authorizations

ApiKeyAuthApiKeyAuth

api-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

rangestringquery

Block range (e.g., '100-200')

eventDocsbooleanquery

Include event documentation

extrinsicDocsbooleanquery

Include extrinsic documentation

noFeesbooleanquery

Skip fee calculation

decodedXcmMsgsbooleanquery

Decode and include XCM messages

paraIdinteger<int32>>= 0query

Filter XCM messages by parachain ID

Response

200OK

Relay chain blocks

400Bad Request

Invalid range or missing parameter

500Internal Server Error

Internal server error

503Service Unavailable

Relay chain not configured

RC get head block

GET
https://ksmassethub-playbook.nownodes.io/v1/rc/blocks/head

Authorizations

ApiKeyAuthApiKeyAuth

api-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

finalizedbooleanquery

When true returns finalized head (default: true)

eventDocsbooleanquery

Include event documentation

extrinsicDocsbooleanquery

Include extrinsic documentation

noFeesbooleanquery

Skip fee calculation

decodedXcmMsgsbooleanquery

Decode and include XCM messages

paraIdinteger<int32>>= 0query

Filter XCM messages by parachain ID

Response

200OK

Relay chain head block

500Internal Server Error

Internal server error

503Service Unavailable

Relay chain not configured

RC get block by ID

GET
https://ksmassethub-playbook.nownodes.io/v1/rc/blocks/{blockId}

Authorizations

ApiKeyAuthApiKeyAuth

api-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

blockIdstringrequiredpath

Block height number or block hash

eventDocsbooleanquery

Include event documentation

extrinsicDocsbooleanquery

Include extrinsic documentation

noFeesbooleanquery

Skip fee calculation

decodedXcmMsgsbooleanquery

Include decoded XCM messages

paraIdinteger<int32>>= 0query

Filter XCM messages by parachain ID

Response

200OK

Relay chain block information

400Bad Request

Invalid block identifier

500Internal Server Error

Internal server error

503Service Unavailable

Relay chain not configured

RC get extrinsic by index

GET
https://ksmassethub-playbook.nownodes.io/v1/rc/blocks/{blockId}/extrinsics/{extrinsicIndex}

Authorizations

ApiKeyAuthApiKeyAuth

api-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

blockIdstringrequiredpath

Block height number or block hash

extrinsicIndexstringrequiredpath

Index of the extrinsic in the block

eventDocsbooleanquery

Include event documentation

extrinsicDocsbooleanquery

Include extrinsic documentation

noFeesbooleanquery

Skip fee calculation

Response

200OK

Extrinsic details

400Bad Request

Invalid block ID or extrinsic index

500Internal Server Error

Internal server error

503Service Unavailable

Relay chain not configured

RC dry run transaction

POST
https://ksmassethub-playbook.nownodes.io/v1/rc/transaction/dry-run

Authorizations

ApiKeyAuthApiKeyAuth

api-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

application/json

Transaction with 'tx', 'senderAddress', and optional 'at' and 'xcmVersion' fields

object

Response

200OK

Dry run result

400Bad Request

Invalid transaction

500Internal Server Error

Internal server error

503Service Unavailable

Service unavailable

RC metadata blob

POST
https://ksmassethub-playbook.nownodes.io/v1/rc/transaction/metadata-blob

Authorizations

ApiKeyAuthApiKeyAuth

api-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

application/json

Request with 'tx' field and optional 'at' block

object

Response

200OK

Metadata blob

500Internal Server Error

Internal server error

503Service Unavailable

Service unavailable

Parse transaction (relay chain)

POST
https://ksmassethub-playbook.nownodes.io/v1/rc/transaction/parse

Authorizations

ApiKeyAuthApiKeyAuth

api-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

application/json

Transaction with 'tx' field containing hex-encoded extrinsic

Request body for transaction parsing.

txstring

Hex-encoded extrinsic with optional 0x prefix.

Response

200OK

Parsed transaction

400Bad Request

Invalid transaction or relay chain not configured

500Internal Server Error

Internal server error

503Service Unavailable

Relay chain unavailable

transaction

Dry run transaction

POST
https://ksmassethub-playbook.nownodes.io/v1/transaction/dry-run

Authorizations

ApiKeyAuthApiKeyAuth

api-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

application/json

Transaction with 'tx', 'senderAddress', and optional 'at' and 'xcmVersion' fields

object

Response

200OK

Dry run result

400Bad Request

Invalid transaction

500Internal Server Error

Internal server error

503Service Unavailable

Service unavailable

Generate metadata blob

POST
https://ksmassethub-playbook.nownodes.io/v1/transaction/metadata-blob

Authorizations

ApiKeyAuthApiKeyAuth

api-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

application/json

Request with 'tx' field and optional 'at' block

object

Response

200OK

Metadata blob

400Bad Request

Invalid parameters

500Internal Server Error

Internal server error

503Service Unavailable

Service unavailable

Parse transaction

POST
https://ksmassethub-playbook.nownodes.io/v1/transaction/parse

Authorizations

ApiKeyAuthApiKeyAuth

api-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

application/json

Transaction with 'tx' field containing hex-encoded extrinsic

Request body for transaction parsing.

txstring

Hex-encoded extrinsic with optional 0x prefix.

Response

200OK

Parsed transaction

400Bad Request

Invalid transaction

500Internal Server Error

Internal server error