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.
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.
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>"
}'
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`).
`[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.
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.
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.