Home

Rosetta

v1.0.0
Base URL
https://ada.nownodes.ioNOWNodes Cardano rosetta endpoint.

Build Once. Integrate Your Blockchain Everywhere.

Authentication

api-keyAuthapiKey

NOWNodes API key passed in the api-key header.

API Key: api-key in header

Rosetta

Network

Network operations.

Get List of Available Networks

POST
https://ada.nownodes.io/network/list

Authorizations

ApiKeyAuthApiKeyAuth

api-key string

NOWNodes API key passed in the api-key header.

This endpoint returns a list of NetworkIdentifiers that the Rosetta server supports.

Body

application/json

Request value.

metadataobject

Additional metadata object.

Response

200OK

HTTP 200 response for networkList.

400Bad Request

Bad Request. The request is malformed or contains invalid parameters.

401Unauthorized

Unauthorized: API key is present but rejected by the NOWNodes gateway.

422Unprocessable Entity

Missing API key. The NOWNodes gateway returns plain text for this error.

500Internal Server Error

Internal Server Error. The gateway or backend failed while processing the request.

Get Network Status

POST
https://ada.nownodes.io/network/status

Authorizations

ApiKeyAuthApiKeyAuth

api-key string

NOWNodes API key passed in the api-key header.

This endpoint returns the current status of the network requested. Any NetworkIdentifier returned by /network/list should be accessible here.

Body

application/json

Request value.

network_identifierNetworkIdentifierrequired

Rosetta network identifier object.

Show child attributes
blockchainstringrequired

Blockchain value.

networkstringrequired

If a blockchain has a specific chain-id or network identifier, it should go in this field. It is up to the client to determine which network-specific identifier is mainnet, preprod, or preview.

sub_network_identifierSubNetworkIdentifier

Sub Network Identifier value.

Show child attributes
networkstringrequired

Network value.

metadataobject

Additional metadata object.

metadataobject

Additional metadata object.

Response

200OK

HTTP 200 response for networkStatus.

400Bad Request

Bad Request. The request is malformed or contains invalid parameters.

401Unauthorized

Unauthorized: API key is present but rejected by the NOWNodes gateway.

422Unprocessable Entity

Missing API key. The NOWNodes gateway returns plain text for this error.

500Internal Server Error

Internal Server Error. The gateway or backend failed while processing the request.

Get Network Options

POST
https://ada.nownodes.io/network/options

Authorizations

ApiKeyAuthApiKeyAuth

api-key string

NOWNodes API key passed in the api-key header.

This endpoint returns the version information and allowed network-specific types for a NetworkIdentifier. Any NetworkIdentifier returned by /network/list should be accessible here. Because options are retrievable in the context of a NetworkIdentifier, it is possible to define unique options for each network.

Body

application/json

Request value.

network_identifierobjectrequired

Rosetta network identifier.

Show child attributes
blockchainstringrequired

Blockchain name, always "cardano".

networkstringrequired

Network name matching the node configuration (mainnet, preprod, preview).

Response

200OK

HTTP 200 response for networkOptions.

400Bad Request

Bad Request. The request is malformed or contains invalid parameters.

401Unauthorized

Unauthorized: API key is present but rejected by the NOWNodes gateway.

422Unprocessable Entity

Missing API key. The NOWNodes gateway returns plain text for this error.

500Internal Server Error

Internal Server Error. The gateway or backend failed while processing the request.

Block

Block operations.

Get a Block

POST
https://ada.nownodes.io/block

Authorizations

ApiKeyAuthApiKeyAuth

api-key string

NOWNodes API key passed in the api-key header.

Get a block by its Block Identifier. If transactions are returned in the same call to the node as fetching the block, the response should include these transactions in the Block object. If not, an array of Transaction Identifiers should be returned so /block/transaction fetches can be done to get all transaction information. When requesting a block by the hash component of the BlockIdentifier, this request MUST be idempotent: repeated invocations for the same hash-identified block must return the exact same block contents. No such restriction is imposed when requesting a block by height, given that a chain reorg event might cause the specific block at height n to be set to a different one.

Body

application/json

Request value.

network_identifierNetworkIdentifierrequired

Rosetta network identifier object.

Show child attributes
blockchainstringrequired

Blockchain value.

networkstringrequired

If a blockchain has a specific chain-id or network identifier, it should go in this field. It is up to the client to determine which network-specific identifier is mainnet, preprod, or preview.

sub_network_identifierSubNetworkIdentifier

Sub Network Identifier value.

Show child attributes
networkstringrequired

Network value.

metadataobject

Additional metadata object.

block_identifierPartialBlockIdentifierrequired

Rosetta block identifier object.

Show child attributes
indexinteger<int64>

Cardano block height or Rosetta index.

hashstring

Cardano transaction hash.

Response

200OK

HTTP 200 response for block.

400Bad Request

Bad Request. The request is malformed or contains invalid parameters.

401Unauthorized

Unauthorized: API key is present but rejected by the NOWNodes gateway.

422Unprocessable Entity

Missing API key. The NOWNodes gateway returns plain text for this error.

500Internal Server Error

Internal Server Error. The gateway or backend failed while processing the request.

Get a Block Transaction

POST
https://ada.nownodes.io/block/transaction

Authorizations

ApiKeyAuthApiKeyAuth

api-key string

NOWNodes API key passed in the api-key header.

Get a transaction in a block by its Transaction Identifier. This endpoint should only be used when querying a node for a block does not return all transactions contained within it. All transactions returned by this endpoint must be appended to any transactions returned by the /block method by consumers of this data. Fetching a transaction by hash is considered an Explorer Method (which is classified under the Future Work section). This method can be used to let consumers to paginate results when the block trasactions count is too big to be returned in a single BlockResponse. Calling this endpoint requires reference to a BlockIdentifier because transaction parsing can change depending on which block contains the transaction. For example, in Bitcoin it is necessary to know which block contains a transaction to determine the destination of fee payments. Without specifying a block identifier, the node would have to infer which block to use (which could change during a re-org). Implementations that require fetching previous transactions to populate the response (ex: Previous UTXOs in Bitcoin) may find it useful to run a cache within the Rosetta server in the /data directory (on a path that does not conflict with the node).

Body

application/json

Request value.

network_identifierNetworkIdentifierrequired

Rosetta network identifier object.

Show child attributes
blockchainstringrequired

Blockchain value.

networkstringrequired

If a blockchain has a specific chain-id or network identifier, it should go in this field. It is up to the client to determine which network-specific identifier is mainnet, preprod, or preview.

sub_network_identifierSubNetworkIdentifier

Sub Network Identifier value.

Show child attributes
networkstringrequired

Network value.

metadataobject

Additional metadata object.

block_identifierBlockIdentifierrequired

Rosetta block identifier object.

Show child attributes
indexinteger<int64>required

This is also known as the block height.

hashstringrequired

Cardano transaction hash.

transaction_identifierTransactionIdentifierrequired

Rosetta transaction identifier object.

Show child attributes
hashstringrequired

Any transactions that are attributable only to a block (ex: a block event) should use the hash of the block as the identifier.

Response

200OK

HTTP 200 response for blockTransaction.

400Bad Request

Bad Request. The request is malformed or contains invalid parameters.

401Unauthorized

Unauthorized: API key is present but rejected by the NOWNodes gateway.

422Unprocessable Entity

Missing API key. The NOWNodes gateway returns plain text for this error.

500Internal Server Error

Internal Server Error. The gateway or backend failed while processing the request.

Mempool

Mempool operations.

Get All Mempool Transactions

POST
https://ada.nownodes.io/mempool

Authorizations

ApiKeyAuthApiKeyAuth

api-key string

NOWNodes API key passed in the api-key header.

Get all Transaction Identifiers in the mempool

Body

application/json

Request value.

network_identifierNetworkIdentifierrequired

Rosetta network identifier object.

Show child attributes
blockchainstringrequired

Blockchain value.

networkstringrequired

If a blockchain has a specific chain-id or network identifier, it should go in this field. It is up to the client to determine which network-specific identifier is mainnet, preprod, or preview.

sub_network_identifierSubNetworkIdentifier

Sub Network Identifier value.

Show child attributes
networkstringrequired

Network value.

metadataobject

Additional metadata object.

metadataobject

Additional metadata object.

Response

200OK

HTTP 200 response for mempool.

400Bad Request

Bad Request. The request is malformed or contains invalid parameters.

401Unauthorized

Unauthorized: API key is present but rejected by the NOWNodes gateway.

422Unprocessable Entity

Missing API key. The NOWNodes gateway returns plain text for this error.

500Internal Server Error

Internal Server Error. The gateway or backend failed while processing the request.

Get a Mempool Transaction

POST
https://ada.nownodes.io/mempool/transaction

Authorizations

ApiKeyAuthApiKeyAuth

api-key string

NOWNodes API key passed in the api-key header.

Get a transaction in the mempool by its Transaction Identifier. This is a separate request than fetching a block transaction (/block/transaction) because some blockchain nodes need to know that a transaction query is for something in the mempool instead of a transaction in a block. Transactions may not be fully parsable until they are in a block (ex: may not be possible to determine the fee to pay before a transaction is executed). On this endpoint, it is ok that returned transactions are only estimates of what may actually be included in a block.

Body

application/json

Request value.

network_identifierNetworkIdentifierrequired

Rosetta network identifier object.

Show child attributes
blockchainstringrequired

Blockchain value.

networkstringrequired

If a blockchain has a specific chain-id or network identifier, it should go in this field. It is up to the client to determine which network-specific identifier is mainnet, preprod, or preview.

sub_network_identifierSubNetworkIdentifier

Sub Network Identifier value.

Show child attributes
networkstringrequired

Network value.

metadataobject

Additional metadata object.

transaction_identifierTransactionIdentifierrequired

Rosetta transaction identifier object.

Show child attributes
hashstringrequired

Any transactions that are attributable only to a block (ex: a block event) should use the hash of the block as the identifier.

Response

200OK

HTTP 200 response for mempoolTransaction.

400Bad Request

Bad Request. The request is malformed or contains invalid parameters.

401Unauthorized

Unauthorized: API key is present but rejected by the NOWNodes gateway.

422Unprocessable Entity

Missing API key. The NOWNodes gateway returns plain text for this error.

500Internal Server Error

Internal Server Error. The gateway or backend failed while processing the request.

Account

Account operations.

Get an Account's Balance

POST
https://ada.nownodes.io/account/balance

Authorizations

ApiKeyAuthApiKeyAuth

api-key string

NOWNodes API key passed in the api-key header.

Get an array of all AccountBalances for an AccountIdentifier and the BlockIdentifier at which the balance lookup was performed. The BlockIdentifier must always be returned because some consumers of account balance data need to know specifically at which block the balance was calculated to compare balances they compute from operations with the balance returned by the node. It is important to note that making a balance request for an account without populating the SubAccountIdentifier should not result in the balance of all possible SubAccountIdentifiers being returned. Rather, it should result in the balance pertaining to no SubAccountIdentifiers being returned (sometimes called the liquid balance). To get all balances associated with an account, it may be necessary to perform multiple balance requests with unique AccountIdentifiers. It is also possible to perform a historical balance lookup (if the server supports it) by passing in an optional BlockIdentifier.

Body

application/json

Request value.

network_identifierNetworkIdentifierrequired

Rosetta network identifier object.

Show child attributes
blockchainstringrequired

Blockchain value.

networkstringrequired

If a blockchain has a specific chain-id or network identifier, it should go in this field. It is up to the client to determine which network-specific identifier is mainnet, preprod, or preview.

sub_network_identifierSubNetworkIdentifier

Sub Network Identifier value.

Show child attributes
networkstringrequired

Network value.

metadataobject

Additional metadata object.

account_identifierAccountIdentifierrequired

Rosetta account identifier object.

Show child attributes
addressstringrequired

The address may be a cryptographic public key (or some encoding of it) or a provided username.

sub_accountSubAccountIdentifier

Sub Account value.

Show child attributes
addressstringrequired

The SubAccount address may be a cryptographic value or some other identifier (ex: bonded) that uniquely specifies a SubAccount.

metadataobject

If the SubAccount address is not sufficient to uniquely specify a SubAccount, any other identifying information can be stored here. It is important to note that two SubAccounts with identical addresses but differing metadata will not be considered equal by clients.

metadataobject

Blockchains that utilize a username model (where the address is not a derivative of a cryptographic public key) should specify the public key(s) owned by the address in metadata.

Show child attributes
chain_codestring

Hex string encoded extension of bip32 private and public keys with an extra 256 bits of entropy that consists of 32 bytes

block_identifierPartialBlockIdentifier

Rosetta block identifier object.

Show child attributes
indexinteger<int64>

Cardano block height or Rosetta index.

hashstring

Cardano transaction hash.

currenciesArray<Currency>

In some cases, the caller may not want to retrieve all available balances for an AccountIdentifier. If the currencies field is populated, only balances for the specified currencies will be returned. If not populated, all available balances will be returned.

Show child attributes
symbolstringrequired

Canonical symbol associated with a currency.

decimalsinteger<int32>>= 0required

Number of decimal places in the standard unit representation of the amount. For example, BTC has 8 decimals. Note that it is not possible to represent the value of some currency in atomic units that is not base 10.

metadataany

Additional metadata object.

Response

200OK

HTTP 200 response for accountBalance.

400Bad Request

Bad Request. The request is malformed or contains invalid parameters.

401Unauthorized

Unauthorized: API key is present but rejected by the NOWNodes gateway.

422Unprocessable Entity

Missing API key. The NOWNodes gateway returns plain text for this error.

500Internal Server Error

Internal Server Error. The gateway or backend failed while processing the request.

Get an Account's Unspent Coins

POST
https://ada.nownodes.io/account/coins

Authorizations

ApiKeyAuthApiKeyAuth

api-key string

NOWNodes API key passed in the api-key header.

Get an array of all unspent coins for an AccountIdentifier and the BlockIdentifier at which the lookup was performed. If your implementation does not support coins (i.e. it is for an account-based blockchain), you do not need to implement this endpoint. If you implementation does support coins (i.e. it is fro a UTXO-based blockchain), you MUST also complete the /account/balance endpoint. It is important to note that making a coins request for an account without populating the SubAccountIdentifier should not result in the coins of all possible SubAccountIdentifiers being returned. Rather, it should result in the coins pertaining to no SubAccountIdentifiers being returned. To get all coins associated with an account, it may be necessary to perform multiple coin requests with unique AccountIdentifiers. Optionally, an implementation may choose to support updating an AccountIdentifier's unspent coins based on the contents of the mempool. Note, using this functionality breaks any guarantee of idempotency.

Body

application/json

Request value.

network_identifierNetworkIdentifierrequired

Rosetta network identifier object.

Show child attributes
blockchainstringrequired

Blockchain value.

networkstringrequired

If a blockchain has a specific chain-id or network identifier, it should go in this field. It is up to the client to determine which network-specific identifier is mainnet, preprod, or preview.

sub_network_identifierSubNetworkIdentifier

Sub Network Identifier value.

Show child attributes
networkstringrequired

Network value.

metadataobject

Additional metadata object.

account_identifierAccountIdentifierrequired

Rosetta account identifier object.

Show child attributes
addressstringrequired

The address may be a cryptographic public key (or some encoding of it) or a provided username.

sub_accountSubAccountIdentifier

Sub Account value.

Show child attributes
addressstringrequired

The SubAccount address may be a cryptographic value or some other identifier (ex: bonded) that uniquely specifies a SubAccount.

metadataobject

If the SubAccount address is not sufficient to uniquely specify a SubAccount, any other identifying information can be stored here. It is important to note that two SubAccounts with identical addresses but differing metadata will not be considered equal by clients.

metadataobject

Blockchains that utilize a username model (where the address is not a derivative of a cryptographic public key) should specify the public key(s) owned by the address in metadata.

Show child attributes
chain_codestring

Hex string encoded extension of bip32 private and public keys with an extra 256 bits of entropy that consists of 32 bytes

include_mempoolboolean

Include state from the mempool when looking up an account's unspent coins. Note, using this functionality breaks any guarantee of idempotency.

currenciesArray<Currency>

In some cases, the caller may not want to retrieve coins for all currencies for an AccountIdentifier. If the currencies field is populated, only coins for the specified currencies will be returned. If not populated, all unspent coins will be returned.

Show child attributes
symbolstringrequired

Canonical symbol associated with a currency.

decimalsinteger<int32>>= 0required

Number of decimal places in the standard unit representation of the amount. For example, BTC has 8 decimals. Note that it is not possible to represent the value of some currency in atomic units that is not base 10.

metadataany

Additional metadata object.

Response

200OK

HTTP 200 response for accountCoins.

400Bad Request

Bad Request. The request is malformed or contains invalid parameters.

401Unauthorized

Unauthorized: API key is present but rejected by the NOWNodes gateway.

422Unprocessable Entity

Missing API key. The NOWNodes gateway returns plain text for this error.

500Internal Server Error

Internal Server Error. The gateway or backend failed while processing the request.

Construction

Construction operations.

Derive an AccountIdentifier from a PublicKey

POST
https://ada.nownodes.io/construction/derive

Authorizations

ApiKeyAuthApiKeyAuth

api-key string

NOWNodes API key passed in the api-key header.

Derive returns the AccountIdentifier associated with a public key. Blockchains that require an on-chain action to create an account should not implement this method.

Body

application/json

Request value.

network_identifierNetworkIdentifierrequired

Rosetta network identifier object.

Show child attributes
blockchainstringrequired

Blockchain value.

networkstringrequired

If a blockchain has a specific chain-id or network identifier, it should go in this field. It is up to the client to determine which network-specific identifier is mainnet, preprod, or preview.

sub_network_identifierSubNetworkIdentifier

Sub Network Identifier value.

Show child attributes
networkstringrequired

Network value.

metadataobject

Additional metadata object.

public_keyPublicKeyrequired

Public Key value.

Show child attributes
hex_bytesstringrequired

Hex-encoded public key bytes in the format specified by the CurveType.

curve_typeCurveTypesecp256k1secp256r1edwards25519tweedlerequired

Curve Type value.

metadataobject

Additional metadata object.

Show child attributes
staking_credentialPublicKey

Staking Credential value.

Show child attributes
hex_bytesstringrequired

Hex-encoded public key bytes in the format specified by the CurveType.

curve_typeCurveTypesecp256k1secp256r1edwards25519tweedlerequired

Curve Type value.

address_typeAddressType

Cardano address.

Response

200OK

HTTP 200 response for constructionDerive.

400Bad Request

Bad Request. The request is malformed or contains invalid parameters.

401Unauthorized

Unauthorized: API key is present but rejected by the NOWNodes gateway.

422Unprocessable Entity

Missing API key. The NOWNodes gateway returns plain text for this error.

500Internal Server Error

Internal Server Error. The gateway or backend failed while processing the request.

Create a Request to Fetch Metadata

POST
https://ada.nownodes.io/construction/preprocess

Authorizations

ApiKeyAuthApiKeyAuth

api-key string

NOWNodes API key passed in the api-key header.

Preprocess is called prior to /construction/payloads to construct a request for any metadata that is needed for transaction construction given (i.e. account nonce). The options object returned from this endpoint will be sent to the /construction/metadata endpoint UNMODIFIED by the caller (in an offline execution environment). If your Construction API implementation has configuration options, they MUST be specified in the /construction/preprocess request (in the metadata field).

Body

application/json

Request value.

network_identifierobjectrequired

Rosetta network identifier.

Show child attributes
blockchainstringrequired

Blockchain name, always "cardano".

networkstringrequired

Cardano network identifier.

operationsArray<object>required

List of operations to preprocess.

Show child attributes
operation_identifierobjectrequired

Operation Identifier value.

Show child attributes
indexintegerrequired

The index of this operation within the transaction (0-based).

typestringrequired

Type of operation. For DRep delegation use "dRepVoteDelegation".

accountobjectrequired

Account value.

Show child attributes
addressstringrequired

The bech32 or bech32m encoded staking address.

metadataobject

Operation-specific metadata. Required for delegation.

Show child attributes
staking_credentialobjectrequired

Staking Credential value.

Show child attributes
hex_bytesstringrequired

Hex-encoded stake credential (28 bytes).

curve_typestringrequired

Curve type of the staking key.

drepobjectrequired

DRep delegation target. If using a 29-byte CIP-129 ID, omit type; for a raw 28-byte ID, type is required.

Show child attributes
idstringrequired

Hex-encoded DRep ID. 28-byte raw ID or 29-byte prefixed CIP-129 ID (0x22=key, 0x23=script).

typestring

Required only for raw 28-byte IDs. Either "key_hash" or "script_hash".

Response

200OK

HTTP 200 response for constructionPreprocess.

400Bad Request

Bad Request. The request is malformed or contains invalid parameters.

401Unauthorized

Unauthorized: API key is present but rejected by the NOWNodes gateway.

422Unprocessable Entity

Missing API key. The NOWNodes gateway returns plain text for this error.

500Internal Server Error

Internal Server Error. The gateway or backend failed while processing the request.

Get Metadata for Transaction Construction

POST
https://ada.nownodes.io/construction/metadata

Authorizations

ApiKeyAuthApiKeyAuth

api-key string

NOWNodes API key passed in the api-key header.

Get any information required to construct a transaction for a specific network. Metadata returned here could be a recent hash to use, an account sequence number, or even arbitrary chain state. The request used when calling this endpoint is created by calling /construction/preprocess in an offline environment. You should NEVER assume that the request sent to this endpoint will be created by the caller or populated with any custom parameters. This must occur in /construction/preprocess. It is important to clarify that this endpoint should not pre-construct any transactions for the client (this should happen in /construction/payloads). This endpoint is left purposely unstructured because of the wide scope of metadata that could be required.

Body

application/json

Request value.

network_identifierNetworkIdentifierrequired

Rosetta network identifier object.

Show child attributes
blockchainstringrequired

Blockchain value.

networkstringrequired

If a blockchain has a specific chain-id or network identifier, it should go in this field. It is up to the client to determine which network-specific identifier is mainnet, preprod, or preview.

sub_network_identifierSubNetworkIdentifier

Sub Network Identifier value.

Show child attributes
networkstringrequired

Network value.

metadataobject

Additional metadata object.

optionsobjectrequired

Some blockchains require different metadata for different types of transaction construction (ex: delegation versus a transfer). Instead of requiring a blockchain node to return all possible types of metadata for construction (which may require multiple node fetches), the client can populate an options object to limit the metadata returned to only the subset required.

Show child attributes
relative_ttlnumberrequired

Relative Ttl value.

transaction_sizenumberrequired

Transaction Size value.

public_keysArray<PublicKey>

Public Keys value.

Show child attributes
hex_bytesstringrequired

Hex-encoded public key bytes in the format specified by the CurveType.

curve_typeCurveTypesecp256k1secp256r1edwards25519tweedlerequired

Curve Type value.

Response

200OK

HTTP 200 response for constructionMetadata.

400Bad Request

Bad Request. The request is malformed or contains invalid parameters.

401Unauthorized

Unauthorized: API key is present but rejected by the NOWNodes gateway.

422Unprocessable Entity

Missing API key. The NOWNodes gateway returns plain text for this error.

500Internal Server Error

Internal Server Error. The gateway or backend failed while processing the request.

Generate an Unsigned Transaction and Signing Payloads

POST
https://ada.nownodes.io/construction/payloads

Authorizations

ApiKeyAuthApiKeyAuth

api-key string

NOWNodes API key passed in the api-key header.

Payloads is called with an array of operations and the response from /construction/metadata. It returns an unsigned transaction blob and a collection of payloads that must be signed by particular AccountIdentifiers using a certain SignatureType. The array of operations provided in transaction construction often times can not specify all "effects" of a transaction (consider invoked transactions in Ethereum). However, they can deterministically specify the "intent" of the transaction, which is sufficient for construction. For this reason, parsing the corresponding transaction in the Data API (when it lands on chain) will contain a superset of whatever operations were provided during construction.

Body

application/json

Request value.

network_identifierNetworkIdentifierrequired

Rosetta network identifier object.

Show child attributes
blockchainstringrequired

Blockchain value.

networkstringrequired

If a blockchain has a specific chain-id or network identifier, it should go in this field. It is up to the client to determine which network-specific identifier is mainnet, preprod, or preview.

sub_network_identifierSubNetworkIdentifier

Sub Network Identifier value.

Show child attributes
networkstringrequired

Network value.

metadataobject

Additional metadata object.

operationsArray<Operation>required

Operations value.

Show child attributes
operation_identifierOperationIdentifierrequired

Operation Identifier value.

Show child attributes
indexinteger<int64>>= 0required

The operation index is used to ensure each operation has a unique identifier within a transaction. This index is only relative to the transaction and NOT GLOBAL. The operations in each transaction should start from index 0. To clarify, there may not be any notion of an operation index in the blockchain being described.

network_indexinteger<int64>>= 0

Some blockchains specify an operation index that is essential for client use. For example, Bitcoin uses a network_index to identify which UTXO was used in a transaction. network_index should not be populated if there is no notion of an operation index in a blockchain (typically most account-based blockchains).

related_operationsArray<OperationIdentifier>

Restrict referenced related_operations to identifier indices < the current operation_identifier.index. This ensures there exists a clear DAG-structure of relations. Since operations are one-sided, one could imagine relating operations in a single transfer or linking operations in a call tree.

Show child attributes
indexinteger<int64>>= 0required

The operation index is used to ensure each operation has a unique identifier within a transaction. This index is only relative to the transaction and NOT GLOBAL. The operations in each transaction should start from index 0. To clarify, there may not be any notion of an operation index in the blockchain being described.

network_indexinteger<int64>>= 0

Some blockchains specify an operation index that is essential for client use. For example, Bitcoin uses a network_index to identify which UTXO was used in a transaction. network_index should not be populated if there is no notion of an operation index in a blockchain (typically most account-based blockchains).

typestringrequired

Type is the network-specific type of the operation. Ensure that any type that can be returned here is also specified in the NetworkOptionsResponse. This can be very useful to downstream consumers that parse all block data.

statusstring

Status is the network-specific status of the operation. Status is not defined on the transaction object because blockchains with smart contracts may have transactions that partially apply (some operations are successful and some are not). Blockchains with atomic transactions (all operations succeed or all operations fail) will have the same status for each operation. On-chain operations (operations retrieved in the /block and /block/transaction endpoints) MUST have a populated status field (anything on-chain must have succeeded or failed). However, operations provided during transaction construction (often times called "intent" in the documentation) MUST NOT have a populated status field (operations yet to be included on-chain have not yet succeeded or failed).

accountAccountIdentifier

Rosetta account identifier object.

Show child attributes
addressstringrequired

The address may be a cryptographic public key (or some encoding of it) or a provided username.

sub_accountSubAccountIdentifier

Sub Account value.

Show child attributes
addressstringrequired

The SubAccount address may be a cryptographic value or some other identifier (ex: bonded) that uniquely specifies a SubAccount.

metadataobject

If the SubAccount address is not sufficient to uniquely specify a SubAccount, any other identifying information can be stored here. It is important to note that two SubAccounts with identical addresses but differing metadata will not be considered equal by clients.

metadataobject

Blockchains that utilize a username model (where the address is not a derivative of a cryptographic public key) should specify the public key(s) owned by the address in metadata.

Show child attributes
chain_codestring

Hex string encoded extension of bip32 private and public keys with an extra 256 bits of entropy that consists of 32 bytes

amountAmount

Amount value.

Show child attributes
valuestringrequired

Value of the transaction in atomic units represented as an arbitrary-sized signed integer. For example, 1 BTC would be represented by a value of 100000000.

currencyCurrencyrequired

Rosetta currency object.

Show child attributes
symbolstringrequired

Canonical symbol associated with a currency.

decimalsinteger<int32>>= 0required

Number of decimal places in the standard unit representation of the amount. For example, BTC has 8 decimals. Note that it is not possible to represent the value of some currency in atomic units that is not base 10.

metadataany

Additional metadata object.

metadataobject

Additional metadata object.

coin_changeCoinChange

Coin Change value.

Show child attributes
coin_identifierCoinIdentifierrequired

Rosetta coin identifier object.

Show child attributes
identifierstringrequired

Identifier should be populated with a globally unique identifier of a Coin. In Bitcoin, this identifier would be transaction_hash:index.

coin_actionCoinActioncoin_createdcoin_spentrequired

Coin Action value.

metadataOperationMetadata

Additional metadata object.

Show child attributes
withdrawalAmountAmount

If it's a withdrawal operation, the amount will re returned here.

Show child attributes
valuestringrequired

Value of the transaction in atomic units represented as an arbitrary-sized signed integer. For example, 1 BTC would be represented by a value of 100000000.

currencyCurrencyrequired

Rosetta currency object.

Show child attributes
symbolstringrequired

Canonical symbol associated with a currency.

decimalsinteger<int32>>= 0required

Number of decimal places in the standard unit representation of the amount. For example, BTC has 8 decimals. Note that it is not possible to represent the value of some currency in atomic units that is not base 10.

metadataany

Additional metadata object.

metadataobject

Additional metadata object.

depositAmountAmount

If it's a registration operation, the amount will re returned here.

Show child attributes
valuestringrequired

Value of the transaction in atomic units represented as an arbitrary-sized signed integer. For example, 1 BTC would be represented by a value of 100000000.

currencyCurrencyrequired

Rosetta currency object.

Show child attributes
symbolstringrequired

Canonical symbol associated with a currency.

decimalsinteger<int32>>= 0required

Number of decimal places in the standard unit representation of the amount. For example, BTC has 8 decimals. Note that it is not possible to represent the value of some currency in atomic units that is not base 10.

metadataany

Additional metadata object.

metadataobject

Additional metadata object.

refundAmountAmount

If it's a deregistration operation, the amount will re returned here.

Show child attributes
valuestringrequired

Value of the transaction in atomic units represented as an arbitrary-sized signed integer. For example, 1 BTC would be represented by a value of 100000000.

currencyCurrencyrequired

Rosetta currency object.

Show child attributes
symbolstringrequired

Canonical symbol associated with a currency.

decimalsinteger<int32>>= 0required

Number of decimal places in the standard unit representation of the amount. For example, BTC has 8 decimals. Note that it is not possible to represent the value of some currency in atomic units that is not base 10.

metadataany

Additional metadata object.

metadataobject

Additional metadata object.

staking_credentialPublicKey

Staking Credential value.

Show child attributes
hex_bytesstringrequired

Hex-encoded public key bytes in the format specified by the CurveType.

curve_typeCurveTypesecp256k1secp256r1edwards25519tweedlerequired

Curve Type value.

pool_key_hashstring

Cardano transaction hash.

epochnumber

Cardano epoch number.

tokenBundleArray<TokenBundleItem>

A token bundle is a heterogeneous (‘mixed’) collection of tokens. Any tokens can be bundled together. Token bundles are the standard - and only - way to represent and store assets on the Cardano blockchain.

Show child attributes
policyIdstringrequired

Policy Id hex string

tokensArray<Amount>required

Tokens value.

Show child attributes
valuestringrequired

Value of the transaction in atomic units represented as an arbitrary-sized signed integer. For example, 1 BTC would be represented by a value of 100000000.

currencyCurrencyrequired

Rosetta currency object.

Show child attributes
symbolstringrequired

Canonical symbol associated with a currency.

decimalsinteger<int32>>= 0required

Number of decimal places in the standard unit representation of the amount. For example, BTC has 8 decimals. Note that it is not possible to represent the value of some currency in atomic units that is not base 10.

metadataany

Additional metadata object.

metadataobject

Additional metadata object.

poolRegistrationCertstring

Certificate of a pool registration encoded as hex string

poolRegistrationParamsPoolRegistrationParams

Cardano stake pool identifier or key hash.

Show child attributes
vrfKeyHashstringrequired

Cardano transaction hash.

rewardAddressstringrequired

Cardano reward address.

pledgestringrequired

Lovelace amount to pledge

coststringrequired

Operational costs per epoch lovelace

poolOwnersArray<string>required

Cardano stake pool identifier or key hash.

relaysArray<Relay>required

Relays value.

Show child attributes
typestring

Type value.

ipv4string

Ipv4 value.

ipv6string

Ipv6 value.

dnsNamestring

Dns Name value.

portstring

Port value.

marginPoolMargin

Margin value.

Show child attributes
numeratorstringrequired

Numerator value.

denominatorstringrequired

Denominator value.

margin_percentagestring

Margin Percentage value.

poolMetadataPoolMetadata

Cardano stake pool identifier or key hash.

Show child attributes
urlstringrequired

Url value.

hashstringrequired

Cardano transaction hash.

voteRegistrationMetadataVoteRegistrationMetadata

A Catalyst registration transaction is a regular Cardano transaction with a specific transaction metadata associated with it.

Show child attributes
stakeKeyPublicKeyrequired

The staking key on the Cardano network

Show child attributes
hex_bytesstringrequired

Hex-encoded public key bytes in the format specified by the CurveType.

curve_typeCurveTypesecp256k1secp256r1edwards25519tweedlerequired

Curve Type value.

votingKeyPublicKeyrequired

Catalyst voting key

Show child attributes
hex_bytesstringrequired

Hex-encoded public key bytes in the format specified by the CurveType.

curve_typeCurveTypesecp256k1secp256r1edwards25519tweedlerequired

Curve Type value.

rewardAddressstringrequired

Shelley address to receive rewards

votingNoncenumberrequired

Unsigned integer (of CBOR major type 0). Current slot number

votingSignaturestringrequired

ED25119 signature CBOR byte array of blake2b-256 hash of the registration metadata signed using the staking key

metadataobjectrequired

Additional metadata object.

Show child attributes
ttlstringrequired

Ttl value.

protocol_parametersProtocolParametersrequired

Protocol Parameters value.

Show child attributes
coinsPerUtxoSizestringrequired

Coins Per Utxo Size value.

maxTxSizenumberrequired

Max Tx Size value.

maxValSizenumberrequired

Max Val Size value.

keyDepositstringrequired

key registration cost in Lovelace

maxCollateralInputsnumberrequired

Max Collateral Inputs value.

minFeeCoefficientnumberrequired

Min Fee Coefficient value.

minFeeConstantnumberrequired

Min Fee Constant value.

minPoolCoststringrequired

Cardano stake pool identifier or key hash.

poolDepositstringrequired

pool registration cost in Lovelace

protocolintegerrequired

Protocol value.

public_keysArray<PublicKey>

Public Keys value.

Show child attributes
hex_bytesstringrequired

Hex-encoded public key bytes in the format specified by the CurveType.

curve_typeCurveTypesecp256k1secp256r1edwards25519tweedlerequired

Curve Type value.

Response

200OK

HTTP 200 response for constructionPayloads.

400Bad Request

Bad Request. The request is malformed or contains invalid parameters.

401Unauthorized

Unauthorized: API key is present but rejected by the NOWNodes gateway.

422Unprocessable Entity

Missing API key. The NOWNodes gateway returns plain text for this error.

500Internal Server Error

Internal Server Error. The gateway or backend failed while processing the request.

Create Network Transaction from Signatures

POST
https://ada.nownodes.io/construction/combine

Authorizations

ApiKeyAuthApiKeyAuth

api-key string

NOWNodes API key passed in the api-key header.

Combine creates a network-specific transaction from an unsigned transaction and an array of provided signatures. The signed transaction returned from this method will be sent to the /construction/submit endpoint by the caller.

Body

application/json

Request value.

network_identifierNetworkIdentifierrequired

Rosetta network identifier object.

Show child attributes
blockchainstringrequired

Blockchain value.

networkstringrequired

If a blockchain has a specific chain-id or network identifier, it should go in this field. It is up to the client to determine which network-specific identifier is mainnet, preprod, or preview.

sub_network_identifierSubNetworkIdentifier

Sub Network Identifier value.

Show child attributes
networkstringrequired

Network value.

metadataobject

Additional metadata object.

unsigned_transactionstringrequired

Unsigned Transaction value.

signaturesArray<Signature>required

Signatures value.

Show child attributes
signing_payloadSigningPayloadrequired

Signing Payload value.

Show child attributes
addressstring

[DEPRECATED by account_identifier in v1.4.4] The network-specific address of the account that should sign the payload.

account_identifierAccountIdentifier

Rosetta account identifier object.

Show child attributes
addressstringrequired

The address may be a cryptographic public key (or some encoding of it) or a provided username.

sub_accountSubAccountIdentifier

Sub Account value.

Show child attributes
addressstringrequired

The SubAccount address may be a cryptographic value or some other identifier (ex: bonded) that uniquely specifies a SubAccount.

metadataobject

If the SubAccount address is not sufficient to uniquely specify a SubAccount, any other identifying information can be stored here. It is important to note that two SubAccounts with identical addresses but differing metadata will not be considered equal by clients.

metadataobject

Blockchains that utilize a username model (where the address is not a derivative of a cryptographic public key) should specify the public key(s) owned by the address in metadata.

Show child attributes
chain_codestring

Hex string encoded extension of bip32 private and public keys with an extra 256 bits of entropy that consists of 32 bytes

hex_bytesstringrequired

Hex Bytes value.

signature_typeSignatureTypeecdsaecdsa_recoveryed25519schnorr_1schnorr_poseidon

Signature Type value.

public_keyPublicKeyrequired

Public Key value.

Show child attributes
hex_bytesstringrequired

Hex-encoded public key bytes in the format specified by the CurveType.

curve_typeCurveTypesecp256k1secp256r1edwards25519tweedlerequired

Curve Type value.

signature_typeSignatureTypeecdsaecdsa_recoveryed25519schnorr_1schnorr_poseidonrequired

Signature Type value.

hex_bytesstringrequired

Hex Bytes value.

Response

200OK

HTTP 200 response for constructionCombine.

400Bad Request

Bad Request. The request is malformed or contains invalid parameters.

401Unauthorized

Unauthorized: API key is present but rejected by the NOWNodes gateway.

422Unprocessable Entity

Missing API key. The NOWNodes gateway returns plain text for this error.

500Internal Server Error

Internal Server Error. The gateway or backend failed while processing the request.

Parse a Transaction

POST
https://ada.nownodes.io/construction/parse

Authorizations

ApiKeyAuthApiKeyAuth

api-key string

NOWNodes API key passed in the api-key header.

Parse is called on both unsigned and signed transactions to understand the intent of the formulated transaction. This is run as a sanity check before signing (after /construction/payloads) and before broadcast (after /construction/combine).

Body

application/json

Request value.

network_identifierNetworkIdentifierrequired

Rosetta network identifier object.

Show child attributes
blockchainstringrequired

Blockchain value.

networkstringrequired

If a blockchain has a specific chain-id or network identifier, it should go in this field. It is up to the client to determine which network-specific identifier is mainnet, preprod, or preview.

sub_network_identifierSubNetworkIdentifier

Sub Network Identifier value.

Show child attributes
networkstringrequired

Network value.

metadataobject

Additional metadata object.

signedbooleanrequired

Signed is a boolean indicating whether the transaction is signed.

transactionstringrequired

This must be either the unsigned transaction blob returned by /construction/payloads or the signed transaction blob returned by /construction/combine.

Response

200OK

HTTP 200 response for constructionParse.

400Bad Request

Bad Request. The request is malformed or contains invalid parameters.

401Unauthorized

Unauthorized: API key is present but rejected by the NOWNodes gateway.

422Unprocessable Entity

Missing API key. The NOWNodes gateway returns plain text for this error.

500Internal Server Error

Internal Server Error. The gateway or backend failed while processing the request.

Get the Hash of a Signed Transaction

POST
https://ada.nownodes.io/construction/hash

Authorizations

ApiKeyAuthApiKeyAuth

api-key string

NOWNodes API key passed in the api-key header.

TransactionHash returns the network-specific transaction hash for a signed transaction.

Body

application/json

Request value.

network_identifierNetworkIdentifierrequired

Rosetta network identifier object.

Show child attributes
blockchainstringrequired

Blockchain value.

networkstringrequired

If a blockchain has a specific chain-id or network identifier, it should go in this field. It is up to the client to determine which network-specific identifier is mainnet, preprod, or preview.

sub_network_identifierSubNetworkIdentifier

Sub Network Identifier value.

Show child attributes
networkstringrequired

Network value.

metadataobject

Additional metadata object.

signed_transactionstringrequired

Signed Transaction value.

Response

200OK

HTTP 200 response for constructionHash.

400Bad Request

Bad Request. The request is malformed or contains invalid parameters.

401Unauthorized

Unauthorized: API key is present but rejected by the NOWNodes gateway.

422Unprocessable Entity

Missing API key. The NOWNodes gateway returns plain text for this error.

500Internal Server Error

Internal Server Error. The gateway or backend failed while processing the request.

Submit a Signed Transaction

POST
https://ada.nownodes.io/construction/submit

Authorizations

ApiKeyAuthApiKeyAuth

api-key string

NOWNodes API key passed in the api-key header.

Submit a pre-signed transaction to the node. This call should not block on the transaction being included in a block. Rather, it should return immediately with an indication of whether or not the transaction was included in the mempool. The transaction submission response should only return a 200 status if the submitted transaction could be included in the mempool. Otherwise, it should return an error.

Body

application/json

Request value.

network_identifierNetworkIdentifierrequired

Rosetta network identifier object.

Show child attributes
blockchainstringrequired

Blockchain value.

networkstringrequired

If a blockchain has a specific chain-id or network identifier, it should go in this field. It is up to the client to determine which network-specific identifier is mainnet, preprod, or preview.

sub_network_identifierSubNetworkIdentifier

Sub Network Identifier value.

Show child attributes
networkstringrequired

Network value.

metadataobject

Additional metadata object.

signed_transactionstringrequired

Signed Transaction value.

Response

200OK

HTTP 200 response for constructionSubmit.

400Bad Request

Bad Request. The request is malformed or contains invalid parameters.

401Unauthorized

Unauthorized: API key is present but rejected by the NOWNodes gateway.

422Unprocessable Entity

Missing API key. The NOWNodes gateway returns plain text for this error.

500Internal Server Error

Internal Server Error. The gateway or backend failed while processing the request.

Events

Events operations.

[INDEXER] Get a range of BlockEvents

POST
https://ada.nownodes.io/events/blocks

Authorizations

ApiKeyAuthApiKeyAuth

api-key string

NOWNodes API key passed in the api-key header.

/events/blocks allows the caller to query a sequence of BlockEvents indicating which blocks were added and removed from storage to reach the current state. Following BlockEvents allows lightweight clients to update their state without needing to implement their own syncing logic (like finding the common parent in a reorg). /events/blocks is considered an "indexer" endpoint and Rosetta implementations are not required to complete it to adhere to the Rosetta spec. However, any Rosetta "indexer" MUST support this endpoint.

Body

application/json

Request value.

network_identifierNetworkIdentifierrequired

Rosetta network identifier object.

Show child attributes
blockchainstringrequired

Blockchain value.

networkstringrequired

If a blockchain has a specific chain-id or network identifier, it should go in this field. It is up to the client to determine which network-specific identifier is mainnet, preprod, or preview.

sub_network_identifierSubNetworkIdentifier

Sub Network Identifier value.

Show child attributes
networkstringrequired

Network value.

metadataobject

Additional metadata object.

offsetinteger<int64>>= 0

offset is the offset into the event stream to sync events from. If this field is not populated, we return the limit events backwards from tip. If this is set to 0, we start from the beginning.

limitinteger<int64>>= 0

limit is the maximum number of events to fetch in one call. The implementation may return <= limit events.

Response

200OK

HTTP 200 response for eventsBlocks.

400Bad Request

Bad Request. The request is malformed or contains invalid parameters.

401Unauthorized

Unauthorized: API key is present but rejected by the NOWNodes gateway.

422Unprocessable Entity

Missing API key. The NOWNodes gateway returns plain text for this error.

500Internal Server Error

Internal Server Error. The gateway or backend failed while processing the request.

[INDEXER] Search for Transactions

POST
https://ada.nownodes.io/search/transactions

Authorizations

ApiKeyAuthApiKeyAuth

api-key string

NOWNodes API key passed in the api-key header.

/search/transactions allows the caller to search for transactions that meet certain conditions. Some conditions include matching a transaction hash, containing an operation with a certain status, or containing an operation that affects a certain account. /search/transactions is considered an "indexer" endpoint and Rosetta implementations are not required to complete it to adhere to the Rosetta spec. However, any Rosetta "indexer" MUST support this endpoint.

Body

application/json

Request value.

network_identifierNetworkIdentifierrequired

Rosetta network identifier object.

Show child attributes
blockchainstringrequired

Blockchain value.

networkstringrequired

If a blockchain has a specific chain-id or network identifier, it should go in this field. It is up to the client to determine which network-specific identifier is mainnet, preprod, or preview.

sub_network_identifierSubNetworkIdentifier

Sub Network Identifier value.

Show child attributes
networkstringrequired

Network value.

metadataobject

Additional metadata object.

operatorOperatororand

Operator value.

max_blockinteger<int64>>= 0

max_block is the largest block index to consider when searching for transactions. If this field is not populated, the current block is considered the max_block. If you do not specify a max_block, it is possible a newly synced block will interfere with paginated transaction queries (as the offset could become invalid with newly added rows).

offsetinteger<int64>>= 0

offset is the offset into the query result to start returning transactions. If any search conditions are changed, the query offset will change and you must restart your search iteration.

limitinteger<int64>>= 0

limit is the maximum number of transactions to return in one call. The implementation may return <= limit transactions.

transaction_identifierTransactionIdentifier

Rosetta transaction identifier object.

Show child attributes
hashstringrequired

Any transactions that are attributable only to a block (ex: a block event) should use the hash of the block as the identifier.

account_identifierAccountIdentifier

Rosetta account identifier object.

Show child attributes
addressstringrequired

The address may be a cryptographic public key (or some encoding of it) or a provided username.

sub_accountSubAccountIdentifier

Sub Account value.

Show child attributes
addressstringrequired

The SubAccount address may be a cryptographic value or some other identifier (ex: bonded) that uniquely specifies a SubAccount.

metadataobject

If the SubAccount address is not sufficient to uniquely specify a SubAccount, any other identifying information can be stored here. It is important to note that two SubAccounts with identical addresses but differing metadata will not be considered equal by clients.

metadataobject

Blockchains that utilize a username model (where the address is not a derivative of a cryptographic public key) should specify the public key(s) owned by the address in metadata.

Show child attributes
chain_codestring

Hex string encoded extension of bip32 private and public keys with an extra 256 bits of entropy that consists of 32 bytes

coin_identifierCoinIdentifier

Rosetta coin identifier object.

Show child attributes
identifierstringrequired

Identifier should be populated with a globally unique identifier of a Coin. In Bitcoin, this identifier would be transaction_hash:index.

currencyCurrency

Rosetta currency object.

Show child attributes
symbolstringrequired

Canonical symbol associated with a currency.

decimalsinteger<int32>>= 0required

Number of decimal places in the standard unit representation of the amount. For example, BTC has 8 decimals. Note that it is not possible to represent the value of some currency in atomic units that is not base 10.

metadataany

Additional metadata object.

statusstring

status is the network-specific operation type.

typestring

type is the network-specific operation type.

addressstring

address is AccountIdentifier.Address. This is used to get all transactions related to an AccountIdentifier.Address, regardless of SubAccountIdentifier.

successboolean

success is a synthetic condition populated by parsing network-specific operation statuses (using the mapping provided in /network/options).

Response

200OK

HTTP 200 response for searchTransactions.

400Bad Request

Bad Request. The request is malformed or contains invalid parameters.

401Unauthorized

Unauthorized: API key is present but rejected by the NOWNodes gateway.

422Unprocessable Entity

Missing API key. The NOWNodes gateway returns plain text for this error.

500Internal Server Error

Internal Server Error. The gateway or backend failed while processing the request.