API reference

The /v1 REST API

Read chain state, submit transactions, and query balances, supply, and blocks over plain HTTP. Every endpoint is grouped by the node that serves it, with its parameters, request and response shapes, and examples.

fleet REST API · v1.1.2 · OpenAPI 3.1.0

TestnetThe *.lineage.to base URLs below point to the public testnet. A mainnet will be announced separately.

Common

Mounted on every node, whatever its role.

GET/v1/debug
Served byAll nodes

Get node type, peer list, and route metadata for this node.

Responses

200Debug data for this nodeapplication/json
node_apistring[]required
The `/v1` paths mounted on this node's router.
node_peersPeerInfo[]required
Connected peers for this node (and the auxiliary node, if present).
addressstringrequired
The peer's socket address, as a string.
node_typestringrequired
The peer's node type (`Mempool` or `Storage`).
node_typestringrequired
This node's type; `"{type}/{aux_type}"` when an auxiliary node is present.
routes_powobjectrequired
Per-route PoW difficulty, kept for parity with the legacy payload.

Mempool API

https://mempool.lineage.toTestnet

Transactions, balances, supply, and mempool metadata.

GET/v1/balances
Served byMempool

Get UTXO balances for one or more addresses.

Repeat the `address` query parameter for multiple addresses; use `POST /v1/balances/query` instead for large batches.

Example

bash
# Repeat ?address= for each address you want
curl -sS "https://mempool.lineage.to/v1/balances?address=<address>"

Response

json
{
  "balance": {
    "address_list": {
      "<address>": [
        {
          "out_point": { "n": 0, "t_hash": "g59cbf95982cff737ba0b067ff6d467d" },
          "value": { "Token": 720720000 }
        }
      ]
    },
    "total": { "tokens": 720720000, "items": {} }
  }
}

Parameters

addressstring[]queryrequired
Addresses to look up; repeat the parameter for multiple values

Responses

200UTXO balance for the requested addressesapplication/json
balanceobjectrequired
The combined asset totals and per-address outpoint breakdown, as returned by the mempool's tracked UTXO set (`fleet_core::tracked_utxo::TrackedUtxoBalance`).
500The mempool node could not be reachedapplication/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.
POST/v1/balances/query
Served byMempool

Batch-lookup UTXO balances for one or more addresses.

Request bodyapplication/jsonrequired

addressesstring[]required
The addresses to look up.

Responses

200UTXO balance for the requested addressesapplication/json
balanceobjectrequired
The combined asset totals and per-address outpoint breakdown, as returned by the mempool's tracked UTXO set (`fleet_core::tracked_utxo::TrackedUtxoBalance`).
500The mempool node could not be reachedapplication/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.
POST/v1/itemsx-api-key
Served byMempoolMinerUser

Create an item asset.

On a mempool node, this signs and submits the item-asset creation transaction directly (`script_public_key`/`public_key`/`signature` are required) and returns `201` with the created asset. On a user node, this injects a creation request for the node to construct and sign itself, and returns `202`.

Request bodyapplication/jsonrequired

genesis_hash_specstringrequired
item_amountintegerrequired
The number of items to create.Format: int64
metadatastring | nulloptionalnullable
Optional item metadata.
public_keystring | nulloptionalnullable
Required on a mempool node (the client-signed create); ignored on a user node.
script_public_keystring | nulloptionalnullable
Required on a mempool node (the client-signed create); ignored on a user node.
signaturestring | nulloptionalnullable
Required on a mempool node (the client-signed create); ignored on a user node.

Responses

201Item asset created on the mempoolapplication/json
assetApiAssetrequired
A chain asset, tagged by `kind` so each variant is fully described by the schema.
to_addressstringrequired
The address the item was created against.
tx_hashstringrequired
The hash of the created item-asset transaction.
202Item-asset creation accepted by the user nodeapplication/json
item_amountintegerrequired
The number of items requested.Format: int64
400Missing required fields for a mempool-node createapplication/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.
500The node could not be reached, or rejected the requestapplication/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.
GET/v1/supply
Served byMempool

Get the total and issued token supply.

Example

bash
curl -sS "https://mempool.lineage.to/v1/supply"

Response

json
{
  "total": 360360000000000000,
  "issued": 90103919694881008
}

Responses

200Total and issued token supplyapplication/json
issuedintegerrequired
The currently issued token supply.Format: int64
totalintegerrequired
The fixed total token supply.Format: int64
500The mempool node could not be reachedapplication/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.
POST/v1/transactions
Served byMempool

Construct one or more transactions and submit them to the mempool.

Request bodyapplication/jsonrequired

transactionsCreateTransaction[]required
The transactions to construct and submit.
druid_infoobjectrequired
feesobject[] | nulloptionalnullable
inputsCreateTxIn[]required
String to sign in each inputs
previous_outobjectrequired
The previous_out to use
script_signatureany | CreateTxInScriptoptional
outputsobject[]required
versionintegerrequired

Responses

201The transaction(s) were accepted by the mempoolapplication/json
transactionsBTreeMaprequired
400One or more transactions were malformedapplication/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.
500The mempool node could not be reached, or rejected the transaction(s)application/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.
GET/v1/transactions/status
Served byMempool

Get mempool status for one or more transactions.

Repeat the `hash` query parameter for multiple hashes; use `POST /v1/transactions/status:query` instead for large batches.

Parameters

hashstring[]queryrequired
Transaction hashes to look up; repeat the parameter for multiple values

Responses

200Status for the requested transaction hashes, keyed by hashapplication/json

Map of string to TxStatusResponse

500The mempool node could not be reachedapplication/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.
POST/v1/transactions/status:query
Served byMempool

Batch-lookup mempool status for one or more transactions.

Request bodyapplication/jsonrequired

hashesstring[]required
The transaction hashes to look up.

Responses

200Status for the requested transaction hashes, keyed by hashapplication/json

Map of string to TxStatusResponse

500The mempool node could not be reachedapplication/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.

Storage API

https://storage.lineage.toTestnet

Blocks and blockchain entries — long-term read history.

GET/v1/blockchain-entries/{key}
Served byStorage

Get a single blockchain DB entry by its raw storage key.

Parameters

keystringpathrequired
The raw storage key

Responses

200The stored entryapplication/json
dataobjectrequired
The entry's JSON payload, as stored alongside the binary-encoded data.
item_metaBlockchainItemMetaResponserequired
Typed mirror of `fleet_core::interfaces::BlockchainItemMeta`.
keystringrequired
The entry's raw storage key (a transaction hash, or an indexed block key).
404No entry stored at this keyapplication/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.
POST/v1/blockchain-entries/query
Served byStorage

Batch-lookup blockchain DB entries by raw storage key.

Keys with no stored entry are omitted from the response rather than erroring.

Request bodyapplication/jsonrequired

keysstring[]required
The raw storage keys to look up.

Responses

200The entries found for the requested keysapplication/json

Array of BlockchainEntryResponse

dataobjectrequired
The entry's JSON payload, as stored alongside the binary-encoded data.
item_metaBlockchainItemMetaResponserequired
Typed mirror of `fleet_core::interfaces::BlockchainItemMeta`.
keystringrequired
The entry's raw storage key (a transaction hash, or an indexed block key).
GET/v1/blocks
Served byStorage

Batch-lookup stored blocks by number.

Block numbers with no stored block are omitted from the response rather than erroring; repeat the `num` query parameter for multiple numbers.

Parameters

numinteger[]queryrequired
Block numbers to look up; repeat the parameter for multiple values

Responses

200The block entries found for the requested numbersapplication/json

Array of BlockchainEntryResponse

dataobjectrequired
The entry's JSON payload, as stored alongside the binary-encoded data.
item_metaBlockchainItemMetaResponserequired
Typed mirror of `fleet_core::interfaces::BlockchainItemMeta`.
keystringrequired
The entry's raw storage key (a transaction hash, or an indexed block key).
GET/v1/blocks/{num}
Served byStorage

Get a single stored block by number.

Parameters

numintegerpathrequired
The block number

Responses

200The stored block entryapplication/json
dataobjectrequired
The entry's JSON payload, as stored alongside the binary-encoded data.
item_metaBlockchainItemMetaResponserequired
Typed mirror of `fleet_core::interfaces::BlockchainItemMeta`.
keystringrequired
The entry's raw storage key (a transaction hash, or an indexed block key).
404No block has been stored at this numberapplication/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.
GET/v1/blocks/latest
Served byStorage

Get the most recently stored block.

Example

bash
curl -sS "https://storage.lineage.to/v1/blocks/latest"

Response

json
{
  "block": {
    "block": {
      "header": {
        "b_num": 5373,
        "previous_hash": "b004f3a8a053ed469b77b7afc3060714fe7edc188d5f70e7f7fdf8813db32d42e",
        "difficulty": [34, 0, 0, 1],
        "nonce_and_mining_tx_hash": [[45, 0, 0, 0], "g08bf5101e59b01ef9300b8f9311f226"],
        "seed_value": [49, 52, 57, 55, "… truncated …"]
      },
      "transactions": ["g08bf5101e59b01ef9300b8f9311f226"]
    }
  }
}

Responses

200The latest stored blockapplication/json
blockobjectrequired
404No block has been stored yetapplication/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.

Miner API

https://miner.lineage.toTestnet

Wallet, payments, and the current mining block (coupled user node).

GET/v1/mining/current-block
Served byMiner

Get the latest block received for mining.

Responses

200The current mining block, or `null` if none has been received yetapplication/json
blockobject | nullrequirednullable
The current mining block (`fleet_core::interfaces::BlockPoWReceived`), passed through as JSON unchanged, or `null` if no block has been received yet.
500This node does not mineapplication/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.
POST/v1/paymentsx-api-key
Served byMinerUser

Make a payment, by address or by ip.

Both kinds first check the wallet passphrase. For `kind=address`, the node constructs and signs the payment (`UserApi::make_payment`); a construction failure (`success=false`) is reported as `422`, otherwise the constructed payment is queued for sending (`SendNextPayment`) and its `tx_hash` returned. For `kind=ip`, the `address` field is parsed as a socket address and the payment is sent directly to that peer (`MakeIpPayment`); no `tx_hash` is available for this path.

Example

bash
# amount is in raw token units (1 LNGX = 72,072,000)
curl -sS -X POST "https://miner.lineage.to/v1/payments" \
  -H "Content-Type: application/json" \
  -d '{
    "kind": "address",
    "address": "<recipient-address>",
    "amount": 720720000,
    "passphrase": "<wallet-passphrase>"
  }'

Response

json
{
  "to_address": "<recipient-address>",
  "amount": { "kind": "token", "amount": 720720000 },
  "tx_hash": "g59cbf95982cff737ba0b067ff6d467d"
}

Request bodyapplication/jsonrequired

addressstringrequired
A payment address (kind=address) or `ip:port` socket address (kind=ip).
amountintegerrequired
Amount in raw token units.Format: int64
kindPaymentKindrequired
Which kind of payment target `PaymentRequest::address` names.One of: addressip
locktimeinteger | nulloptionalnullable
Format: int64
passphrasestringrequired

Responses

202The payment was acceptedapplication/json
amountApiAssetrequired
A chain asset, tagged by `kind` so each variant is fully described by the schema.
to_addressstringrequired
The payment target (address or ip:port, echoing the request).
tx_hashstring | nulloptionalnullable
The constructed transaction hash (present for address payments, null for ip).
400kind=ip and address was not a valid ip:port socket addressapplication/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.
401The wallet passphrase was incorrectapplication/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.
422kind=address and the payment could not be constructedapplication/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.
500This node does not expose a wallet or cannot make paymentsapplication/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.
GET/v1/transactions/outgoing
Served byMinerUser

Get this node's outgoing (constructed-and-sent) transactions.

An empty wallet with no outgoing transactions yet returns an empty list rather than an error, unlike the legacy handler (which surfaced the "no key in the DB yet" case as a `500`).

Responses

200This node's outgoing transactionsapplication/json
transactionsobject[]required
`[hash, transaction]` pairs (`tw_chain::primitives::transaction::Transaction`), passed through as JSON unchanged, mirroring the legacy embed-as-JSON behaviour.
500This node does not expose a wallet, or the wallet DB could not be readapplication/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.
GET/v1/wallet
Served byMinerUser

Get balance and transaction info for this node's wallet.

Example

bash
curl -sS "https://miner.lineage.to/v1/wallet"

Response

json
{
  "running_total": 141133.02058814795,
  "running_total_tokens": 10171739059829,
  "available_total_tokens": 9915312269729,
  "locked_total_tokens": 256426790100,
  "item_total": {},
  "addresses": {
    "0033315ca62a2ae88bada214f0308e77552f43bff4c0724b7b0b12110255cb1f": [
      {
        "out_point": { "n": 0, "t_hash": "g3cf6b82adceece76bb8f3f62dba5e61" },
        "value": { "Token": 2590174402 }
      }
    ]
  }
}

Parameters

pageintegerqueryoptional
Page of transaction_pages to return outpoints from
spentbooleanqueryoptional
Return spent transactions instead of the unspent set

Responses

200Balance and transaction info for this node's walletapplication/json
addressesobjectrequired
Outpoints (with their held asset), keyed by owning address (`fleet_core::interfaces::AddressesWithOutPoints`), passed through as JSON unchanged (its element type has private fields, so it's serialized as-is rather than remapped field-by-field), mirroring the legacy embed-as-JSON behaviour.
available_totalnumberrequired
Tokens available to spend, in display units.Format: double
available_total_tokensintegerrequired
Tokens available to spend, in raw token units.Format: int64
item_totalobjectrequired
Item-asset totals, keyed by genesis hash.
locked_totalnumberrequired
Tokens currently locked (e.g. immature coinbase), in display units.Format: double
locked_total_tokensintegerrequired
Tokens currently locked, in raw token units.Format: int64
running_totalnumberrequired
Total tokens held, in display units.Format: double
running_total_tokensintegerrequired
Total tokens held, in raw token units.Format: int64
500This node does not expose a wallet, or the wallet DB could not be readapplication/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.
POST/v1/wallet/addressesx-api-key
Served byMinerUser

Generate and return a new payment address for this node's wallet.

Responses

201A newly generated payment addressapplication/json
addressstringrequired
The newly generated payment address.
500This node does not expose a walletapplication/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.
GET/v1/wallet/keypairsx-api-key
Served byMinerUser

Export this node's known key-pairs.

Sensitive: this returns private keys. Protect this route with an api-key entry.

Responses

200Hex-encoded key-pairs, keyed by payment addressapplication/json
addressesobjectrequired
Hex-encoded key-pairs, keyed by payment address (`fleet_wallet::AddressStoreHex`), passed through as JSON unchanged, mirroring the legacy `Addresses` embed-as-JSON behaviour.
500This node does not expose a walletapplication/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.
POST/v1/wallet/keypairsx-api-key
Served byMinerUser

Import key-pairs into this node's wallet, then request a running-total refresh from the UTXO set for the imported addresses.

Request bodyapplication/jsonrequired

addressesobjectrequired
Hex-encoded key-pairs to import, keyed by payment address (mirrors the legacy `Addresses` request body / `KeypairsResponse`).

Responses

201The payment addresses that were importedapplication/json
importedstring[]required
The payment addresses that were imported.
400One of the key-pairs was not valid hexapplication/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.
500This node does not expose a wallet, the key-pairs could not be saved, or the running-total refresh could not be requestedapplication/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.
PUT/v1/wallet/passphrasex-api-key
Served byMinerUser

Change this node's wallet passphrase.

Request bodyapplication/jsonrequired

new_passphrasestringrequired
The passphrase to change to.
old_passphrasestringrequired
The wallet's current passphrase.

Responses

204Passphrase changed
400The new passphrase was blankapplication/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.
500This node does not expose a wallet, or the passphrase change failedapplication/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.
POST/v1/wallet/running-total:refreshx-api-key
Served byMinerUser

Request a running-total refresh from the UTXO set for this node's wallet.

Request bodyapplication/jsonrequired

addressesstring[]optional
The specific addresses to refresh when `all` is false.
allbooleanoptional
Refresh every known address (ignores `addresses` when true).

Responses

202The running-total refresh was requested
400No addresses to refresh were resolvedapplication/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.
500This node does not expose a wallet, or the running-total refresh could not be requestedapplication/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.

User API

Wallet plus stateless transaction tooling — run your own user node to expose these.

POST/v1/donation-requestsx-api-key
Served byUser

Ask a peer to send this user node a donation.

`address` is parsed as a socket address and a `RequestDonation` event is injected for the node to send the request itself; no response payload is returned.

Request bodyapplication/jsonrequired

addressstringrequired
The `ip:port` socket address of the peer to request a donation from.

Responses

202Donation request sent
400address was not a valid ip:port socket addressapplication/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.
500The donation request could not be sentapplication/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.
POST/v1/transactions:deserialize
Served byUser

Deserialize one or more hex-encoded transactions, without submitting them to the mempool. Stateless; not tied to any node's mempool or wallet.

Request bodyapplication/jsonrequired

transactionsstring[]required
Hex-encoded serialized transactions.

Responses

200The deserialized transaction(s)application/json
transactionsCreateTransaction[]required
druid_infoobjectrequired
feesobject[] | nulloptionalnullable
inputsCreateTxIn[]required
String to sign in each inputs
previous_outobjectrequired
The previous_out to use
script_signatureany | CreateTxInScriptoptional
outputsobject[]required
versionintegerrequired
400One or more hex strings were malformedapplication/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.
POST/v1/transactions:serialize
Served byUser

Serialize one or more transactions to hex-encoded bytes, without submitting them to the mempool. Stateless; not tied to any node's mempool or wallet.

Request bodyapplication/jsonrequired

transactionsCreateTransaction[]required
The transactions to serialize.
druid_infoobjectrequired
feesobject[] | nulloptionalnullable
inputsCreateTxIn[]required
String to sign in each inputs
previous_outobjectrequired
The previous_out to use
script_signatureany | CreateTxInScriptoptional
outputsobject[]required
versionintegerrequired

Responses

200The serialized transaction(s)application/json
transactionsJsonSerializedTransaction[]required
txn_hash_hexstringrequired
txn_hexstringrequired
400One or more transactions were malformedapplication/problem+json
codestring | nulloptionalnullable
An optional machine-readable error code.
detailstring | nulloptionalnullable
A human-readable explanation specific to this occurrence of the problem.
statusintegerrequired
The HTTP status code, duplicated here per RFC 9457.Format: int32
titlestringrequired
A short, human-readable summary of the problem type.
typestringrequired
A URI identifying the problem type; `about:blank` when none is defined.