Wallet πŸ“ž RPC calls

Introduction

This is a list of the oxen-wallet-rpc calls, their inputs and outputs, and examples of each. The program oxen-wallet-rpc replaced the rpc interface that was in simplewallet and then oxen-wallet-cli.
All oxen-wallet-rpc methods use the same JSON RPC interface. For example:
1
IP=127.0.0.1
2
PORT=18082
3
METHOD="make_integrated_address"
4
PARAMS="{\"payment_id\":\"1234567890123456789012345678900012345678901234567890123456789000\"}"
5
curl \
6
-X POST http://$IP:$PORT/json_rpc \
7
-d '{"jsonrpc":"2.0","id":"0","method":"'$METHOD'","params":'"$PARAMS"'}' \
8
-H 'Content-Type: application/json'
Copied!
If the oxen-wallet-rpc was executed with the --rpc-login argument as username:password, then follow this example:
1
IP=127.0.0.1
2
PORT=18082
3
METHOD="make_integrated_address"
4
PARAMS="{\"payment_id\":\"1234567890123456789012345678900012345678901234567890123456789000\"}"
5
curl \
6
-u username:password --digest \
7
-X POST http://$IP:$PORT/json_rpc \
8
-d '{"jsonrpc":"2.0","id":"0","method":"'$METHOD'","params":'"$PARAMS"'}' \
9
-H 'Content-Type: application/json'
Copied!
Note: "atomic units" refer to the smallest fraction of 1 $OXEN according to the oxend implementation. 1 $OXEN = 1e9 atomic units.

Index of JSON RPC Methods:

    get_balance
    get_address
    get_address_index
    create_address
    label_address
    get_accounts
    create_account
    label_account
    get_account_tags
    tag_accounts
    untag_accounts
    set_account_tag_description
    get_height
    transfer
    transfer_split
    sign_transfer
    submit_transfer
    sweep_dust
    sweep_all
    sweep_single
    relay_tx
    store
    get_payments
    get_bulk_payments
    incoming_transfers
    query_key
    make_integrated_address
    split_integrated_address
    stop_wallet
    rescan_blockchain
    set_tx_notes
    get_tx_notes
    set_attribute
    get_attribute
    get_tx_key
    check_tx_key
    get_tx_proof
    check_tx_proof
    get_spend_proof
    check_spend_proof
    get_reserve_proof
    check_reserve_proof
    get_transfers
    get_transfer_by_txid
    sign
    verify
    export_outputs
    import_outputs
    export_key_images
    import_key_images
    make_uri
    parse_uri
    get_address_book
    add_address_book
    delete_address_book
    refresh
    rescan_spent
    start_mining
    stop_mining
    get_languages
    create_wallet
    open_wallet
    close_wallet
    change_wallet_password
    is_multisig
    prepare_multisig
    make_multisig
    export_multisig_info
    import_multisig_info
    finalize_multisig
    sign_multisig
    submit_multisig
    get_version

JSON RPC Methods:

get_balance

Return the wallet's balance.
Alias: getbalance.
Inputs:
    account_index - unsigned int; Return balance for this account.
    address_indices - array of unsigned int; (Optional) Return balance detail for those subaddresses.
Outputs:
    balance - unsigned int; The total balance of the current Oxen-wallet-rpc in session.
    unlocked_balance - unsigned int; Unlocked funds are those funds that are sufficiently deep enough in the Oxen blockchain to be considered safe to spend.
    multisig_import_needed - boolean; True if importing multisig data is needed for returning a correct balance.
    per_subaddress - array of subaddress information; Balance information for each subaddress in an account.
      address_index - unsigned int; Index of the subaddress in the account.
      address - string; Address at this index. Base58 representation of the public keys.
      balance - unsigned int; Balance for the subaddress (locked or unlocked).
      unlocked_balance - unsigned int; Unlocked balance for the subaddress.
      label - string; Label for the subaddress.
      num_unspent_outputs - unsigned int; Number of unspent outputs available for the subaddress.
Example:
1
$ curl -X POST http://127.0.0.1:18082/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"get_balance","params":{"account_index":0,"address_indices":[0,1]}}' -H 'Content-Type: application/json'
2
{
3
"id": "0",
4
"jsonrpc": "2.0",
5
"result": {
6
"balance": 157443303037455077,
7
"multisig_import_needed": false,
8
"per_subaddress": [{
9
"address": "55LTR8KniP4LQGJSPtbYDacR7dz8RBFnsfAKMaMuwUNYX6aQbBcovzDPyrQF9KXF9tVU6Xk3K8no1BywnJX6GvZX8yJsXvt",
10
"address_index": 0,
11
"balance": 157360317826255077,
12
"label": "Primary account",
13
"num_unspent_outputs": 5281,
14
"unlocked_balance": 157360317826255077
15
},{
16
"address": "7BnERTpvL5MbCLtj5n9No7J5oE5hHiB3tVCK5cjSvCsYWD2WRJLFuWeKTLiXo5QJqt2ZwUaLy2Vh1Ad51K7FNgqcHgjW85o",
17
"address_index": 1,
18
"balance": 59985211200000,
19
"label": "",
20
"num_unspent_outputs": 1,
21
"unlocked_balance": 59985211200000
22
}],
23
"unlocked_balance": 157443303037455077
24
}
25
}
Copied!

get_address

Return the wallet's addresses for an account. Optionally filter for specific set of subaddresses.
Alias: getaddress.
Inputs:
    account_index - unsigned int; Return subaddresses for this account.
    address_index - array of unsigned int; (Optional) List of subaddresses to return from an account.
Outputs:
    address - string; The 95-character hex address string of the oxen-wallet-rpc in session.
    addresses array of addresses informations
      address string; The 95-character hex (sub)address string.
      label string; Label of the (sub)address
      address_index unsigned int; index of the subaddress
      used boolean; states if the (sub)address has already received funds
Example:
1
$ curl -X POST http://127.0.0.1:18082/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"get_address","params":{"account_index":0,"address_index":[0,1,4]}}' -H 'Content-Type: application/json'
2
{
3
"id": "0",
4
"jsonrpc": "2.0",
5
"result": {
6
"address": "55LTR8KniP4LQGJSPtbYDacR7dz8RBFnsfAKMaMuwUNYX6aQbBcovzDPyrQF9KXF9tVU6Xk3K8no1BywnJX6GvZX8yJsXvt",
7
"addresses": [{
8
"address": "55LTR8KniP4LQGJSPtbYDacR7dz8RBFnsfAKMaMuwUNYX6aQbBcovzDPyrQF9KXF9tVU6Xk3K8no1BywnJX6GvZX8yJsXvt",
9
"address_index": 0,
10
"label": "Primary account",
11
"used": true
12
},{
13
"address": "7BnERTpvL5MbCLtj5n9No7J5oE5hHiB3tVCK5cjSvCsYWD2WRJLFuWeKTLiXo5QJqt2ZwUaLy2Vh1Ad51K7FNgqcHgjW85o",
14
"address_index": 1,
15
"label": "",
16
"used": true
17
},{
18
"address": "77xa6Dha7kzCQuvmd8iB5VYoMkdenwCNRU9khGhExXQ8KLL3z1N1ZATBD1sFPenyHWT9cm4fVFnCAUApY53peuoZFtwZiw5",
19
"address_index": 4,
20
"label": "test2",
21
"used": true
22
}]
23
}
24
}
Copied!

get_address_index

Get account and address indexes from a specific (sub)address
Alias: None.
Inputs:
    address - String; (sub)address to look for.
Outputs:
    index - subaddress informations
      major unsigned int; Account index.
      minor unsigned int; Address index.
Example:
1
$ curl -X POST http://127.0.0.1:18082/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"get_address_index","params":{"address":"7BnERTpvL5MbCLtj5n9No7J5oE5hHiB3tVCK5cjSvCsYWD2WRJLFuWeKTLiXo5QJqt2ZwUaLy2Vh1Ad51K7FNgqcHgjW85o"}}' -H 'Content-Type: application/json'
2
{
3
"id": "0",
4
"jsonrpc": "2.0",
5
"result": {
6
"index": {
7
"major": 0,
8
"minor": 1
9
}
10
}
11
}
Copied!

create_address

Create a new address for an account. Optionally, label the new address.
Alias: None.
Inputs:
    account_index - unsigned int; Create a new address for this account.
    label - string; (Optional) Label for the new address.
Outputs:
    address - string; Newly created address. Base58 representation of the public keys.
    address_index - unsigned int; Index of the new address under the input account.
Example:
1
$ curl -X POST http://127.0.0.1:18082/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"create_address","params":{"account_index":0,"label":"new-sub"}}' -H 'Content-Type: application/json'
2
{
3
"id": "0",
4
"jsonrpc": "2.0",
5
"result": {
6
"address": "7BG5jr9QS5sGMdpbBrZEwVLZjSKJGJBsXdZLt8wiXyhhLjy7x2LZxsrAnHTgD8oG46ZtLjUGic2pWc96GFkGNPQQDA3Dt7Q",
7
"address_index": 5
8
}
9
}
Copied!

label_address

Label an address.
Alias: None.
Inputs:
    index - subaddress index; JSON Object containing the major & minor address index:
      major - unsigned int; Account index for the subaddress.
      minor - unsigned int; Index of the subaddress in the account.
    label - string; Label for the address.
Outputs: None.
Example:
1
$ curl -X POST http://127.0.0.1:18082/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"label_address","params":{"index":{"major":0,"minor":5},"label":"myLabel"}}' -H 'Content-Type: application/json'
2
{
3
"id": "0",
4
"jsonrpc": "2.0",
5
"result": {
6
}
7
}
Copied!

get_accounts

Get all accounts for a wallet. Optionally filter accounts by tag.
Alias: None.
Inputs:
    tag - string; (Optional) Tag for filtering accounts.
Outputs:
    subaddress_accounts - array of subaddress account information:
      account_index - unsigned int; Index of the account.
      balance - unsigned int; Balance of the account (locked or unlocked).
      base_address - string; Base64 representation of the first subaddress in the account.
      label - string; (Optional) Label of the account.
      tag - string; (Optional) Tag for filtering accounts.
      unlocked_balance - unsigned int; Unlocked balance for the account.
    total_balance - unsigned int; Total balance of the selected accounts (locked or unlocked).
    total_unlocked_balance - unsigned int; Total unlocked balance of the selected accounts.
Example:
1
$ curl -X POST http://localhost:18082/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"get_accounts","params":{"tag":"myTag"}}' -H 'Content-Type: application/json'
2
{
3
"id": "0",
4
"jsonrpc": "2.0",
5
"result": {
6
"subaddress_accounts": [{
7
"account_index": 0,
8
"balance": 157663195572433688,
9
"base_address": "55LTR8KniP4LQGJSPtbYDacR7dz8RBFnsfAKMaMuwUNYX6aQbBcovzDPyrQF9KXF9tVU6Xk3K8no1BywnJX6GvZX8yJsXvt",
10
"label": "Primary account",
11
"tag": "myTag",
12
"unlocked_balance": 157443303037455077
13
},{
14
"account_index": 1,
15
"balance": 0,
16
"base_address": "77Vx9cs1VPicFndSVgYUvTdLCJEZw9h81hXLMYsjBCXSJfUehLa9TDW3Ffh45SQa7xb6dUs18mpNxfUhQGqfwXPSMrvKhVp",
17
"label": "Secondary account",
18
"tag": "myTag",
19
"unlocked_balance": 0
20
}],
21
"total_balance": 157663195572433688,
22
"total_unlocked_balance": 157443303037455077
23
}
24
}
Copied!

create_account

Create a new account with an optional label.
Alias: None.
Inputs:
    label - string; (Optional) Label for the account.
Outputs:
    account_index - unsigned int; Index of the new account.
    address - string; Address for this account. Base58 representation of the public keys.
Example:
1
$ curl -X POST http://localhost:18082/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"create_account","params":{"label":"Secondary account"}}' -H 'Content-Type: application/json'
2
{
3
"id": "0",
4
"jsonrpc": "2.0",
5
"result": {
6
"account_index": 1,
7
"address": "77Vx9cs1VPicFndSVgYUvTdLCJEZw9h81hXLMYsjBCXSJfUehLa9TDW3Ffh45SQa7xb6dUs18mpNxfUhQGqfwXPSMrvKhVp"
8
}
9
}
Copied!

label_account

Label an account.
Alias: None.
Inputs:
    account_index - unsigned int; Apply label to account at this index.
    label - string; Label for the account.
Outputs: None.
Example:
1
$ curl -X POST http://localhost:18082/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"label_account","params":{"account_index":0,"label":"Primary account"}}' -H 'Content-Type: application/json'
2
{
3
"id": "0",
4
"jsonrpc": "2.0",
5
"result": {
6
"account_tags": [{
7
"accounts": [0,1],
8
"label": "",
9
"tag": "myTag"
10
}]
11
}
12
}
Copied!

get_account_tags

Get a list of user-defined account tags.
Alias: None.
Inputs: None.
Outputs:
    account_tags - array of account tag information:
      tag - string; Filter tag.
      label - string; Label for the tag.
      accounts - array of int; List of tagged account indices.
Example:
1
$ curl -X POST http://localhost:18082/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"get_account_tags","params":""}' -H 'Content-Type: application/json'
2
{
3
"id": "0",
4
"jsonrpc": "2.0",
5
"result": {
6
"account_tags": [{
7
"accounts": [0],
8
"label": "Test tag",
9
"tag": "myTag"
10
}]
11
}
12
}
Copied!

tag_accounts

Apply a filtering tag to a list of accounts.
Alias: None.
Inputs:
    tag - string; Tag for the accounts.
    accounts - array of unsigned int; Tag this list of accounts.
Outputs: None.
Example:
1
$ curl -X POST http://localhost:18082/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"tag_accounts","params":{"tag":"myTag","accounts":[0,1]}}' -H 'Content-Type: application/json'
2
{
3
"id": "0",
4
"jsonrpc": "2.0",
5
"result": {
6
}
7
}
Copied!

untag_accounts

Remove filtering tag from a list of accounts.
Alias: None.
Inputs:
    accounts - array of unsigned int; Remove tag from this list of accounts.
Outputs: None.
Example:
1
$ curl -X POST http://localhost:18082/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"untag_accounts","params":{"accounts":[1]}}' -H 'Content-Type: application/json'
2
{
3
"id": "0",
4
"jsonrpc": "2.0",
5
"result": {
6
}
7
}
Copied!

set_account_tag_description

Set description for an account tag.
Alias: None.
Inputs:
    tag - string; Set a description for this tag.
    description - string; Description for the tag.
Outputs: None.
Example:
1
$ curl -X POST http://localhost:18082/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"set_account_tag_description","params":{"tag":"myTag","description":"Test tag"}}' -H 'Content-Type: application/json'
2
{
3
"id": "0",
4
"jsonrpc": "2.0",
5
"result": {
6
}
7
}
Copied!

get_height

Returns the wallet's current block height.
Alias: getheight.
Inputs: None.
Outputs:
    height - unsigned int; The current oxen-wallet-rpc's blockchain height. If the wallet has been offline for a long time, it may need to catch up with the daemon.
Example:
1
$ curl -X POST http://127.0.0.1:18082/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"get_height"}' -H 'Content-Type: application/json'
2
{
3
"id": "0",
4
"jsonrpc": "2.0",
5
"result": {
6
"height": 145545
7
}
8
}
Copied!

transfer

Send $OXEN to a number of recipients.
Alias: None.
Inputs:
    destinations - array of destinations to receive $OXEN:
      amount - unsigned int; Amount to send to each destination, in atomic units.
      address - string; Destination public address.
    account_index - unsigned int; (Optional) Transfer from this account index. (Defaults to 0)
    subaddr_indices - array of unsigned int; (Optional) Transfer from this set of subaddresses. (Defaults to 0)
    priority - unsigned int; Set a priority for the transaction. Accepted Values are: 0-3 for: default, unimportant, normal, elevated, priority.
    mixin - unsigned int; Number of outputs from the blockchain to mix with (0 means no mixing).
    ring_size - unsigned int; Number of outputs to mix in the transaction (this output + N decoys from the blockchain).
    unlock_time - unsigned int; Number of blocks before the $OXEN 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_key - boolean; (Optional) Return the transaction key after sending.
    do_not_relay - boolean; (Optional) If true, the newly created transaction will not be relayed to the Oxen network. (Defaults to false)
    get_tx_hex - boolean; Return the transaction as hex string after sending (Defaults to false)
    get_tx_metadata - boolean; Return the metadata needed to relay the transaction. (Defaults to false)
Outputs:
    amount - Amount transferred for the transaction.
    fee - Integer value of the fee charged for the txn.
    multisig_txset - Set of multisig transactions in the process of being signed (empty for non-multisig).
    tx_blob - Raw transaction represented as hex string, if get_tx_hex is true.
    tx_hash - String for the publically searchable transaction hash.
    tx_key - String for the transaction key if get_tx_key is true, otherwise, blank string.
    tx_metadata - Set of transaction metadata needed to relay this transfer later, if get_tx_metadata is true.
    unsigned_txset - String. Set of unsigned tx for cold-signing purposes.
Example:
1
$ curl -X POST http://127.0.0.1:18082/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"transfer","params":{"destinations":[{"amount":100000000000,"address":"7BnERTpvL5MbCLtj5n9No7J5oE5hHiB3tVCK5cjSvCsYWD2WRJLFuWeKTLiXo5QJqt2ZwUaLy2Vh1Ad51K7FNgqcHgjW85o"},{"amount":200000000000,"address":"75sNpRwUtekcJGejMuLSGA71QFuK1qcCVLZnYRTfQLgFU5nJ7xiAHtR5ihioS53KMe8pBhH61moraZHyLoG4G7fMER8xkNv"}],"account_index":0,"subaddr_indices":[0],"priority":0,"ring_size":7,"get_tx_key": true}}' -H 'Content-Type: application/json'
2
{
3
"id": "0",
4
"jsonrpc": "2.0",
5
"result": {
6
"amount": 300000000000,
7
"fee": 86897600000,
8
"multisig_txset": "",
9
"tx_blob": "",
10
"tx_hash": "7663438de4f72b25a0e395b770ea9ecf7108cd2f0c4b75be0b14a103d3362be9",
11
"tx_key": "25c9d8ec20045c80c93d665c9d3684aab7335f8b2cd02e1ba2638485afd1c70e236c4bdd7a2f1cb511dbf466f13421bdf8df988b7b969c448ca6239d7251490e4bf1bbf9f6ffacffdcdc93b9d1648ec499eada4d6b4e02ce92d4a1c0452e5d009fbbbf15b549df8856205a4c7bda6338d82c823f911acd00cb75850b198c5803",
12
"tx_metadata": "",
13
"unsigned_txset": ""
14
}
15
}
Copied!

transfer_split

Same as transfer, but can split into more than one tx if necessary.
Alias: None.
Inputs:
    destinations - array of destinations to receive $OXEN:
      amount - unsigned int; Amount to send to each destination, in atomic units.
      address - string; Destination public address.
    account_index - unsigned int; (Optional) Transfer from this account index. (Defaults to 0)
    subaddr_indices - array of unsigned int; (Optional) Transfer from this set of subaddresses. (Defaults to 0)
    mixin - unsigned int; Number of outputs from the blockchain to mix with (0 means no mixing).
    ring_size - unsigned int; Sets ringsize to n (mixin + 1).
    unlock_time - unsigned int; Number of blocks before the $OXEN 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 - boolean; (Optional) Return the transaction keys after sending.
    priority - unsigned int; Set a priority for the transactions. Accepted Values are: 0-3 for: default, unimportant, normal, elevated, priority.
    do_not_relay - boolean; (Optional) If true, the newly created transaction will not be relayed to the Oxen network. (Defaults to false)
    get_tx_hex - boolean; Return the transactions as hex string after sending
    new_algorithm - boolean; True to use the new transaction construction algorithm, defaults to false.
    get_tx_metadata - boolean; Return list of transaction metadata needed to relay the transfer later.
Outputs:
    tx_hash_list - array of: string. The tx hashes of every transaction.
    tx_key_list - array of: string. The transaction keys for every transaction.
    amount_list - array of: integer. The amount transferred for every transaction.
    fee_list - array of: integer. The amount of fees paid for every transaction.
    tx_blob_list - array of: string. The tx as hex string for every transaction.
    tx_metadata_list - array of: 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.
Example:
1
$ curl -X POST http://127.0.0.1:18082/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"transfer_split","params":{"destinations":[{"amount":1000000000000,"address":"7BnERTpvL5MbCLtj5n9No7J5oE5hHiB3tVCK5cjSvCsYWD2WRJLFuWeKTLiXo5QJqt2ZwUaLy2Vh1Ad51K7FNgqcHgjW85o"},{"amount":2000000000000,"address":"75sNpRwUtekcJGejMuLSGA71QFuK1qcCVLZnYRTfQLgFU5nJ7xiAHtR5ihioS53KMe8pBhH61moraZHyLoG4G7fMER8xkNv"}],"account_index":0,"subaddr_indices":[0],"priority":0,"ring_size":7,"get_tx_key": true}}' -H 'Content-Type: application/json'
2
{
3
"id": "0",
4
"jsonrpc": "2.0",
5
"result": {
6
"amount_list": [3000000000000],
7
"fee_list": [85106400000],
8
"multisig_txset": "",
9
"tx_hash_list": ["c8d815f48f27d53fdaf198a74b292a91bfaf87529a9a9a9ee66079a890b3b58b"],
10
"unsigned_txset": ""
11
}
12
}
Copied!

sign_transfer

Sign a transaction created on a read-only wallet (in cold-signing process)
Alias: None.
Inputs:
    unsigned_txset - string. Set of unsigned tx returned by "transfer" or "transfer_split" methods.
    export_raw - boolean; (Optional) If true, return the raw transaction data. (Defaults to false)
Outputs:
    signed_txset - string. Set of signed tx to be used for submitting transfer.
    tx_hash_list - array of: string. The tx hashes of every transaction.
    tx_raw_list - array of: string. The tx raw data of every transaction.
In the example below, we first generate an unsigned_txset on a read only wallet before signing it:
Generate unsigned_txset using the above "transfer" method on read-only wallet:
1
curl -X POST http://127.0.0.1:18082/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"transfer","params":{"destinations":[{"amount":1000000000000,"address":"7BnERTpvL5MbCLtj5n9No7J5oE5hHiB3tVCK5cjSvCsYWD2WRJLFuWeKTLiXo5QJqt2ZwUaLy2Vh1Ad51K7FNgqcHgjW85o"}],"account_index":0,"subaddr_indices":[0],"priority":0,"ring_size":7,"do_not_relay":true,"get_tx_hex":true}}' -H 'Content-Type: application/json'
2
{
3
"id": "0",
4
"jsonrpc": "2.0",
5
"result": {
6
"amount": 1000000000000,
7
"fee": 15202740000,
8
"multisig_txset": "",
9
"tx_blob": "...long_hex...",
10
"tx_hash": "c648ba0a049e5ce4ec21361dbf6e4b21eac0f828eea9090215de86c76b31d0a4",
11
"tx_key": "",
12
"tx_metadata": "",
13
"unsigned_txset": "...long_hex..."
14
}
15
}
Copied!
Sign tx using the previously generated unsigned_txset
1
$ curl -X POST http://127.0.0.1:18082/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"sign_transfer","params":{"unsigned_txset":...long_hex..."}}' -H 'Content-Type: application/json'
2
{
3
"id": "0",
4
"jsonrpc": "2.0",
5
"result": {
6
"signed_txset": "...long_hex...",
7
"tx_hash_list": ["ff2e2d49fbfb1c9a55754f786576e171c8bf21b463a74438df604b7fa6cebc6d"]
8
}
9
}
Copied!

submit_transfer

Submit a previously signed transaction on a read-only wallet (in cold-signing process).
Alias: None.
Inputs:
    tx_data_hex - string; Set of signed tx returned by "sign_transfer"
Outputs:
    tx_hash_list - array of: string. The tx hashes of every transaction.
In the example below, we submit the transfer using the signed_txset generated above:
1
curl -X POST http://127.0.0.1:18082/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"submit_transfer","params":{"tx_data_hex":...long_hex..."}}' -H 'Content-Type: application/json'
2
{
3
"id": "0",
4
"jsonrpc": "2.0",
5
"result": {
6
"tx_hash_list": ["40fad7c828bb383ac02648732f7afce9adc520ba5629e1f5d9c03f584ac53d74"]
7
}
8
}
Copied!

sweep_dust

Send all dust outputs back to the wallet's, to make them easier to spend (and mix).
Alias: sweep_unmixable.
Inputs:
    get_tx_keys - boolean; (Optional) Return the transaction keys after sending.
    do_not_relay - boolean; (Optional) If true, the newly created transaction will not be relayed to the Oxen network. (Defaults to false)
    get_tx_hex - boolean; (Optional) Return the transactions as hex string after sending. (Defaults to false)
    get_tx_metadata - boolean; (Optional) Return list of transaction metadata needed to relay the transfer later. (Defaults to false)
Outputs:
    tx_hash_list - array of: string. The tx hashes of every transaction.
    tx_key_list - array of: string. The transaction keys for every transaction.
    amount_list - array of: integer. The amount transferred for every transaction.
    fee_list - array of: integer. The amount of fees paid for every transaction.
    tx_blob_list - array of: string. The tx as hex string for every transaction.
    tx_metadata_list - array of: 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.
Example (In this example, sweep_dust returns nothing because there are no funds to sweep):
1
$ curl -X POST http://127.0.0.1:18082/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"sweep_dust","params":{"get_tx_keys":true}}' -H 'Content-Type: application/json'
2
{
3
"id": "0",
4
"jsonrpc": "2.0",
5
"result": {
6
"multisig_txset": "",
7
"unsigned_txset": ""
8
}
9
}
Copied!

sweep_all

Send all unlocked balance to an address.
Alias: None.
Inputs:
    address - string; Destination public address.
    account_index - unsigned int; Sweep transactions from this account.
    subaddr_indices - array of unsigned int; (Optional) Sweep from this set of subaddresses in the account.
    priority - unsigned int; (Optional) Priority for sending the sweep transfer, partially determines fee.
    mixin - unsigned int; Number of outputs from the blockchain to mix with (0 means no mixing).
    ring_size - unsigned int; Sets ringsize to n (mixin + 1).
    unlock_time - unsigned int; Number of blocks before the $OXEN 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 - boolean; (Optional) Return the transaction keys after sending.
    below_amount - unsigned int; (Optional) Include outputs below this amount.
    do_not_relay - boolean; (Optional) If true, do not relay this sweep transfer. (Defaults to false)
    get_tx_hex - boolean; (Optional) return the transactions as hex encoded string. (Defaults to false)
    get_tx_metadata - boolean; (Optional) return the transaction metadata as a string. (Defaults to false)
Outputs:
    tx_hash_list - array of: string. The tx hashes of every transaction.
    tx_key_list - array of: string. The transaction keys for every transaction.
    amount_list - array of: integer. The amount transferred for every transaction.
    fee_list - array of: integer. The amount of fees paid for every transaction.
    tx_blob_list - array of: string. The tx as hex string for every transaction.
    tx_metadata_list - array of: 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.
Example:
1
$ curl -X POST http://localhost:18082/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"sweep_all","params":{"address":"55LTR8KniP4LQGJSPtbYDacR7dz8RBFnsfAKMaMuwUNYX6aQbBcovzDPyrQF9KXF9tVU6Xk3K8no1BywnJX6GvZX8yJsXvt","subaddr_indices":[4],"ring_size":7,"unlock_time":0,"get_tx_keys":true}}' -H 'Content-Type: application/json'
2
{
3
"id": "0",
4
"jsonrpc": "2.0",
5
"result": {
6
"amount_list": [9985885770000],
7
"fee_list": [14114230000],
8
"multisig_txset": "",
9
"tx_hash_list": ["ab4b6b65cc8cd8c9dd317d0b90d97582d68d0aa1637b0065b05b61f9a66ea5c5"],
10
"tx_key_list": ["b9b4b39d3bb3062ddb85ec0266d4df39058f4c86077d99309f218ce4d76af607"],
11
"unsigned_txset": ""
12
}
13
}
Copied!

sweep_single

Send all of a specific unlocked output to an address.
Alias: None.
Inputs:
    address - string; Destination public address.
    account_index - unsigned int; Sweep transactions from this account.
    subaddr_indices - array of unsigned int; (Optional) Sweep from this set of subaddresses in the account.
    priority - unsigned int; (Optional) Priority for sending the sweep transfer, partially determines fee.
    mixin - unsigned int; Number of outputs from the blockchain to mix with (0 means no mixing).
    ring_size - unsigned int; Sets ringsize to n (mixin + 1).
    unlock_time - unsigned int; Number of blocks before the $OXEN 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 - boolean; (Optional) Return the transaction keys after sending.
    key_image - string; Key image of specific output to sweep.
    below_amount - unsigned int; (Optional) Include outputs below this amount.
    do_not_relay - boolean; (Optional) If true, do not relay this sweep transfer. (Defaults to false)
    get_tx_hex - boolean; (Optional) return the transactions as hex encoded string. (Defaults to false)
    get_tx_metadata - boolean; (Optional) return the transaction metadata as a string. (Defaults to false)
Outputs:
    tx_hash_list - array of: string. The tx hashes of every transaction.
    tx_key_list - array of: string. The transaction keys for every transaction.
    amount_list - array of: integer. The amount transferred for every transaction.
    fee_list - array of: integer. The amount of fees paid for every transaction.
    tx_blob_list - array of: string. The tx as hex string for every transaction.
    tx_metadata_list - array of: 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.
Example:
1
$ curl -X POST http://localhost:18082/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"sweep_single","params":{"address":"74Jsocx8xbpTBEjm3ncKE5LBQbiJouyCDaGhgSiebpvNDXZnTAbW2CmUR5SsBeae2pNk9WMVuz6jegkC4krUyqRjA6VjoLD","ring_size":7,"unlock_time":0,"key_image":"a7834459ef795d2efb6f665d2fd758c8d9288989d8d4c712a68f8023f7804a5e","get_tx_keys":true}}' -H 'Content-Type: application/json'
2
{
3
"id": "0",
4
"jsonrpc": "2.0",
5
"result": {
6
"amount": 27126892247503,
7
"fee": 14111630000,
8
"multisig_txset": "",
9
"tx_blob": "",
10
"tx_hash": "106d4391a031e5b735ded555862fec63233e34e5fa4fc7edcfdbe461c275ae5b",
11
"tx_key": "",
12
"tx_metadata": "",
13
"unsigned_txset": ""
14
}
15
}
Copied!

relay_tx

Relay a transaction previously created with "do_not_relay":true.
Alias: None.
Inputs:
    hex - string; transaction metadata returned from a transfer method with get_tx_metadata set to true.
Outputs:
    tx_hash - String for the publically searchable transaction hash.
Example:
1
$ curl -X POST http://localhost:18082/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"relay_tx","params":{"hex":"...tx_metadata..."}}' -H 'Content-Type: application/json'
2
{
3
"id": "0",
4
"jsonrpc": "2.0",
5
"result": {
6
"tx_hash": "1c42dcc5672bb09bccf33fb1e9ab4a498af59a6dbd33b3d0cfb289b9e0e25fa5"
7
}
8
}
Copied!

store

Save the wallet file.
Alias: None.
Inputs: None.
Outputs: None.
Example:
1
$ curl -X POST http://127.0.0.1:18082/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"store"}' -H 'Content-Type: application/json'
2
{
3
"id": "0",
4
"jsonrpc": "2.0",
5
"result": {
6
}
7
}
Copied!

get_payments

Get a list of incoming payments using a given payment id.
Alias: None.
Inputs:
    payment_id - string; Payment ID used to find the payments (16 characters hex).
Outputs:
    payments - list of:
      payment_id - string; Payment ID matching the input parameter.
      tx_hash - string; Transaction hash used as the transaction ID.
      amount - unsigned int; Amount for this payment.
      block_height - unsigned int; Height of the block that first confirmed this payment.
      unlock_time - unsigned int; Time (in block height) until this payment is safe to spend.
      subaddr_index - subaddress index:
        major - unsigned int; Account index for the subaddress.
        minor - unsigned int; Index of the subaddress in the account.
      address - string; Address receiving the payment; Base58 representation of the public keys.
Example:
1
$ curl -X POST http://127.0.0.1:18082/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"get_payments","params":{"payment_id":"60900e5603bf96e3"}}' -H 'Content-Type: application/json'
2
{
3
"id": "0",
4
"jsonrpc": "2.0",
5
"result": {
6
"payments": [{
7
"address": "55LTR8KniP4LQGJSPtbYDacR7dz8RBFnsfAKMaMuwUNYX6aQbBcovzDPyrQF9KXF9tVU6Xk3K8no1BywnJX6GvZX8yJsXvt",
8
"amount": 1000000000000,
9
"block_height": 127606,
10
"payment_id": "60900e5603bf96e3",
11
"subaddr_index": {
12
"major": 0,
13
"minor": 0
14
},
15
"tx_hash": "3292e83ad28fc1cc7bc26dbd38862308f4588680fbf93eae3e803cddd1bd614f",
16
"unlock_time": 0
17
}]
18
}
19
}
Copied!

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.
Alias: None.
Inputs:
    payment_ids - array of: string; Payment IDs used to find the payments (16 characters hex).
    min_block_height - unsigned int; The block height at which to start looking for payments.
Outputs:
    payments - list of:
      payment_id - string; Payment ID matching one of the input IDs.
      tx_hash - string; Transaction hash used as the transaction ID.
      amount - unsigned int; Amount for this payment.
      block_height - unsigned int; Height of the block that first confirmed this payment.
      unlock_time - unsigned int; Time (in block height) until this payment is safe to spend.
      subaddr_index - subaddress index:
        major - unsigned int; Account index for the subaddress.
        minor - unsigned int; Index of the subaddress in the account.
      address - string; Address receiving the payment; Base58 representation of the public keys.
Example:
1
$ curl -X POST http://127.0.0.1:18082/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"get_bulk_payments","params":{"payment_ids":["60900e5603bf96e3"],"min_block_height":"120000"}}' -H 'Content-Type: application/json'
2
{
3
"id": "0",
4
"jsonrpc": "2.0",
5
"result": {
6
"payments": [{
7
"address": "55LTR8KniP4LQGJSPtbYDacR7dz8RBFnsfAKMaMuwUNYX6aQbBcovzDPyrQF9KXF9tVU6Xk3K8no1BywnJX6GvZX8yJsXvt",
8
"amount": 1000000000000,
9
"block_height": 127606,
10
"payment_id": "60900e5603bf96e3",
11
"subaddr_index": {
12
"major": 0,
13
"minor": 0
14
},
15
"tx_hash": "3292e83ad28fc1cc7bc26dbd38862308f4588680fbf93eae3e803cddd1bd614f",
16
"unlock_time": 0
17
}]
18
}
19
}
Copied!

incoming_transfers

Return a list of incoming transfers to the wallet.
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 - unsigned int; (Optional) Return transfers for this account. (defaults to 0)
    subaddr_indices - array of unsigned int; (Optional) Return transfers sent to these subaddresses.
    verbose - boolean; (Optional) Enable verbose output, return key image if true.
Outputs:
    transfers - list of:
      amount - unsigned int; Amount of this transfer.
      global_index - unsigned int; Mostly internal use, can be ignored by most users.
      key_image - string; Key image for the incoming transfer's unspent output (empty unless verbose is true).
      spent - boolean; Indicates if this transfer has been spent.
      subaddr_index - unsigned int; Subaddress index for incoming transfer.
      tx_hash - string; Several incoming transfers may share the same hash if they were in the same transaction.
      tx_size - unsigned int; Size of transaction in bytes.
Example, get all transfers:
1
$ curl -X POST http://127.0.0.1:18082/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"incoming_transfers","params":{"transfer_type":"all","account_index":0,"subaddr_indices":[3],"verbose":true}}' -H 'Content-Type: application/json'
2
{
3
"id": "0",
4
"jsonrpc": "2.0",
5
"result": {
6
"transfers": [{
7
"amount": 60000000000000,
8
"global_index": 122405,
9
"key_image": "768f5144777eb23477ab7acf83562581d690abaf98ca897c03a9d2b900eb479b",
10
"spent": true,
11
"subaddr_index": 3,
12
"tx_hash": "f53401f21c6a43e44d5dd7a90eba5cf580012ad0e15d050059136f8a0da34f6b",
13
"tx_size": 159
14
},{
15
"amount": 27126892247503,
16
"global_index": 594994,
17
"key_image": "7e561394806afd1be61980cc3431f6ef3569fa9151cd8d234f8ec13aa145695e",
18
"spent": false,
19
"subaddr_index": 3,
20
"tx_hash": "106d4391a031e5b735ded555862fec63233e34e5fa4fc7edcfdbe461c275ae5b",
21
"tx_size": 157
22
},{
23
"amount": 27169374733655,
24
"global_index": 594997,
25
"key_image": "e76c0a3bfeaae35e4173712f782eb34011198e26b990225b71aa787c8ba8a157",
26
"spent": false,
27
"subaddr_index": 3,
28
"tx_hash": "0bd959b59117ee1254bd8e5aa8e77ec04ef744144a1ffb2d5c1eb9380a719621",
29
"tx_size": 158
30
}]
31
}
32
}
Copied!
Example, get available transfers:
1
$ curl -X POST http://127.0.0.1:18082/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"incoming_transfers","params":{"transfer_type":"available","account_index":0,"subaddr_indices":[3],"verbose":true}}' -H 'Content-Type: application/json'
2
{