RPC API
Wallet RPC API

DERO Wallet RPC API

A wallet RPC (Remote Procedure Call) enables programmatic control of a DERO wallet. This API allows payment processors, exchanges, and applications to automate wallet operations.

Source: rpc/wallet_rpc.go - All RPC methods verified against Release 142

Network Ports

NetworkWallet RPC PortUsage
Mainnet10103Production use
Testnet40403Development/testing

Source: config/config.go:104,124

Enable RPC Server

ℹ️

The RPC server is not enabled by default. Start the wallet with --rpc-server to enable it:

# Mainnet
./dero-wallet-cli --rpc-server --rpc-bind=127.0.0.1:10103
 
# With authentication
./dero-wallet-cli --rpc-server --rpc-login=username:password

What You Can Do

  • Manage balances - Query DERO and asset balances
  • Send transactions - Transfer DERO and assets with privacy
  • Receive payments - Generate integrated addresses, monitor transfers
  • Smart contract interaction - Call SC methods, query state
  • Address management - Get wallet address, generate integrated addresses

Echo

Test endpoint to verify that the RPC server is enabled and working well on the wallet side.

Available parameters

NameTypeMandatoryComment
[]stringtrueArray of string

Body

{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "Echo",
    "params": ["Hello", "World", "!"]
}

cURL Request

curl -X POST \
  http://127.0.0.1:10103/json_rpc \
  -H 'content-type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "Echo",
    "params": ["Hello", "World", "!"]
}'

Result

{
    "jsonrpc": "2.0",
    "id": "1",
    "result": "WALLET Hello World !"
}

Get Address

Returns the DERO address of the wallet to receive DEROs or other tokens.

Available parameters

No parameters

Body

{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "GetAddress"
}

cURL Request

curl -X POST \
  http://127.0.0.1:10103/json_rpc \
  -H 'content-type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "GetAddress"
}'

Result

{
    "jsonrpc": "2.0",
    "id": "1",
    "result": {
        "address": "deto1qyyhg0xznkaxt5udct6lnlylsexvwprun6jphv89xg008vq29jk4vqqayuknf"
    }
}

Get Balance

Retrieves the current balance of the wallet.

Available parameters

No parameters

Body

{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "GetBalance"
}

cURL Request

curl -X POST \
  http://127.0.0.1:10103/json_rpc \
  -H 'content-type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "GetBalance"
}'

Result

{
    "jsonrpc": "2.0",
    "id": "1",
    "result": {
        "balance": 800000,
        "unlocked_balance": 800000
    }
}

NOTE: The amount is in atomic format. As a reminder, 10^5 (=100000) is equivalent to 1 DERO.

⚠️

If this address is not registered on the blockchain, you will get this error:

{
    "jsonrpc": "2.0",
    "id": "1",
    "error": {
        "code": -32098,
        "message": "Account Unregistered"
    }
}

Get Height

Returns at which block height the wallet is synchronized.

Available parameters

No parameters

Body

{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "GetHeight"
}

cURL Request

curl -X POST \
  http://127.0.0.1:10103/json_rpc \
  -H 'content-type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "GetHeight"
}'

Result

{
    "jsonrpc": "2.0",
    "id": "1",
    "result": {
        "height": 420
    }
}

Get Transfer by TXID

Returns the details of the transaction based on its hash.

Available parameters

NameTypeMandatory
hashHashtrue

Body

{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "GetTransferbyTXID",
    "params": {
        "txid": "2a74bcc6262f48630967129793f3b87dc30236f2cb5df6ebb09d620ec0cb503a"
    }
}

cURL Request

curl -X POST \
  http://127.0.0.1:10103/json_rpc \
  -H 'content-type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "GetTransferbyTXID",
    "params": {
        "txid": "2a74bcc6262f48630967129793f3b87dc30236f2cb5df6ebb09d620ec0cb503a"
    }
}'

Result

{
    "jsonrpc": "2.0",
    "id": "1",
    "result": {
        "entry": {
            "height": 31297,
            "topo_height": 31297,
            "blockhash": "44e010e6ae56e66e75b158871570233a8a8b918491efc2d02ce793a7ce258612",
            "minerreward": 0,
            "tpos": 17,
            "pos": 0,
            "coinbase": false,
            "incoming": true,
            "txid": "2a74bcc6262f48630967129793f3b87dc30236f2cb5df6ebb09d620ec0cb503a",
            "destination": "",
            "amount": 500000,
            "fees": 451,
            "proof": "deroproof1qy3zfvkwdz87xa7mvxc0qq7nsmcgkl3gsf00a2amhk7fs2yu09r4uqdzvfyyskpqckdxyd8vgtzd75mjujsyzj6swrfdy6gw7alx78ak23v6ql60ewqxy4j4rgqq0gfqsjjq9u",
            "status": 0,
            "time": "2022-02-03T17:51:16.006+01:00",
            "ewdata": "2efc785f92e9ffdaf1935186e0ffe561e500632722c73f95e741136389a347b8002642ae3d734c6b119a28884920036e895fc8e6a33f9c4ec6d90da1a4d1b65ef901",
            "data": "AqFoQ29tbWVudFNySGVsbG8gZnJvbSBTbGl4ZSAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
            "payloadtype": 0,
            "payload": "oWhDb21tZW50U3JIZWxsbyBmcm9tIFNsaXhlICEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "payload_rpc": [
                {
                    "name": "Comment",
                    "datatype": "S",
                    "value": "Hello from Slixe !"
                }
            ],
            "sender": "deto1qyj4kx6azntn9psmg7dsfkuv9qs9xde0s94nmmhm2a0damffpm2zzqqcudacc",
            "dstport": 0,
            "srcport": 0
        }
    }
}

Get Transfers

Returns all transactions present in the portfolio against the applied filters.

Available parameters

NameTypeMandatoryComment
scidHashfalseSmart Contract ID
coinbaseboolfalseAccept coinbase TX ?
inboolfalseAccept incoming TX ?
outboolfalseAccept outgoing TX ?
min_heightunint64falseMinimum height
max_heightunint64falseMaximum height
senderstringfalseSender address equal
receiverstringfalseReceiver address equal
dstportuint64falseDestination Port (Service)
srcportuint64falseSource Port (Service)

Body

{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "GetTransfers",
    "params": {
        "out": true,
        "in": true
    }
}

cURL Request

curl -X POST \
  http://127.0.0.1:10103/json_rpc \
  -H 'content-type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "GetTransfers",
    "params": {
        "out": true,
        "in": true
    }
}'

Result

{
    "jsonrpc": "2.0",
    "id": "1",
    "result": {
        "entries": [
            {
                "height": 31297,
                "topo_height": 31297,
                "blockhash": "44e010e6ae56e66e75b158871570233a8a8b918491efc2d02ce793a7ce258612",
                "minerreward": 0,
                "tpos": 17,
                "pos": 0,
                "coinbase": false,
                "incoming": true,
                "txid": "2a74bcc6262f48630967129793f3b87dc30236f2cb5df6ebb09d620ec0cb503a",
                "destination": "",
                "amount": 500000,
                "fees": 451,
                "proof": "deroproof1qy3zfvkwdz87xa7mvxc0qq7nsmcgkl3gsf00a2amhk7fs2yu09r4uqdzvfyyskpqckdxyd8vgtzd75mjujsyzj6swrfdy6gw7alx78ak23v6ql60ewqxy4j4rgqq0gfqsjjq9u",
                "status": 0,
                "time": "2022-02-03T17:51:16.006+01:00",
                "ewdata": "2efc785f92e9ffdaf1935186e0ffe561e500632722c73f95e741136389a347b8002642ae3d734c6b119a28884920036e895fc8e6a33f9c4ec6d90da1a4d1b65ef901",
                "data": "AqFoQ29tbWVudFNySGVsbG8gZnJvbSBTbGl4ZSAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
                "payloadtype": 0,
                "payload": "oWhDb21tZW50U3JIZWxsbyBmcm9tIFNsaXhlICEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
                "payload_rpc": [
                    {
                        "name": "Comment",
                        "datatype": "S",
                        "value": "Hello from Slixe !"
                    }
                ],
                "sender": "deto1qyj4kx6azntn9psmg7dsfkuv9qs9xde0s94nmmhm2a0damffpm2zzqqcudacc",
                "dstport": 0,
                "srcport": 0
            }
        ]
    }
}

Make Integrated Address

Returns a new integrated address with Payloads included.

Available parameters

NameTypeMandatoryComment
addressstringfalseDERO Address (if empty, the one from wallet is used)
payload_rpcArgumentfalseParameters to include in address

Body

{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "MakeIntegratedAddress",
    "params": {
        "payload_rpc": [
            {
                "name": "Comment",
                "datatype": "S",
                "value": "Hello from integrated address !"
            }
        ]
    }
}

cURL Request

curl -X POST \
  http://127.0.0.1:10103/json_rpc \
  -H 'content-type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "MakeIntegratedAddress",
    "params": {
        "payload_rpc": [
            {
                "name": "Comment",
                "datatype": "S",
                "value": "Hello from integrated address !"
            }
        ]
    }
}'

Result

{
    "jsonrpc": "2.0",
    "id": "1",
    "result": {
        "integrated_address": "detoi1qyyhg0xznkaxt5udct6lnlylsexvwprun6jphv89xg008vq29jk4vq9pdppk7mtdv4h8g5mcrayx2mrvdusxvun0d5sxjmn5v4nhyct5v4jzqctyv3ex2umnyqssvnqraw",
        "payload_rpc": [
            {
                "name": "Comment",
                "datatype": "S",
                "value": "Hello from integrated address !"
            }
        ]
    }
}

Split Integrated Address

Returns the DERO address and the payloads included in an Integrated Address.

Available parameters

NameTypeMandatoryComment
integrated_addressstringtrueIntegrated Address to decode

Body

{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "SplitIntegratedAddress",
    "params": {
        "integrated_address": "detoi1qyyhg0xznkaxt5udct6lnlylsexvwprun6jphv89xg008vq29jk4vq9pdppk7mtdv4h8g5mcrayx2mrvdusxvun0d5sxjmn5v4nhyct5v4jzqctyv3ex2umnyqssvnqraw"
    }
}

cURL Request

curl -X POST \
  http://127.0.0.1:10103/json_rpc \
  -H 'content-type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "SplitIntegratedAddress",
    "params": {
        "integrated_address": "detoi1qyyhg0xznkaxt5udct6lnlylsexvwprun6jphv89xg008vq29jk4vq9pdppk7mtdv4h8g5mcrayx2mrvdusxvun0d5sxjmn5v4nhyct5v4jzqctyv3ex2umnyqssvnqraw"
    }
}'

Result

{
    "jsonrpc": "2.0",
    "id": "1",
    "result": {
        "address": "deto1qyyhg0xznkaxt5udct6lnlylsexvwprun6jphv89xg008vq29jk4vqqayuknf",
        "payload_rpc": [
            {
                "name": "Comment",
                "datatype": "S",
                "value": "Hello from integrated address !"
            }
        ]
    }
}

Query Key

Returns the mnemonic key (seed) associated with this portfolio.

Available parameters

NameTypeMandatoryComment
key_typestringtrueKey Type ("mnemonic" only)

Body

{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "QueryKey",
    "params": {
        "key_type": "mnemonic"
    }
}

cURL Request

curl -X POST \
  http://127.0.0.1:10103/json_rpc \
  -H 'content-type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "QueryKey",
    "params": {
        "key_type": "mnemonic"
    }
}'

Result

{
    "jsonrpc": "2.0",
    "id": "1",
    "result": {
        "key": "eavesdrop sailor tavern fizzle mammal were utmost stellar rafts vats dedicated dosage lynx cent after toyed coexist zippers lipstick aztec dedicated custom chrome onto launching"
    }
}

Transfer

Creates a transaction and returns its hash.

Available parameters

NameTypeMandatoryComment
scidHashfalseSCID of asset
destinationstringfalseDERO Address of receiver
amountuint64falseAmount of token to send
burnuint63falseAmount of token to burn
payload_rpcArgumentsfalsePayload Arguments

Body

{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "transfer",
    "params": {
        "scid": "00000000000000000000000000000000",
        "destination": "deto1qyj4kx6azntn9psmg7dsfkuv9qs9xde0s94nmmhm2a0damffpm2zzqqcudacc",
        "amount": 100000
    }
}

cURL Request

curl -X POST \
  http://127.0.0.1:10103/json_rpc \
  -H 'content-type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "transfer",
    "params": {
        "scid": "00000000000000000000000000000000",
        "destination": "deto1qyj4kx6azntn9psmg7dsfkuv9qs9xde0s94nmmhm2a0damffpm2zzqqcudacc",
        "amount": 100000
    }
}'

Result

{
    "jsonrpc": "2.0",
    "id": "1",
    "result": {
        "txid": "5201c319d04fb72012ecb2fd8c903feff50bbd5db39c60dfee795b9b3a90433a"
    }
}

Transfer 2

Creates a transaction to several distinct addresses and returns its hash.

Available parameters

NameTypeMandatoryComment
transfers[]Transferfalsesee previous request
scstringfalseSC Code to deploy
sc_rpcArgumentsfalseSC Call Arguments
ringsizeuint64falseLevel of anonymity
scidstringfalseSCID to call
feesuint64falseTx Fees
signerstringfalseused for gas estimation

Body

{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "transfer",
    "params": {
        "transfers": [{
                "destination": "deto1qyj4kx6azntn9psmg7dsfkuv9qs9xde0s94nmmhm2a0damffpm2zzqqcudacc",
                "amount": 100000
            },
            {
                "destination": "deto1qydvjhl67a3hmcw6zq9yt449extwshzcjxkd7lgk4uhgpyxdr494yqg6zwnc2",
                "amount": 100000
            }
        ],
        "ringsize": 32
    }
}

cURL Request

curl -X POST \
  http://127.0.0.1:10103/json_rpc \
  -H 'content-type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "transfer",
    "params": {
        "transfers": [{
                "destination": "deto1qyj4kx6azntn9psmg7dsfkuv9qs9xde0s94nmmhm2a0damffpm2zzqqcudacc",
                "amount": 100000
            },
            {
                "destination": "deto1qydvjhl67a3hmcw6zq9yt449extwshzcjxkd7lgk4uhgpyxdr494yqg6zwnc2",
                "amount": 100000
            }
        ],
        "ringsize": 32
    }
}'

Result

{
    "jsonrpc": "2.0",
    "id": "1",
    "result": {
        "txid": "3a2712ae039e3f55b4cee132ec7ab76b912d05b3c1fc2744ae2ddd2c18be893e"
    }
}

Smart Contract Invoke

Creates a transaction to call a Smart Contract function and returns its hash.

Available parameters

NameTypeMandatoryComment
scidstringtrueSCID of asset/token
sc_rpcArgumentstrueSC Arguments
sc_dero_deposituint64falseAmount of DERO to deposit
sc_token_deposituint64falseAmount of token to deposit
ringsizeuint64falseLevel of anonymity

Body

{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "scinvoke",
    "params": {
        "scid": "0000000000000000000000000000000000000000000000000000000000000001",
        "ringsize": 2,
        "sc_rpc": [
            {
                "name": "entrypoint",
                "datatype": "S",
                "value": "Register"
            },
            {
                "name": "name",
                "datatype": "S",
                "value": "Slixe"
            }
        ]
    }
}

cURL Request

curl -X POST \
  http://127.0.0.1:10103/json_rpc \
  -H 'content-type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "scinvoke",
    "params": {
        "scid": "0000000000000000000000000000000000000000000000000000000000000001",
        "ringsize": 2,
        "sc_rpc": [
            {
                "name": "entrypoint",
                "datatype": "S",
                "value": "Register"
            },
            {
                "name": "name",
                "datatype": "S",
                "value": "Slixe"
            }
        ]
    }
}'

Result

{
    "jsonrpc": "2.0",
    "id": "1",
    "result": {
        "txid": "bf4b2cd942f4394a03d0d66bbf8c0639f5cbcbf340becc39d4c9e02f987cecca"
    }
}

Related Pages

Getting Started:

Related APIs:

Understanding Privacy:

For Developers: