Skip to content

Introduction

This is a list of the RPC calls, their inputs and outputs, and examples of each. This list is autogenerated and was last generated on: 2019-04-08

Many RPC calls use the JSON RPC interface while others use their own interfaces, as demonstrated below.

Note: "atomic units" refer to the smallest fraction of 1 LOKI which is 1e9 atomic units.

RPC Methods


COMMAND_RPC_GET_BALANCE

Return the wallet's balance.

Endpoints: get_balance, getbalance

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"getbalance",
  "params": {
    "account_index": 2130706433,
    "address_indices": [2130706433, ...]
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "balance": 123,
  "unlocked_balance": 123,
  "multisig_import_needed": true,
  "per_subaddress": [{
      "address_index": 2130706433,
      "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk",
      "balance": 123,
      "unlocked_balance": 123,
      "label": "TODO(loki): Write example string",
      "num_unspent_outputs": 123
    }, ...]
}

Inputs:

  • account_index - uint32: Return balance for this account.
  • address_indices - uint32[]: (Optional) Return balance detail for those subaddresses.

Outputs:

  • balance - uint64: The total balance (atomic units) of the currently opened wallet.
  • unlocked_balance - uint64: Unlocked funds are those funds that are sufficiently deep enough in the loki blockchain to be considered safe to spend.
  • multisig_import_needed - bool: True if importing multisig data is needed for returning a correct balance.
  • per_subaddress - per_subaddress_info[]: Balance information for each subaddress in an account.
    • address_index - uint32: Index of the subaddress in the account.
    • address - string: Address at this index. Base58 representation of the public keys.
    • balance - uint64: Balance for the subaddress (locked or unlocked).
    • unlocked_balance - uint64: Unlocked funds are those funds that are sufficiently deep enough in the loki blockchain to be considered safe to spend.
    • label - string: Label for the subaddress.
    • num_unspent_outputs - uint64: Number of unspent outputs available for the subaddress.

COMMAND_RPC_GET_ADDRESS

Return the wallet's addresses for an account. Optionally filter for specific set of subaddresses.

Endpoints: get_address, getaddress

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"getaddress",
  "params": {
    "account_index": 2130706433,
    "address_index": [2130706433, ...]
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk",
  "addresses": [{
      "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk",
      "label": "TODO(loki): Write example string",
      "address_index": 2130706433,
      "used": true
    }, ...]
}

Inputs:

  • account_index - uint32: Get the wallet addresses for the specified account.
  • address_index - uint32[]: (Optional) List of subaddresses to return from the aforementioned account.

Outputs:

  • address - string: (Deprecated) Remains to be compatible with older RPC format
  • addresses - address_info[]: Addresses informations.
    • address - string: The (sub)address string.
    • label - string: Label of the (sub)address.
    • address_index - uint32: Index of the subaddress
    • used - bool: True if the (sub)address has received funds before.

COMMAND_RPC_GET_ADDRESS_INDEX

Get account and address indexes from a specific (sub)address.

Endpoints: get_address_index

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"get_address_index",
  "params": {
    "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "index": 
}

Inputs:

  • address - string: (Sub)address to look for.

Outputs:

  • index - cryptonote::subaddress_index: Account index followed by the subaddress index.

COMMAND_RPC_CREATE_ADDRESS

Create a new address for an account. Optionally, label the new address.

Endpoints: create_address

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"create_address",
  "params": {
    "account_index": 2130706433,
    "label": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk",
  "address_index": 2130706433
}

Inputs:

  • account_index - uint32: Create a new subaddress for this account.
  • label - string: (Optional) Label for the new subaddress.

Outputs:

  • address - string: The newly requested address.
  • address_index - uint32: Index of the new address in the requested account index.

COMMAND_RPC_LABEL_ADDRESS

Label an address.

Endpoints: label_address

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"label_address",
  "params": {
    "index": ,
    "label": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:


Inputs:

  • index - cryptonote::subaddress_index: Major & minor address index
  • label - string: Label for the address.

Outputs:


COMMAND_RPC_GET_ACCOUNTS

Get all accounts for a wallet. Optionally filter accounts by tag.

Endpoints: get_accounts

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"get_accounts",
  "params": {
    "tag": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "total_balance": 123,
  "total_unlocked_balance": 123,
  "subaddress_accounts": [{
      "account_index": 2130706433,
      "base_address": "TODO(loki): Write example string",
      "balance": 123,
      "unlocked_balance": 123,
      "label": "TODO(loki): Write example string",
      "tag": "TODO(loki): Write example string"
    }, ...]
}

Inputs:

  • tag - string: (Optional) Tag for filtering accounts. All accounts if empty, otherwise those accounts with this tag

Outputs:

  • total_balance - uint64: Total balance of the selected accounts (locked or unlocked).
  • total_unlocked_balance - uint64: Total unlocked balance of the selected accounts.
  • subaddress_accounts - subaddress_account_info[]: Account information.
    • account_index - uint32: Index of the account.
    • base_address - string: The first address of the account (i.e. the primary address).
    • balance - uint64: Balance of the account (locked or unlocked).
    • unlocked_balance - uint64: Unlocked balance for the account.
    • label - string: (Optional) Label of the account.
    • tag - string: (Optional) Tag for filtering accounts.

COMMAND_RPC_CREATE_ACCOUNT

Create a new account with an optional label.

Endpoints: create_account

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"create_account",
  "params": {
    "label": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "account_index": 2130706433,
  "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk"
}

Inputs:

  • label - string: (Optional) Label for the account.

Outputs:

  • account_index - uint32: Index of the new account.
  • address - string: The primary address of the new account.

COMMAND_RPC_LABEL_ACCOUNT

Label an account.

Endpoints: label_account

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"label_account",
  "params": {
    "account_index": 2130706433,
    "label": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:


Inputs:

  • account_index - uint32: Account index to set the label for.
  • label - string: Label for the account.

Outputs:


COMMAND_RPC_GET_ACCOUNT_TAGS

Get a list of user-defined account tags.

Endpoints: get_account_tags

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '{ "jsonrpc":"2.0", "id":"0", "method":"get_account_tags"}' -H 'Content-Type: application/json'

Example Response:

{
  "account_tags": [{
      "tag": "TODO(loki): Write example string",
      "label": "TODO(loki): Write example string",
      "accounts": [2130706433, ...]
    }, ...]
}

Inputs:

Outputs:

  • account_tags - account_tag_info[]: Account tag information:
    • tag - string: Filter tag.
    • label - string: Label for the tag.
    • accounts - uint32[]: List of tagged account indices.

COMMAND_RPC_TAG_ACCOUNTS

Apply a filtering tag to a list of accounts.

Endpoints: tag_accounts

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"tag_accounts",
  "params": {
    "tag": "TODO(loki): Write example string",
    "accounts": [2130706433, ...]
  }
}' -H 'Content-Type: application/json'

Example Response:


Inputs:

  • tag - string: Tag for the accounts.
  • accounts - uint32[]: Tag this list of accounts.

Outputs:


COMMAND_RPC_UNTAG_ACCOUNTS

Remove filtering tag from a list of accounts.

Endpoints: untag_accounts

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"untag_accounts",
  "params": {
    "accounts": [2130706433, ...]
  }
}' -H 'Content-Type: application/json'

Example Response:


Inputs:

  • accounts - uint32[]: Remove tag from this list of accounts.

Outputs:


COMMAND_RPC_SET_ACCOUNT_TAG_DESCRIPTION

Set description for an account tag.

Endpoints: set_account_tag_description

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"set_account_tag_description",
  "params": {
    "tag": "TODO(loki): Write example string",
    "description": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:


Inputs:

  • tag - string: Set a description for this tag.
  • description - string: Description for the tag.

Outputs:


COMMAND_RPC_GET_HEIGHT

Returns the wallet's current block height.

Endpoints: get_height, getheight

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '{ "jsonrpc":"2.0", "id":"0", "method":"getheight"}' -H 'Content-Type: application/json'

Example Response:

{
  "height": 234767
}

Inputs:

Outputs:

  • height - uint64: The current wallet's blockchain height. If the wallet has been offline for a long time, it may need to catch up with the daemon.

COMMAND_RPC_TRANSFER

Send loki to a number of recipients. To preview the transaction fee, set do_not_relay to true and get_tx_metadata to true.

Submit the response using the data in get_tx_metadata in the RPC call, relay_tx.

Endpoints: transfer

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"transfer",
  "params": {
    "destinations": [, ...],
    "account_index": 2130706433,
    "subaddr_indices": [2130706433, ...],
    "priority": 2130706433,
    "mixin": 123,
    "ring_size": 123,
    "unlock_time": 123,
    "payment_id": "f378710e54eeeb8d",
    "get_tx_key": true,
    "do_not_relay": true,
    "get_tx_hex": true,
    "get_tx_metadata": true
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "tx_hash": "b605cab7e3b9fe1f6d322e3167cd26e1e61c764afa9d733233ef716787786123",
  "tx_key": "TODO(loki): Write example string",
  "amount": 123,
  "fee": 123,
  "tx_blob": "TODO(loki): Write example string",
  "tx_metadata": "TODO(loki): Write example string",
  "multisig_txset": "TODO(loki): Write example string",
  "unsigned_txset": "TODO(loki): Write example string"
}

Inputs:

  • destinations - transfer_destination[]: Array of destinations to receive LOKI.
  • account_index - uint32: (Optional) Transfer from this account index. (Defaults to 0)
  • subaddr_indices - uint32[]: (Optional) Transfer from this set of subaddresses. (Defaults to 0)
  • priority - uint32: Set a priority for the transaction. Accepted Values are: default (1), or 0-3 for: unimportant, normal, elevated, priority.
  • mixin - uint64: (Deprecated) Set to 9. Number of outputs from the blockchain to mix with. Loki mixin statically set to 9.
  • ring_size - uint64: (Deprecated) Set to 10. Sets ringsize to n (mixin + 1). Loki ring_size is statically set to 10.
  • unlock_time - uint64: Number of blocks before the loki can be spent (0 to use the default lock time).
  • payment_id - string: (Optional) Random 64-character hex string to identify a transaction.
  • get_tx_key - bool: (Optional) Return the transaction key after sending.
  • do_not_relay - bool: (Optional) If true, the newly created transaction will not be relayed to the loki network. (Defaults to false)
  • get_tx_hex - bool: Return the transaction as hex string after sending. (Defaults to false)
  • get_tx_metadata - bool: Return the metadata needed to relay the transaction. (Defaults to false)

Outputs:

  • tx_hash - string: Publically searchable transaction hash.
  • tx_key - string: Transaction key if get_tx_key is true, otherwise, blank string.
  • amount - uint64: Amount transferred for the transaction.
  • fee - uint64: Fee charged for the txn.
  • tx_blob - string: Raw transaction represented as hex string, if get_tx_hex is true.
  • tx_metadata - string: Set of transaction metadata needed to relay this transfer later, if get_tx_metadata is true.
  • multisig_txset - string: Set of multisig transactions in the process of being signed (empty for non-multisig).
  • unsigned_txset - string: Set of unsigned tx for cold-signing purposes.

COMMAND_RPC_TRANSFER_SPLIT

Same as transfer, but can split into more than one tx if necessary.

Endpoints: transfer_split

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"transfer_split",
  "params": {
    "destinations": [, ...],
    "account_index": 2130706433,
    "subaddr_indices": [2130706433, ...],
    "priority": 2130706433,
    "mixin": 123,
    "ring_size": 123,
    "unlock_time": 123,
    "payment_id": "f378710e54eeeb8d",
    "get_tx_keys": true,
    "do_not_relay": true,
    "get_tx_hex": true,
    "get_tx_metadata": true
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "tx_hash_list": ["TODO(loki): Write example string", ...],
  "tx_key_list": ["TODO(loki): Write example string", ...],
  "amount_list": [123, ...],
  "fee_list": [123, ...],
  "tx_blob_list": ["TODO(loki): Write example string", ...],
  "tx_metadata_list": ["TODO(loki): Write example string", ...],
  "multisig_txset": "TODO(loki): Write example string",
  "unsigned_txset": "TODO(loki): Write example string"
}

Inputs:

  • destinations - transfer_destination[]: Array of destinations to receive LOKI:
  • account_index - uint32: (Optional) Transfer from this account index. (Defaults to 0)
  • subaddr_indices - uint32[]: (Optional) Transfer from this set of subaddresses. (Defaults to 0)
  • priority - uint32: Set a priority for the transactions. Accepted Values are: 0-3 for: default, unimportant, normal, elevated, priority.
  • mixin - uint64: (Ignored) Number of outputs from the blockchain to mix with. Loki mixin statically set to 9.
  • ring_size - uint64: (Ignored) Sets ringsize to n (mixin + 1). Loki ring_size is statically set to 10.
  • unlock_time - uint64: Number of blocks before the loki can be spent (0 to not add a lock).
  • payment_id - string: (Optional) Random 32-byte/64-character hex string to identify a transaction.
  • get_tx_keys - bool: (Optional) Return the transaction keys after sending.
  • do_not_relay - bool: (Optional) If true, the newly created transaction will not be relayed to the loki network. (Defaults to false)
  • get_tx_hex - bool: Return the transactions as hex string after sending.
  • get_tx_metadata - bool: Return list of transaction metadata needed to relay the transfer later.

Outputs:

  • tx_hash_list - string[]: The tx hashes of every transaction.
  • tx_key_list - string[]: The transaction keys for every transaction.
  • amount_list - uint64[]: The amount transferred for every transaction.
  • fee_list - uint64[]: The amount of fees paid for every transaction.
  • tx_blob_list - string[]: The tx as hex string for every transaction.
  • tx_metadata_list - string[]: List of transaction metadata needed to relay the transactions later.
  • multisig_txset - string: The set of signing keys used in a multisig transaction (empty for non-multisig).
  • unsigned_txset - string: Set of unsigned tx for cold-signing purposes.

COMMAND_RPC_DESCRIBE_TRANSFER

Endpoints: describe_transfer

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"describe_transfer",
  "params": {
    "unsigned_txset": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "desc": [{
      "amount_in": 123,
      "amount_out": 123,
      "ring_size": 2130706433,
      "unlock_time": 123,
      "recipients": [{
          "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk",
          "amount": 123
        }, ...],
      "payment_id": "f378710e54eeeb8d",
      "change_amount": 123,
      "change_address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk",
      "fee": 123,
      "dummy_outputs": 2130706433,
      "extra": "TODO(loki): Write example string"
    }, ...]
}

Inputs:

  • unsigned_txset - string: Set of unsigned tx returned by "transfer" or "transfer_split" methods.

Outputs:

  • desc - transfer_description[]: List of information of transfers.
    • amount_in - uint64: Amount in, in atomic units.
    • amount_out - uint64: amount out, in atomic units.
    • ring_size - uint32: Ring size of transfer.
    • unlock_time - uint64: Number of blocks before the loki can be spent (0 represents the default network lock time).
    • recipients - recipient[]: List of addresses and amounts.
      • address - string: Destination public address.
      • amount - uint64: Amount in atomic units.
    • payment_id - string: Payment ID matching the input parameter.
    • change_amount - uint64: Change received from transaction in atomic units.
    • change_address - string: Address the change was sent to.
    • fee - uint64: Fee of the transaction in atomic units.
    • dummy_outputs - uint32
    • extra - string: Data stored in the tx extra represented in hex.

COMMAND_RPC_SIGN_TRANSFER

Sign a transaction created on a read-only wallet (in cold-signing process).

Endpoints: sign_transfer

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"sign_transfer",
  "params": {
    "unsigned_txset": "TODO(loki): Write example string",
    "export_raw": true,
    "get_tx_keys": true
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "signed_txset": "TODO(loki): Write example string",
  "tx_hash_list": ["TODO(loki): Write example string", ...],
  "tx_raw_list": ["TODO(loki): Write example string", ...],
  "tx_key_list": ["TODO(loki): Write example string", ...]
}

Inputs:

  • unsigned_txset - string: Set of unsigned tx returned by "transfer" or "transfer_split" methods.
  • export_raw - bool: (Optional) If true, return the raw transaction data. (Defaults to false)
  • get_tx_keys - bool: (Optional) Return the transaction keys after sending.

Outputs:

  • signed_txset - string: Set of signed tx to be used for submitting transfer.
  • tx_hash_list - string[]: The tx hashes of every transaction.
  • tx_raw_list - string[]: The tx raw data of every transaction.
  • tx_key_list - string[]: The tx key data of every transaction.

COMMAND_RPC_SUBMIT_TRANSFER

Submit a previously signed transaction on a read-only wallet (in cold-signing process).

Endpoints: submit_transfer

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"submit_transfer",
  "params": {
    "tx_data_hex": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "tx_hash_list": ["TODO(loki): Write example string", ...]
}

Inputs:

  • tx_data_hex - string: Set of signed tx returned by "sign_transfer".

Outputs:

  • tx_hash_list - string[]: The tx hashes of every transaction.

COMMAND_RPC_SWEEP_DUST

Send all dust outputs back to the wallet's, to make them easier to spend (and mix).

Endpoints: sweep_dust, sweep_unmixable

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"sweep_unmixable",
  "params": {
    "get_tx_keys": true,
    "do_not_relay": true,
    "get_tx_hex": true,
    "get_tx_metadata": true
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "tx_hash_list": ["TODO(loki): Write example string", ...],
  "tx_key_list": ["TODO(loki): Write example string", ...],
  "amount_list": [123, ...],
  "fee_list": [123, ...],
  "tx_blob_list": ["TODO(loki): Write example string", ...],
  "tx_metadata_list": ["TODO(loki): Write example string", ...],
  "multisig_txset": "TODO(loki): Write example string",
  "unsigned_txset": "TODO(loki): Write example string"
}

Inputs:

  • get_tx_keys - bool: (Optional) Return the transaction keys after sending.
  • do_not_relay - bool: (Optional) If true, the newly created transaction will not be relayed to the loki network. (Defaults to false)
  • get_tx_hex - bool: (Optional) Return the transactions as hex string after sending. (Defaults to false)
  • get_tx_metadata - bool: (Optional) Return list of transaction metadata needed to relay the transfer later. (Defaults to false)

Outputs:

  • tx_hash_list - string[]: The tx hashes of every transaction.
  • tx_key_list - string[]: The transaction keys for every transaction.
  • amount_list - uint64[]: The amount transferred for every transaction.
  • fee_list - uint64[]: The amount of fees paid for every transaction.
  • tx_blob_list - string[]: The tx as hex string for every transaction.
  • tx_metadata_list - string[]: List of transaction metadata needed to relay the transactions later.
  • multisig_txset - string: The set of signing keys used in a multisig transaction (empty for non-multisig).
  • unsigned_txset - string: Set of unsigned tx for cold-signing purposes.

COMMAND_RPC_SWEEP_ALL

Send all unlocked balance to an address.

Endpoints: sweep_all

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"sweep_all",
  "params": {
    "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk",
    "account_index": 2130706433,
    "subaddr_indices": [2130706433, ...],
    "priority": 2130706433,
    "mixin": 123,
    "ring_size": 123,
    "outputs": 123,
    "unlock_time": 123,
    "payment_id": "f378710e54eeeb8d",
    "get_tx_keys": true,
    "below_amount": 123,
    "do_not_relay": true,
    "get_tx_hex": true,
    "get_tx_metadata": true
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "tx_hash_list": ["TODO(loki): Write example string", ...],
  "tx_key_list": ["TODO(loki): Write example string", ...],
  "amount_list": [123, ...],
  "fee_list": [123, ...],
  "tx_blob_list": ["TODO(loki): Write example string", ...],
  "tx_metadata_list": ["TODO(loki): Write example string", ...],
  "multisig_txset": "TODO(loki): Write example string",
  "unsigned_txset": "TODO(loki): Write example string"
}

Inputs:

  • address - string: Destination public address.
  • account_index - uint32: Sweep transactions from this account.
  • subaddr_indices - uint32[]: (Optional) Sweep from this set of subaddresses in the account.
  • priority - uint32: (Optional) Priority for sending the sweep transfer, partially determines fee.
  • mixin - uint64: (Deprecated) Set to 9. Number of outputs from the blockchain to mix with. Loki mixin statically set to 9.
  • ring_size - uint64: (Deprecated) Set to 10. Sets ringsize to n (mixin + 1). Loki ring_size is statically set to 10.
  • outputs - uint64
  • unlock_time - uint64: Number of blocks before the loki can be spent (0 to not add a lock).
  • payment_id - string: (Optional) 64-character hex string to identify a transaction.
  • get_tx_keys - bool: (Optional) Return the transaction keys after sending.
  • below_amount - uint64: (Optional) Include outputs below this amount.
  • do_not_relay - bool: (Optional) If true, do not relay this sweep transfer. (Defaults to false)
  • get_tx_hex - bool: (Optional) return the transactions as hex encoded string. (Defaults to false)
  • get_tx_metadata - bool: (Optional) return the transaction metadata as a string. (Defaults to false)

Outputs:

  • tx_hash_list - string[]: The tx hashes of every transaction.
  • tx_key_list - string[]: The transaction keys for every transaction.
  • amount_list - uint64[]: The amount transferred for every transaction.
  • fee_list - uint64[]: The amount of fees paid for every transaction.
  • tx_blob_list - string[]: The tx as hex string for every transaction.
  • tx_metadata_list - string[]: List of transaction metadata needed to relay the transactions later.
  • multisig_txset - string: The set of signing keys used in a multisig transaction (empty for non-multisig).
  • unsigned_txset - string: Set of unsigned tx for cold-signing purposes.

COMMAND_RPC_SWEEP_SINGLE

Send all of a specific unlocked output to an address.

Endpoints: sweep_single

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"sweep_single",
  "params": {
    "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk",
    "priority": 2130706433,
    "mixin": 123,
    "ring_size": 123,
    "outputs": 123,
    "unlock_time": 123,
    "payment_id": "f378710e54eeeb8d",
    "get_tx_key": true,
    "key_image": "8d1bd8181bf7d857bdb281e0153d84cd55a3fcaa57c3e570f4a49f935850b5e3",
    "do_not_relay": true,
    "get_tx_hex": true,
    "get_tx_metadata": true
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "tx_hash": "b605cab7e3b9fe1f6d322e3167cd26e1e61c764afa9d733233ef716787786123",
  "tx_key": "TODO(loki): Write example string",
  "amount": 123,
  "fee": 123,
  "tx_blob": "TODO(loki): Write example string",
  "tx_metadata": "TODO(loki): Write example string",
  "multisig_txset": "TODO(loki): Write example string",
  "unsigned_txset": "TODO(loki): Write example string"
}

Inputs:

  • address - string: Destination public address.
  • priority - uint32: (Optional) Priority for sending the sweep transfer, partially determines fee.
  • mixin - uint64: (Deprecated) Set to 9. Number of outputs from the blockchain to mix with. Loki mixin statically set to 9.
  • ring_size - uint64: (Deprecated) Set to 10. Sets ringsize to n (mixin + 1). Loki ring_size is statically set to 10.
  • outputs - uint64
  • unlock_time - uint64: Number of blocks before the loki can be spent (0 to not add a lock).
  • payment_id - string: (Optional) 64-character hex string to identify a transaction.
  • get_tx_key - bool: (Optional) Return the transaction keys after sending.
  • key_image - string: Key image of specific output to sweep.
  • do_not_relay - bool: (Optional) If true, do not relay this sweep transfer. (Defaults to false)
  • get_tx_hex - bool: (Optional) return the transactions as hex encoded string. (Defaults to false)
  • get_tx_metadata - bool: (Optional) return the transaction metadata as a string. (Defaults to false)

Outputs:

  • tx_hash - string: The tx hashes of the transaction.
  • tx_key - string: The tx key of the transaction.
  • amount - uint64: The amount transfered in atomic units.
  • fee - uint64: The fee paid in atomic units.
  • tx_blob - string: The tx as hex string.
  • tx_metadata - string: Transaction metadata needed to relay the transaction later.
  • multisig_txset - string: The set of signing keys used in a multisig transaction (empty for non-multisig).
  • unsigned_txset - string: Set of unsigned tx for cold-signing purposes.

COMMAND_RPC_RELAY_TX

Relay transaction metadata to the daemon

Endpoints: relay_tx

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"relay_tx",
  "params": {
    "hex": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "tx_hash": "b605cab7e3b9fe1f6d322e3167cd26e1e61c764afa9d733233ef716787786123"
}

Inputs:

  • hex - string: Transaction metadata returned from a transfer method with get_tx_metadata set to true.

Outputs:

  • tx_hash - string: String for the publically searchable transaction hash.

COMMAND_RPC_STORE

Save the wallet file.

Endpoints: store

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '{ "jsonrpc":"2.0", "id":"0", "method":"store"}' -H 'Content-Type: application/json'

Example Response:


Inputs:

Outputs:


COMMAND_RPC_GET_PAYMENTS

Get a list of incoming payments using a given payment id.

Endpoints: get_payments

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"get_payments",
  "params": {
    "payment_id": "f378710e54eeeb8d"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "payments": [{
      "payment_id": "f378710e54eeeb8d",
      "tx_hash": "b605cab7e3b9fe1f6d322e3167cd26e1e61c764afa9d733233ef716787786123",
      "amount": 123,
      "block_height": 123,
      "unlock_time": 123,
      "subaddr_index": ,
      "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk"
    }, ...]
}

Inputs:

  • payment_id - string: Payment ID used to find the payments (16 characters hex).

Outputs:

  • payments - payment_details[]: List of payment details:
    • payment_id - string: Payment ID matching the input parameter.
    • tx_hash - string: Transaction hash used as the transaction ID.
    • amount - uint64: Amount for this payment.
    • block_height - uint64: Height of the block that first confirmed this payment.
    • unlock_time - uint64: Time (in block height) until this payment is safe to spend.
    • subaddr_index - cryptonote::subaddress_index: Major & minor index, account and subaddress index respectively.
    • address - string: Address receiving the payment.

COMMAND_RPC_GET_BULK_PAYMENTS

Get a list of incoming payments using a given payment id,

or a list of payments ids, from a given height.

This method is the preferred method over get_paymentsbecause it

has the same functionality but is more extendable.

Either is fine for looking up transactions by a single payment ID.

Endpoints: get_bulk_payments

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"get_bulk_payments",
  "params": {
    "payment_ids": ["TODO(loki): Write example string", ...],
    "min_block_height": 123
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "payments": [{
      "payment_id": "f378710e54eeeb8d",
      "tx_hash": "b605cab7e3b9fe1f6d322e3167cd26e1e61c764afa9d733233ef716787786123",
      "amount": 123,
      "block_height": 123,
      "unlock_time": 123,
      "subaddr_index": ,
      "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk"
    }, ...]
}

Inputs:

  • payment_ids - string[]: Payment IDs used to find the payments (16 characters hex).
  • min_block_height - uint64: The block height at which to start looking for payments.

Outputs:

  • payments - payment_details[]: List of payment details:
    • payment_id - string: Payment ID matching the input parameter.
    • tx_hash - string: Transaction hash used as the transaction ID.
    • amount - uint64: Amount for this payment.
    • block_height - uint64: Height of the block that first confirmed this payment.
    • unlock_time - uint64: Time (in block height) until this payment is safe to spend.
    • subaddr_index - cryptonote::subaddress_index: Major & minor index, account and subaddress index respectively.
    • address - string: Address receiving the payment.

COMMAND_RPC_INCOMING_TRANSFERS

Return a list of incoming transfers to the wallet.

Endpoints: incoming_transfers

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"incoming_transfers",
  "params": {
    "transfer_type": "TODO(loki): Write example string",
    "account_index": 2130706433,
    "subaddr_indices": [2130706433, ...]
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "transfers": [{
      "amount": 123,
      "spent": true,
      "global_index": 123,
      "tx_hash": "b605cab7e3b9fe1f6d322e3167cd26e1e61c764afa9d733233ef716787786123",
      "subaddr_index": ,
      "key_image": "8d1bd8181bf7d857bdb281e0153d84cd55a3fcaa57c3e570f4a49f935850b5e3"
    }, ...]
}

Inputs:

  • transfer_type - string: "all": all the transfers, "available": only transfers which are not yet spent, OR "unavailable": only transfers which are already spent.
  • account_index - uint32: (Optional) Return transfers for this account. (defaults to 0)
  • subaddr_indices - uint32[]: (Optional) Return transfers sent to these subaddresses.

Outputs:

  • transfers - transfer_details[]: List of information of the transfers details.
    • amount - uint64: Amount of this transfer.
    • spent - bool: Indicates if this transfer has been spent.
    • global_index - uint64: The index into the global list of transactions grouped by amount in the Loki network.
    • tx_hash - string: Several incoming transfers may share the same hash if they were in the same transaction.
    • subaddr_index - cryptonote::subaddress_index: Major & minor index, account and subaddress index respectively.
    • key_image - string: Key image for the incoming transfer's unspent output (empty unless verbose is true).

COMMAND_RPC_QUERY_KEY

Return the spend or view private key.

Endpoints: query_key

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"query_key",
  "params": {
    "key_type": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "key": "TODO(loki): Write example string"
}

Inputs:

  • key_type - string: Which key to retrieve: "mnemonic" - the mnemonic seed (older wallets do not have one) OR "view_key" - the view key

Outputs:

  • key - string: The view key will be hex encoded, while the mnemonic will be a string of words.

COMMAND_RPC_MAKE_INTEGRATED_ADDRESS

Make an integrated address from the wallet address and a payment id.

Endpoints: make_integrated_address

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"make_integrated_address",
  "params": {
    "standard_address": "TODO(loki): Write example string",
    "payment_id": "f378710e54eeeb8d"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "integrated_address": "TODO(loki): Write example string",
  "payment_id": "f378710e54eeeb8d"
}

Inputs:

  • standard_address - string: (Optional, defaults to primary address) Destination public address.
  • payment_id - string: (Optional, defaults to a random ID) 16 characters hex encoded.

Outputs:

  • integrated_address - string
  • payment_id - string: Hex encoded.

COMMAND_RPC_SPLIT_INTEGRATED_ADDRESS

Retrieve the standard address and payment id corresponding to an integrated address.

Endpoints: split_integrated_address

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"split_integrated_address",
  "params": {
    "integrated_address": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "standard_address": "TODO(loki): Write example string",
  "payment_id": "f378710e54eeeb8d",
  "is_subaddress": true
}

Inputs:

  • integrated_address - string

Outputs:

  • standard_address - string
  • payment_id - string
  • is_subaddress - bool

COMMAND_RPC_STOP_WALLET

Stops the wallet, storing the current state.

Endpoints: stop_wallet

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '{ "jsonrpc":"2.0", "id":"0", "method":"stop_wallet"}' -H 'Content-Type: application/json'

Example Response:


Inputs:

Outputs:


COMMAND_RPC_RESCAN_BLOCKCHAIN

Rescan the blockchain from scratch, losing any information

which can not be recovered from the blockchain itself.

This includes destination addresses, tx secret keys, tx notes, etc.

Warning: This blocks the Wallet RPC executable until rescanning is complete.

Endpoints: rescan_blockchain

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"rescan_blockchain",
  "params": {
    "hard": true
  }
}' -H 'Content-Type: application/json'

Example Response:


Inputs:

  • hard - bool

Outputs:


COMMAND_RPC_SET_TX_NOTES

Set arbitrary string notes for transactions.

Endpoints: set_tx_notes

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"set_tx_notes",
  "params": {
    "txids": ["b605cab7e3b9fe1f6d322e3167cd26e1e61c764afa9d733233ef716787786123", ...],
    "notes": ["TODO(loki): Write example string", ...]
  }
}' -H 'Content-Type: application/json'

Example Response:


Inputs:

  • txids - string[]: Transaction ids.
  • notes - string[]: Notes for the transactions.

Outputs:


COMMAND_RPC_GET_TX_NOTES

Get string notes for transactions.

Endpoints: get_tx_notes

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"get_tx_notes",
  "params": {
    "txids": ["b605cab7e3b9fe1f6d322e3167cd26e1e61c764afa9d733233ef716787786123", ...]
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "notes": ["TODO(loki): Write example string", ...]
}

Inputs:

  • txids - string[]: Transaction ids.

Outputs:

  • notes - string[]: Notes for the transactions.

COMMAND_RPC_SET_ATTRIBUTE

Set arbitrary attribute.

Endpoints: set_attribute

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"set_attribute",
  "params": {
    "key": "TODO(loki): Write example string",
    "value": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:


Inputs:

  • key - string: Attribute name.
  • value - string: Attribute value.

Outputs:


COMMAND_RPC_GET_ATTRIBUTE

Get attribute value by name.

Endpoints: get_attribute

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"get_attribute",
  "params": {
    "key": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "value": "TODO(loki): Write example string"
}

Inputs:

  • key - string: Attribute name.

Outputs:

  • value - string: Attribute value.

COMMAND_RPC_GET_TX_KEY

Get transaction secret key from transaction id.

Endpoints: get_tx_key

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"get_tx_key",
  "params": {
    "txid": "b605cab7e3b9fe1f6d322e3167cd26e1e61c764afa9d733233ef716787786123"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "tx_key": "TODO(loki): Write example string"
}

Inputs:

  • txid - string: Transaction id.

Outputs:

  • tx_key - string: Transaction secret key.

COMMAND_RPC_CHECK_TX_KEY

Check a transaction in the blockchain with its secret key.

Endpoints: check_tx_key

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"check_tx_key",
  "params": {
    "txid": "b605cab7e3b9fe1f6d322e3167cd26e1e61c764afa9d733233ef716787786123",
    "tx_key": "TODO(loki): Write example string",
    "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "received": 123,
  "in_pool": true,
  "confirmations": 123
}

Inputs:

  • txid - string: Transaction id.
  • tx_key - string: Transaction secret key.
  • address - string: Destination public address of the transaction.

Outputs:

  • received - uint64: Amount of the transaction.
  • in_pool - bool: States if the transaction is still in pool or has been added to a block.
  • confirmations - uint64: Number of block mined after the one with the transaction.

COMMAND_RPC_GET_TX_PROOF

Get transaction signature to prove it.

Endpoints: get_tx_proof

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"get_tx_proof",
  "params": {
    "txid": "b605cab7e3b9fe1f6d322e3167cd26e1e61c764afa9d733233ef716787786123",
    "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk",
    "message": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "signature": "TODO(loki): Write example string"
}

Inputs:

  • txid - string: Transaction id.
  • address - string: Destination public address of the transaction.
  • message - string: (Optional) add a message to the signature to further authenticate the prooving process.

Outputs:

  • signature - string: Transaction signature.

COMMAND_RPC_CHECK_TX_PROOF

Prove a transaction by checking its signature.

Endpoints: check_tx_proof

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"check_tx_proof",
  "params": {
    "txid": "b605cab7e3b9fe1f6d322e3167cd26e1e61c764afa9d733233ef716787786123",
    "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk",
    "message": "TODO(loki): Write example string",
    "signature": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "good": true,
  "received": 123,
  "in_pool": true,
  "confirmations": 123
}

Inputs:

  • txid - string: Transaction id.
  • address - string: Destination public address of the transaction.
  • message - string: (Optional) Should be the same message used in get_tx_proof.
  • signature - string: Transaction signature to confirm.

Outputs:

  • good - bool: States if the inputs proves the transaction.
  • received - uint64: Amount of the transaction.
  • in_pool - bool: States if the transaction is still in pool or has been added to a block.
  • confirmations - uint64: Number of block mined after the one with the transaction.

COMMAND_RPC_GET_SPEND_PROOF

Generate a signature to prove a spend. Unlike proving a transaction, it does not requires the destination public address.

Endpoints: get_spend_proof

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"get_spend_proof",
  "params": {
    "txid": "b605cab7e3b9fe1f6d322e3167cd26e1e61c764afa9d733233ef716787786123",
    "message": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "signature": "TODO(loki): Write example string"
}

Inputs:

  • txid - string: Transaction id.
  • message - string: (Optional) add a message to the signature to further authenticate the prooving process.

Outputs:

  • signature - string: Spend signature.

COMMAND_RPC_CHECK_SPEND_PROOF

Prove a spend using a signature. Unlike proving a transaction, it does not requires the destination public address.

Endpoints: check_spend_proof

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"check_spend_proof",
  "params": {
    "txid": "b605cab7e3b9fe1f6d322e3167cd26e1e61c764afa9d733233ef716787786123",
    "message": "TODO(loki): Write example string",
    "signature": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "good": true
}

Inputs:

  • txid - string: Transaction id.
  • message - string: (Optional) Should be the same message used in get_spend_proof.
  • signature - string: Spend signature to confirm.

Outputs:

  • good - bool: States if the inputs proves the spend.

COMMAND_RPC_GET_RESERVE_PROOF

Generate a signature to prove of an available amount in a wallet.

Endpoints: get_reserve_proof

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"get_reserve_proof",
  "params": {
    "all": true,
    "account_index": 2130706433,
    "amount": 123,
    "message": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "signature": "TODO(loki): Write example string"
}

Inputs:

  • all - bool: Proves all wallet balance to be disposable.
  • account_index - uint32: Specify the account from witch to prove reserve. (ignored if all is set to true)
  • amount - uint64: Amount (in atomic units) to prove the account has for reserve. (ignored if all is set to true)
  • message - string: (Optional) add a message to the signature to further authenticate the prooving process.

Outputs:

  • signature - string: Reserve signature.

COMMAND_RPC_CHECK_RESERVE_PROOF

Proves a wallet has a disposable reserve using a signature.

Endpoints: check_reserve_proof

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"check_reserve_proof",
  "params": {
    "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk",
    "message": "TODO(loki): Write example string",
    "signature": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "good": true,
  "total": 123,
  "spent": 123
}

Inputs:

  • address - string: Public address of the wallet.
  • message - string: (Optional) Should be the same message used in get_reserve_proof.
  • signature - string: Reserve signature to confirm.

Outputs:

  • good - bool: States if the inputs proves the reserve.
  • total - uint64
  • spent - uint64

COMMAND_RPC_GET_TRANSFERS

Returns a list of transfers.

Endpoints: get_transfers

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"get_transfers",
  "params": {
    "in": true,
    "out": true,
    "pending": true,
    "failed": true,
    "pool": true,
    "filter_by_height": true,
    "min_height": 123,
    "max_height": 123,
    "account_index": 2130706433,
    "subaddr_indices": [2130706433, ...]
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "in": [{
      "txid": "b605cab7e3b9fe1f6d322e3167cd26e1e61c764afa9d733233ef716787786123",
      "payment_id": "f378710e54eeeb8d",
      "height": 234767,
      "timestamp": 123,
      "amount": 123,
      "fee": 123,
      "note": "TODO(loki): Write example string",
      "destinations": [, ...],
      "type": "TODO(loki): Write example string",
      "unlock_time": 123,
      "subaddr_index": ,
      "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk",
      "double_spend_seen": true,
      "confirmations": 123,
      "suggested_confirmations_threshold": 123
    }, ...],
  "out": [{
      "txid": "b605cab7e3b9fe1f6d322e3167cd26e1e61c764afa9d733233ef716787786123",
      "payment_id": "f378710e54eeeb8d",
      "height": 234767,
      "timestamp": 123,
      "amount": 123,
      "fee": 123,
      "note": "TODO(loki): Write example string",
      "destinations": [, ...],
      "type": "TODO(loki): Write example string",
      "unlock_time": 123,
      "subaddr_index": ,
      "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk",
      "double_spend_seen": true,
      "confirmations": 123,
      "suggested_confirmations_threshold": 123
    }, ...],
  "pending": [{
      "txid": "b605cab7e3b9fe1f6d322e3167cd26e1e61c764afa9d733233ef716787786123",
      "payment_id": "f378710e54eeeb8d",
      "height": 234767,
      "timestamp": 123,
      "amount": 123,
      "fee": 123,
      "note": "TODO(loki): Write example string",
      "destinations": [, ...],
      "type": "TODO(loki): Write example string",
      "unlock_time": 123,
      "subaddr_index": ,
      "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk",
      "double_spend_seen": true,
      "confirmations": 123,
      "suggested_confirmations_threshold": 123
    }, ...],
  "failed": [{
      "txid": "b605cab7e3b9fe1f6d322e3167cd26e1e61c764afa9d733233ef716787786123",
      "payment_id": "f378710e54eeeb8d",
      "height": 234767,
      "timestamp": 123,
      "amount": 123,
      "fee": 123,
      "note": "TODO(loki): Write example string",
      "destinations": [, ...],
      "type": "TODO(loki): Write example string",
      "unlock_time": 123,
      "subaddr_index": ,
      "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk",
      "double_spend_seen": true,
      "confirmations": 123,
      "suggested_confirmations_threshold": 123
    }, ...],
  "pool": [{
      "txid": "b605cab7e3b9fe1f6d322e3167cd26e1e61c764afa9d733233ef716787786123",
      "payment_id": "f378710e54eeeb8d",
      "height": 234767,
      "timestamp": 123,
      "amount": 123,
      "fee": 123,
      "note": "TODO(loki): Write example string",
      "destinations": [, ...],
      "type": "TODO(loki): Write example string",
      "unlock_time": 123,
      "subaddr_index": ,
      "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk",
      "double_spend_seen": true,
      "confirmations": 123,
      "suggested_confirmations_threshold": 123
    }, ...]
}

Inputs:

  • in - bool: (Optional) Include incoming transfers.
  • out - bool: (Optional) Include outgoing transfers.
  • pending - bool: (Optional) Include pending transfers.
  • failed - bool: (Optional) Include failed transfers.
  • pool - bool: (Optional) Include transfers from the daemon's transaction pool.
  • filter_by_height - bool: (Optional) Filter transfers by block height.
  • min_height - uint64: (Optional) Minimum block height to scan for transfers, if filtering by height is enabled.
  • max_height - uint64: (Optional) Maximum block height to scan for transfers, if filtering by height is enabled (defaults to max block height).
  • account_index - uint32: (Optional) Index of the account to query for transfers. (defaults to 0)
  • subaddr_indices - uint32[]: (Optional) List of subaddress indices to query for transfers. (defaults to 0)

Outputs:

  • in - transfer_entry[]
    • txid - string: Transaction ID for this transfer.
    • payment_id - string: Payment ID for this transfer.
    • height - uint64: Height of the first block that confirmed this transfer (0 if not mined yet).
    • timestamp - uint64: UNIX timestamp for when this transfer was first confirmed in a block (or timestamp submission if not mined yet).
    • amount - uint64: Amount transferred.
    • fee - uint64: Transaction fee for this transfer.
    • note - string: Note about this transfer.
    • destinations - transfer_destination[]: Array of transfer destinations.
    • type - string: Type of transfer, one of the following: "in", "out", "pending", "failed", "pool".
    • unlock_time - uint64: Number of blocks until transfer is safely spendable.
    • subaddr_index - cryptonote::subaddress_index: Major & minor index, account and subaddress index respectively.
    • address - string: Address that transferred the funds.
    • double_spend_seen - bool: True if the key image(s) for the transfer have been seen before.
    • confirmations - uint64: Number of block mined since the block containing this transaction (or block height at which the transaction should be added to a block if not yet confirmed).
    • suggested_confirmations_threshold - uint64: Estimation of the confirmations needed for the transaction to be included in a block.
  • out - transfer_entry[]
    • txid - string: Transaction ID for this transfer.
    • payment_id - string: Payment ID for this transfer.
    • height - uint64: Height of the first block that confirmed this transfer (0 if not mined yet).
    • timestamp - uint64: UNIX timestamp for when this transfer was first confirmed in a block (or timestamp submission if not mined yet).
    • amount - uint64: Amount transferred.
    • fee - uint64: Transaction fee for this transfer.
    • note - string: Note about this transfer.
    • destinations - transfer_destination[]: Array of transfer destinations.
    • type - string: Type of transfer, one of the following: "in", "out", "pending", "failed", "pool".
    • unlock_time - uint64: Number of blocks until transfer is safely spendable.
    • subaddr_index - cryptonote::subaddress_index: Major & minor index, account and subaddress index respectively.
    • address - string: Address that transferred the funds.
    • double_spend_seen - bool: True if the key image(s) for the transfer have been seen before.
    • confirmations - uint64: Number of block mined since the block containing this transaction (or block height at which the transaction should be added to a block if not yet confirmed).
    • suggested_confirmations_threshold - uint64: Estimation of the confirmations needed for the transaction to be included in a block.
  • pending - transfer_entry[]
    • txid - string: Transaction ID for this transfer.
    • payment_id - string: Payment ID for this transfer.
    • height - uint64: Height of the first block that confirmed this transfer (0 if not mined yet).
    • timestamp - uint64: UNIX timestamp for when this transfer was first confirmed in a block (or timestamp submission if not mined yet).
    • amount - uint64: Amount transferred.
    • fee - uint64: Transaction fee for this transfer.
    • note - string: Note about this transfer.
    • destinations - transfer_destination[]: Array of transfer destinations.
    • type - string: Type of transfer, one of the following: "in", "out", "pending", "failed", "pool".
    • unlock_time - uint64: Number of blocks until transfer is safely spendable.
    • subaddr_index - cryptonote::subaddress_index: Major & minor index, account and subaddress index respectively.
    • address - string: Address that transferred the funds.
    • double_spend_seen - bool: True if the key image(s) for the transfer have been seen before.
    • confirmations - uint64: Number of block mined since the block containing this transaction (or block height at which the transaction should be added to a block if not yet confirmed).
    • suggested_confirmations_threshold - uint64: Estimation of the confirmations needed for the transaction to be included in a block.
  • failed - transfer_entry[]
    • txid - string: Transaction ID for this transfer.
    • payment_id - string: Payment ID for this transfer.
    • height - uint64: Height of the first block that confirmed this transfer (0 if not mined yet).
    • timestamp - uint64: UNIX timestamp for when this transfer was first confirmed in a block (or timestamp submission if not mined yet).
    • amount - uint64: Amount transferred.
    • fee - uint64: Transaction fee for this transfer.
    • note - string: Note about this transfer.
    • destinations - transfer_destination[]: Array of transfer destinations.
    • type - string: Type of transfer, one of the following: "in", "out", "pending", "failed", "pool".
    • unlock_time - uint64: Number of blocks until transfer is safely spendable.
    • subaddr_index - cryptonote::subaddress_index: Major & minor index, account and subaddress index respectively.
    • address - string: Address that transferred the funds.
    • double_spend_seen - bool: True if the key image(s) for the transfer have been seen before.
    • confirmations - uint64: Number of block mined since the block containing this transaction (or block height at which the transaction should be added to a block if not yet confirmed).
    • suggested_confirmations_threshold - uint64: Estimation of the confirmations needed for the transaction to be included in a block.
  • pool - transfer_entry[]
    • txid - string: Transaction ID for this transfer.
    • payment_id - string: Payment ID for this transfer.
    • height - uint64: Height of the first block that confirmed this transfer (0 if not mined yet).
    • timestamp - uint64: UNIX timestamp for when this transfer was first confirmed in a block (or timestamp submission if not mined yet).
    • amount - uint64: Amount transferred.
    • fee - uint64: Transaction fee for this transfer.
    • note - string: Note about this transfer.
    • destinations - transfer_destination[]: Array of transfer destinations.
    • type - string: Type of transfer, one of the following: "in", "out", "pending", "failed", "pool".
    • unlock_time - uint64: Number of blocks until transfer is safely spendable.
    • subaddr_index - cryptonote::subaddress_index: Major & minor index, account and subaddress index respectively.
    • address - string: Address that transferred the funds.
    • double_spend_seen - bool: True if the key image(s) for the transfer have been seen before.
    • confirmations - uint64: Number of block mined since the block containing this transaction (or block height at which the transaction should be added to a block if not yet confirmed).
    • suggested_confirmations_threshold - uint64: Estimation of the confirmations needed for the transaction to be included in a block.

COMMAND_RPC_GET_TRANSFER_BY_TXID

Show information about a transfer to/from this address.

Endpoints: get_transfer_by_txid

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"get_transfer_by_txid",
  "params": {
    "txid": "b605cab7e3b9fe1f6d322e3167cd26e1e61c764afa9d733233ef716787786123",
    "account_index": 2130706433
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "transfer": {
    "txid": "b605cab7e3b9fe1f6d322e3167cd26e1e61c764afa9d733233ef716787786123",
    "payment_id": "f378710e54eeeb8d",
    "height": 234767,
    "timestamp": 123,
    "amount": 123,
    "fee": 123,
    "note": "TODO(loki): Write example string",
    "destinations": [, ...],
    "type": "TODO(loki): Write example string",
    "unlock_time": 123,
    "subaddr_index": ,
    "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk",
    "double_spend_seen": true,
    "confirmations": 123,
    "suggested_confirmations_threshold": 123
  },
  "transfers": [{
      "txid": "b605cab7e3b9fe1f6d322e3167cd26e1e61c764afa9d733233ef716787786123",
      "payment_id": "f378710e54eeeb8d",
      "height": 234767,
      "timestamp": 123,
      "amount": 123,
      "fee": 123,
      "note": "TODO(loki): Write example string",
      "destinations": [, ...],
      "type": "TODO(loki): Write example string",
      "unlock_time": 123,
      "subaddr_index": ,
      "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk",
      "double_spend_seen": true,
      "confirmations": 123,
      "suggested_confirmations_threshold": 123
    }, ...]
}

Inputs:

  • txid - string: Transaction ID used to find the transfer.
  • account_index - uint32: (Optional) Index of the account to query for the transfer.

Outputs:

  • transfer - transfer_entry
    • txid - string: Transaction ID for this transfer.
    • payment_id - string: Payment ID for this transfer.
    • height - uint64: Height of the first block that confirmed this transfer (0 if not mined yet).
    • timestamp - uint64: UNIX timestamp for when this transfer was first confirmed in a block (or timestamp submission if not mined yet).
    • amount - uint64: Amount transferred.
    • fee - uint64: Transaction fee for this transfer.
    • note - string: Note about this transfer.
    • destinations - transfer_destination[]: Array of transfer destinations.
    • type - string: Type of transfer, one of the following: "in", "out", "pending", "failed", "pool".
    • unlock_time - uint64: Number of blocks until transfer is safely spendable.
    • subaddr_index - cryptonote::subaddress_index: Major & minor index, account and subaddress index respectively.
    • address - string: Address that transferred the funds.
    • double_spend_seen - bool: True if the key image(s) for the transfer have been seen before.
    • confirmations - uint64: Number of block mined since the block containing this transaction (or block height at which the transaction should be added to a block if not yet confirmed).
    • suggested_confirmations_threshold - uint64: Estimation of the confirmations needed for the transaction to be included in a block.
  • transfers - transfer_entry[]
    • txid - string: Transaction ID for this transfer.
    • payment_id - string: Payment ID for this transfer.
    • height - uint64: Height of the first block that confirmed this transfer (0 if not mined yet).
    • timestamp - uint64: UNIX timestamp for when this transfer was first confirmed in a block (or timestamp submission if not mined yet).
    • amount - uint64: Amount transferred.
    • fee - uint64: Transaction fee for this transfer.
    • note - string: Note about this transfer.
    • destinations - transfer_destination[]: Array of transfer destinations.
    • type - string: Type of transfer, one of the following: "in", "out", "pending", "failed", "pool".
    • unlock_time - uint64: Number of blocks until transfer is safely spendable.
    • subaddr_index - cryptonote::subaddress_index: Major & minor index, account and subaddress index respectively.
    • address - string: Address that transferred the funds.
    • double_spend_seen - bool: True if the key image(s) for the transfer have been seen before.
    • confirmations - uint64: Number of block mined since the block containing this transaction (or block height at which the transaction should be added to a block if not yet confirmed).
    • suggested_confirmations_threshold - uint64: Estimation of the confirmations needed for the transaction to be included in a block.

COMMAND_RPC_SIGN

Sign a string.

Endpoints: sign

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"sign",
  "params": {
    "data": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "signature": "TODO(loki): Write example string"
}

Inputs:

  • data - string: Anything you need to sign.

Outputs:

  • signature - string: Signature generated against the "data" and the account public address.

COMMAND_RPC_VERIFY

Verify a signature on a string.

Endpoints: verify

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"verify",
  "params": {
    "data": "TODO(loki): Write example string",
    "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk",
    "signature": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "good": true
}

Inputs:

  • data - string: What should have been signed.
  • address - string: Public address of the wallet used to sign the data.
  • signature - string: Signature generated by sign method.

Outputs:

  • good - bool

COMMAND_RPC_EXPORT_OUTPUTS

Export all outputs in hex format.

Endpoints: export_outputs

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '{ "jsonrpc":"2.0", "id":"0", "method":"export_outputs"}' -H 'Content-Type: application/json'

Example Response:

{
  "outputs_data_hex": "TODO(loki): Write example string"
}

Inputs:

Outputs:

  • outputs_data_hex - string: Wallet outputs in hex format.

COMMAND_RPC_IMPORT_OUTPUTS

Import outputs in hex format.

Endpoints: import_outputs

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"import_outputs",
  "params": {
    "outputs_data_hex": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "num_imported": 123
}

Inputs:

  • outputs_data_hex - string: Wallet outputs in hex format.

Outputs:

  • num_imported - uint64: Number of outputs imported.

COMMAND_RPC_EXPORT_KEY_IMAGES

Export a signed set of key images.

Endpoints: export_key_images

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"export_key_images",
  "params": {
    "requested_only": true
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "offset": 2130706433,
  "signed_key_images": [{
      "key_image": "8d1bd8181bf7d857bdb281e0153d84cd55a3fcaa57c3e570f4a49f935850b5e3",
      "signature": "TODO(loki): Write example string"
    }, ...]
}

Inputs:

  • requested_only - bool: Default false.

Outputs:

  • offset - uint32
  • signed_key_images - signed_key_image[]
    • key_image - string
    • signature - string

COMMAND_RPC_IMPORT_KEY_IMAGES

Import signed key images list and verify their spent status.

Endpoints: import_key_images

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"import_key_images",
  "params": {
    "offset": 2130706433,
    "signed_key_images": [{
        "key_image": "8d1bd8181bf7d857bdb281e0153d84cd55a3fcaa57c3e570f4a49f935850b5e3",
        "signature": "TODO(loki): Write example string"
      }, ...]
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "height": 234767,
  "spent": 123,
  "unspent": 123
}

Inputs:

  • offset - uint32
  • signed_key_images - signed_key_image[]
    • key_image - string: Key image of specific output
    • signature - string: Transaction signature.

Outputs:

  • height - uint64
  • spent - uint64: Amount (in atomic units) spent from those key images.
  • unspent - uint64: Amount (in atomic units) still available from those key images.

COMMAND_RPC_MAKE_URI

Create a payment URI using the official URI spec.

Endpoints: make_uri

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '{ "jsonrpc":"2.0", "id":"0", "method":"make_uri"}' -H 'Content-Type: application/json'

Example Response:

{
  "uri": "TODO(loki): Write example string"
}

Inputs:

Outputs:

  • uri - string: This contains all the payment input information as a properly formatted payment URI.

COMMAND_RPC_PARSE_URI

Parse a payment URI to get payment information.

Endpoints: parse_uri

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"parse_uri",
  "params": {
    "uri": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "uri": {
    "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk",
    "payment_id": "f378710e54eeeb8d",
    "amount": 123,
    "tx_description": "TODO(loki): Write example string",
    "recipient_name": "TODO(loki): Write example string"
  },
  "unknown_parameters": ["TODO(loki): Write example string", ...]
}

Inputs:

  • uri - string: This contains all the payment input information as a properly formatted payment URI.

Outputs:

  • uri - uri_spec: JSON object containing payment information:
    • address - string: Wallet address.
    • payment_id - string: (Optional) 16 or 64 character hexadecimal payment id.
    • amount - uint64: (Optional) the integer amount to receive, in atomic units.
    • tx_description - string: (Optional) Description of the reason for the tx.
    • recipient_name - string: (Optional) name of the payment recipient.
  • unknown_parameters - string[]

COMMAND_RPC_ADD_ADDRESS_BOOK_ENTRY

Add an entry to the address book.

Endpoints: add_address_book

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"add_address_book",
  "params": {
    "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk",
    "payment_id": "f378710e54eeeb8d",
    "description": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "index": 123
}

Inputs:

  • address - string: Public address of the entry.
  • payment_id - string: (Optional), defaults to "0000000000000000000000000000000000000000000000000000000000000000".
  • description - string: (Optional), defaults to "".

Outputs:

  • index - uint64: The index of the address book entry.

COMMAND_RPC_GET_ADDRESS_BOOK_ENTRY

Retrieves entries from the address book.

Endpoints: get_address_book

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"get_address_book",
  "params": {
    "entries": [123, ...]
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "entries": [{
      "index": 123,
      "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk",
      "payment_id": "f378710e54eeeb8d",
      "description": "TODO(loki): Write example string"
    }, ...]
}

Inputs:

  • entries - uint64[]: Indices of the requested address book entries.

Outputs:

  • entries - entry[]: List of address book entries information.
    • index - uint64: Index of entry.
    • address - string: Public address of the entry
    • payment_id - string: (Optional) 64-character hex string to identify a transaction.
    • description - string: Description of this address entry.

COMMAND_RPC_DELETE_ADDRESS_BOOK_ENTRY

Delete an entry from the address book.

Endpoints: delete_address_book

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"delete_address_book",
  "params": {
    "index": 123
  }
}' -H 'Content-Type: application/json'

Example Response:


Inputs:

  • index - uint64: The index of the address book entry.

Outputs:


COMMAND_RPC_RESCAN_SPENT

Rescan the blockchain for spent outputs.

Endpoints: rescan_spent

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '{ "jsonrpc":"2.0", "id":"0", "method":"rescan_spent"}' -H 'Content-Type: application/json'

Example Response:


Inputs:

Outputs:


COMMAND_RPC_REFRESH

Refresh a wallet after openning.

Endpoints: refresh

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"refresh",
  "params": {
    "start_height": 123
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "blocks_fetched": 123,
  "received_money": true
}

Inputs:

  • start_height - uint64: (Optional) The block height from which to start refreshing.

Outputs:

  • blocks_fetched - uint64: Number of new blocks scanned.
  • received_money - bool: States if transactions to the wallet have been found in the blocks.

COMMAND_RPC_START_MINING

Start mining in the loki daemon.

Endpoints: start_mining

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"start_mining",
  "params": {
    "threads_count": 123,
    "do_background_mining": true,
    "ignore_battery": true
  }
}' -H 'Content-Type: application/json'

Example Response:


Inputs:

  • threads_count - uint64: Number of threads created for mining.
  • do_background_mining - bool: Allow to start the miner in smart mining mode.
  • ignore_battery - bool: Ignore battery status (for smart mining only).

Outputs:


COMMAND_RPC_STOP_MINING

Stop mining in the loki daemon.

Endpoints: stop_mining

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '{ "jsonrpc":"2.0", "id":"0", "method":"stop_mining"}' -H 'Content-Type: application/json'

Example Response:


Inputs:

Outputs:


COMMAND_RPC_GET_LANGUAGES

Get a list of available languages for your wallet's seed.

Endpoints: get_languages

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '{ "jsonrpc":"2.0", "id":"0", "method":"get_languages"}' -H 'Content-Type: application/json'

Example Response:

{
  "languages": ["TODO(loki): Write example string", ...]
}

Inputs:

Outputs:

  • languages - string[]: List of available languages.

COMMAND_RPC_CREATE_WALLET

Create a new wallet. You need to have set the argument "'–wallet-dir" when launching loki-wallet-rpc to make this work.

Endpoints: create_wallet

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"create_wallet",
  "params": {
    "filename": "TODO(loki): Write example string",
    "password": "TODO(loki): Write example string",
    "language": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:


Inputs:

  • filename - string: Set the wallet file name.
  • password - string: (Optional) Set the password to protect the wallet.
  • language - string: Language for your wallets' seed.

Outputs:


COMMAND_RPC_OPEN_WALLET

Open a wallet. You need to have set the argument "–-wallet-dir" when launching loki-wallet-rpc to make this work.

The wallet rpc executable may only open wallet files within the same directory as wallet-dir, otherwise use the

"--wallet-file" flag to open specific wallets.

Endpoints: open_wallet

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"open_wallet",
  "params": {
    "filename": "TODO(loki): Write example string",
    "password": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:


Inputs:

  • filename - string: Wallet name stored in "–-wallet-dir".
  • password - string: (Optional) only needed if the wallet has a password defined.

Outputs:


COMMAND_RPC_CLOSE_WALLET

Close the currently opened wallet, after trying to save it.

Endpoints: close_wallet

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '{ "jsonrpc":"2.0", "id":"0", "method":"close_wallet"}' -H 'Content-Type: application/json'

Example Response:


Inputs:

Outputs:


COMMAND_RPC_CHANGE_WALLET_PASSWORD

Change a wallet password.

Endpoints: change_wallet_password

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"change_wallet_password",
  "params": {
    "old_password": "TODO(loki): Write example string",
    "new_password": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:


Inputs:

  • old_password - string: (Optional) Current wallet password, if defined.
  • new_password - string: (Optional) New wallet password, if not blank.

Outputs:


COMMAND_RPC_RESTORE_DETERMINISTIC_WALLET

Endpoints: restore_deterministic_wallet

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"restore_deterministic_wallet",
  "params": {
    "restore_height": 123,
    "filename": "TODO(loki): Write example string",
    "seed": "TODO(loki): Write example string",
    "seed_offset": "TODO(loki): Write example string",
    "password": "TODO(loki): Write example string",
    "language": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk",
  "seed": "TODO(loki): Write example string",
  "info": "TODO(loki): Write example string",
  "was_deprecated": true
}

Inputs:

  • restore_height - uint64: Height in which to start scanning the blockchain for transactions into and out of this Wallet.
  • filename - string: Set the name of the Wallet.
  • seed - string: Mnemonic seed of wallet (25 words).
  • seed_offset - string
  • password - string: Set password for Wallet.
  • language - string: Set language for the wallet.

Outputs:

  • address - string: Public address of wallet.
  • seed - string: Seed of wallet.
  • info - string: Wallet information.
  • was_deprecated - bool

COMMAND_RPC_IS_MULTISIG

Check if a wallet is a multisig one.

Endpoints: is_multisig

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '{ "jsonrpc":"2.0", "id":"0", "method":"is_multisig"}' -H 'Content-Type: application/json'

Example Response:

{
  "multisig": true,
  "ready": true,
  "threshold": 2130706433,
  "total": 2130706433
}

Inputs:

Outputs:

  • multisig - bool: States if the wallet is multisig.
  • ready - bool
  • threshold - uint32: Amount of signature needed to sign a transfer.
  • total - uint32: Total amount of signature in the multisig wallet.

COMMAND_RPC_PREPARE_MULTISIG

Prepare a wallet for multisig by generating a multisig string to share with peers.

Endpoints: prepare_multisig

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '{ "jsonrpc":"2.0", "id":"0", "method":"prepare_multisig"}' -H 'Content-Type: application/json'

Example Response:

{
  "multisig_info": "TODO(loki): Write example string"
}

Inputs:

Outputs:

  • multisig_info - string: Multisig string to share with peers to create the multisig wallet.

COMMAND_RPC_MAKE_MULTISIG

Make a wallet multisig by importing peers multisig string.

Endpoints: make_multisig

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"make_multisig",
  "params": {
    "multisig_info": ["TODO(loki): Write example string", ...],
    "threshold": 2130706433,
    "password": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk",
  "multisig_info": "TODO(loki): Write example string"
}

Inputs:

  • multisig_info - string[]: List of multisig string from peers.
  • threshold - uint32: Amount of signatures needed to sign a transfer. Must be less or equal than the amount of signature in multisig_info.
  • password - string: Wallet password.

Outputs:

  • address - string: Multisig wallet address.
  • multisig_info - string: Multisig string to share with peers to create the multisig wallet (extra step for N-1/N wallets).

COMMAND_RPC_EXPORT_MULTISIG

Export multisig info for other participants.

Endpoints: export_multisig_info

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '{ "jsonrpc":"2.0", "id":"0", "method":"export_multisig_info"}' -H 'Content-Type: application/json'

Example Response:

{
  "info": "TODO(loki): Write example string"
}

Inputs:

Outputs:

  • info - string: Multisig info in hex format for other participants.

COMMAND_RPC_IMPORT_MULTISIG

Import multisig info from other participants.

Endpoints: import_multisig_info

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"import_multisig_info",
  "params": {
    "info": ["TODO(loki): Write example string", ...]
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "n_outputs": 123
}

Inputs:

  • info - string[]: List of multisig info in hex format from other participants.

Outputs:

  • n_outputs - uint64: Number of outputs signed with those multisig info.

COMMAND_RPC_FINALIZE_MULTISIG

Turn this wallet into a multisig wallet, extra step for N-1/N wallets.

Endpoints: finalize_multisig

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"finalize_multisig",
  "params": {
    "password": "TODO(loki): Write example string",
    "multisig_info": ["TODO(loki): Write example string", ...]
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk"
}

Inputs:

  • password - string: Wallet password.
  • multisig_info - string[]: List of multisig string from peers.

Outputs:

  • address - string: Multisig wallet address.

COMMAND_RPC_EXCHANGE_MULTISIG_KEYS

Endpoints: exchange_multisig_keys

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"exchange_multisig_keys",
  "params": {
    "password": "TODO(loki): Write example string",
    "multisig_info": ["TODO(loki): Write example string", ...]
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk",
  "multisig_info": "TODO(loki): Write example string"
}

Inputs:

  • password - string: Wallet password.
  • multisig_info - string[]: List of multisig string from peers.

Outputs:

  • address - string: Multisig wallet address.
  • multisig_info - string: Multisig string to share with peers to create the multisig wallet.

COMMAND_RPC_SIGN_MULTISIG

Sign a transaction in multisig.

Endpoints: sign_multisig

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"sign_multisig",
  "params": {
    "tx_data_hex": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "tx_data_hex": "TODO(loki): Write example string",
  "tx_hash_list": ["TODO(loki): Write example string", ...]
}

Inputs:

  • tx_data_hex - string: Multisig transaction in hex format, as returned by transfer under multisig_txset.

Outputs:

  • tx_data_hex - string: Multisig transaction in hex format.
  • tx_hash_list - string[]: List of transaction Hash.

COMMAND_RPC_SUBMIT_MULTISIG

Submit a signed multisig transaction.

Endpoints: submit_multisig

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"submit_multisig",
  "params": {
    "tx_data_hex": "TODO(loki): Write example string"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "tx_hash_list": ["TODO(loki): Write example string", ...]
}

Inputs:

  • tx_data_hex - string: Multisig transaction in hex format, as returned by sign_multisig under tx_data_hex.

Outputs:

  • tx_hash_list - string[]: List of transaction hash.

COMMAND_RPC_GET_VERSION

Get RPC version Major & Minor integer-format, where Major is the first 16 bits and Minor the last 16 bits.

Endpoints: get_version

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '{ "jsonrpc":"2.0", "id":"0", "method":"get_version"}' -H 'Content-Type: application/json'

Example Response:

{
  "version": 2130706433
}

Inputs:

Outputs:

  • version - uint32: RPC version, formatted with Major * 2^16 + Minor(Major encoded over the first 16 bits, and Minor over the last 16 bits).

COMMAND_RPC_STAKE

Stake for Service Node.

Endpoints: stake

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"stake",
  "params": {
    "destination": "TODO(loki): Write example string",
    "amount": 123,
    "subaddr_indices": [2130706433, ...],
    "service_node_key": "4a8c30cea9e729b06c91132295cce32d2a8e6e5bcf7b74a998e2ee1b3ed590b3",
    "priority": 2130706433,
    "get_tx_key": true,
    "do_not_relay": true,
    "get_tx_hex": true,
    "get_tx_metadata": true
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "tx_hash": "b605cab7e3b9fe1f6d322e3167cd26e1e61c764afa9d733233ef716787786123",
  "tx_key": "TODO(loki): Write example string",
  "amount": 123,
  "fee": 123,
  "tx_blob": "TODO(loki): Write example string",
  "tx_metadata": "TODO(loki): Write example string",
  "multisig_txset": "TODO(loki): Write example string",
  "unsigned_txset": "TODO(loki): Write example string"
}

Inputs:

  • destination - string: Primary Public address that the rewards will go to.
  • amount - uint64: Amount of Loki to stake in atomic units.
  • subaddr_indices - uint32[]: (Optional) Transfer from this set of subaddresses. (Defaults to 0)
  • service_node_key - string: Service Node Public Address.
  • priority - uint32: Set a priority for the transaction. Accepted Values are: 0-3 for: default, unimportant, normal, elevated, priority.
  • get_tx_key - bool: (Optional) Return the transaction key after sending.
  • do_not_relay - bool: (Optional) If true, the newly created transaction will not be relayed to the loki network. (Defaults to false)
  • get_tx_hex - bool: Return the transaction as hex string after sending (Defaults to false)
  • get_tx_metadata - bool: Return the metadata needed to relay the transaction. (Defaults to false)

Outputs:

  • tx_hash - string: Publically searchable transaction hash.
  • tx_key - string: Transaction key if get_tx_key is true, otherwise, blank string.
  • amount - uint64: Amount transferred for the transaction in atomic units.
  • fee - uint64: Value in atomic units of the fee charged for the tx.
  • tx_blob - string: Raw transaction represented as hex string, if get_tx_hex is true.
  • tx_metadata - string: Set of transaction metadata needed to relay this transfer later, if get_tx_metadata is true.
  • multisig_txset - string: Set of multisig transactions in the process of being signed (empty for non-multisig).
  • unsigned_txset - string: Set of unsigned tx for cold-signing purposes.

COMMAND_RPC_REGISTER_SERVICE_NODE

Register Service Node.

Endpoints: register_service_node

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"register_service_node",
  "params": {
    "register_service_node_str": "TODO(loki): Write example string",
    "get_tx_key": true,
    "do_not_relay": true,
    "get_tx_hex": true,
    "get_tx_metadata": true
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "tx_hash": "b605cab7e3b9fe1f6d322e3167cd26e1e61c764afa9d733233ef716787786123",
  "tx_key": "TODO(loki): Write example string",
  "amount": 123,
  "fee": 123,
  "tx_blob": "TODO(loki): Write example string",
  "tx_metadata": "TODO(loki): Write example string",
  "multisig_txset": "TODO(loki): Write example string",
  "unsigned_txset": "TODO(loki): Write example string"
}

Inputs:

  • register_service_node_str - string: String supplied by the prepare_registration command.
  • get_tx_key - bool: (Optional) Return the transaction key after sending.
  • do_not_relay - bool: (Optional) If true, the newly created transaction will not be relayed to the loki network. (Defaults to false)
  • get_tx_hex - bool: Return the transaction as hex string after sending (Defaults to false)
  • get_tx_metadata - bool: Return the metadata needed to relay the transaction. (Defaults to false)

Outputs:

  • tx_hash - string: Publically searchable transaction hash.
  • tx_key - string: Transaction key if get_tx_key is true, otherwise, blank string.
  • amount - uint64: Amount transferred for the transaction in atomic units.
  • fee - uint64: Value in atomic units of the fee charged for the tx.
  • tx_blob - string: Raw transaction represented as hex string, if get_tx_hex is true.
  • tx_metadata - string: Set of transaction metadata needed to relay this transfer later, if get_tx_metadata is true.
  • multisig_txset - string: Set of multisig transactions in the process of being signed (empty for non-multisig).
  • unsigned_txset - string: Set of unsigned tx for cold-signing purposes.

COMMAND_RPC_REQUEST_STAKE_UNLOCK

Request to unlock stake by deregistering Service Node.

Endpoints: request_stake_unlock

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"request_stake_unlock",
  "params": {
    "service_node_key": "4a8c30cea9e729b06c91132295cce32d2a8e6e5bcf7b74a998e2ee1b3ed590b3"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "unlocked": true,
  "msg": "TODO(loki): Write example string"
}

Inputs:

  • service_node_key - string: Service Node Public Key.

Outputs:

  • unlocked - bool: States if stake has been unlocked.
  • msg - string: Information on the unlocking process.

COMMAND_RPC_CAN_REQUEST_STAKE_UNLOCK

Check if Service Node can unlock it's stake.

Endpoints: can_request_stake_unlock

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"can_request_stake_unlock",
  "params": {
    "service_node_key": "4a8c30cea9e729b06c91132295cce32d2a8e6e5bcf7b74a998e2ee1b3ed590b3"
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "can_unlock": true,
  "msg": "TODO(loki): Write example string"
}

Inputs:

  • service_node_key - string: Service node public address.

Outputs:

  • can_unlock - bool: States if the stake can be locked.
  • msg - string: Information on the unlocking process.

COMMAND_RPC_VALIDATE_ADDRESS

Parse an address to validate if it's a valid Loki address.

Endpoints: validate_address

Example Request:

curl -X POST http://127.0.0.1:22023/json_rpc -d '
{
  "jsonrpc":"2.0", "id":"0", "method":"validate_address",
  "params": {
    "address": "L8KJf3nRQ53NTX1YLjtHryjegFRa3ZCEGLKmRxUfvkBWK19UteEacVpYqpYscSJ2q8WRuHPFdk7Q5W8pQB7Py5kvUs8vKSk",
    "any_net_type": true,
    "allow_openalias": true
  }
}' -H 'Content-Type: application/json'

Example Response:

{
  "valid": true,
  "integrated": true,
  "subaddress": true,
  "nettype": "MAINNET",
  "openalias_address": "TODO(loki): Write example string"
}

Inputs:

  • address - string: Address to check.
  • any_net_type - bool
  • allow_openalias - bool

Outputs:

  • valid - bool: States if it is a valid Loki address.
  • integrated - bool: States if it is an integrated address.
  • subaddress - bool: States if it is a subaddress.
  • nettype - string: States if the nettype is mainet, testnet, stagenet.
  • openalias_address - string