Add wallet proof
Appends a signed proof to the record. The proof must be signed against the record's current hash. Use proofs to change status, update labels, or record custom data — see About Proofs for details.
Returns the updated record with the new proof in meta.proofs.
Broadcasts the wallet-proofs-added signal. Use
effects to subscribe.
Usage Examples
curl -X POST "http://localhost:3000/v2/wallets/<HANDLE>/proofs" \ -H "x-ledger: <YOUR LEDGER HANDLE>" \ -H "Content-Type: application/json" \ -d '{ "method": "ed25519-v2", "public": "dsZvr0rEw9sIffHlv1VP65x1NB8GeXezIv6HONk1SIk=", "digest": "655a06bac038ec3a858c17115d95baa39490c681ec16512301c0437419f8835e", "result": "aDFySRINgetqnvVzhAIOnId/vYr8dFjPMqB+CcuB+Aewf7iVRxsEklEkwsZCXLoyryMUAQnXL1Jyc50TCfUcDA==", "custom": { "moment": "2025-04-05T14:30:10.000Z", "status": "active" } }'{
"luid": "$wlt.-01xK9pStU3eT5xY4",
"hash": "0c91fa00006ddaf9476992370ba7209b4815f974d57fa1340e7b194afe37863b",
"data": {
"handle": "tesla-bank-wallet",
"custom": {
"name": "Tesla Bank Wallet",
"description": "Primary wallet for Tesla Bank"
}
},
"meta": {
"status": "active",
"moment": "2025-04-05T14:30:10.020Z",
"owners": [
"dsZvr0rEw9sIffHlv1VP65x1NB8GeXezIv6HONk1SIk="
],
"proofs": [
{
"signer": "tesla-bank-admin",
"method": "ed25519-v2",
"digest": "ae6506402682b12e805b1d75cf3997f18b41e5a24eb318fb223b7e5e39ca40ed",
"public": "dsZvr0rEw9sIffHlv1VP65x1NB8GeXezIv6HONk1SIk=",
"result": "0H17ehu2rXMaNKwqV7l2EDe1VGqJbOgCFCq+8D5tVsz1qp7D6TXjfNTatijNpFi7nLlYf+LhlqLLnVSm1aMVAA==",
"custom": {
"moment": "2025-04-05T14:30:00.000Z",
"status": "created"
}
},
{
"signer": "system",
"method": "ed25519-v2",
"digest": "75545655dad3c6ac9a9e7552262de308ed18e7377d6d4fe273d2254c86a9e5a3",
"public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
"result": "4NdQ4MSg7RoHtBEX8lUe9uxfNgfhcHLybvFyNLBzlJy7s78mBPxjCjErn7YQX4vxGdkm3zcpo+4bkJejO2oUDQ==",
"custom": {
"luid": "$wlt.-01xK9pStU3eT5xY4",
"moment": "2025-04-05T14:30:00.050Z",
"status": "created"
}
},
{
"signer": "tesla-bank-admin",
"method": "ed25519-v2",
"digest": "655a06bac038ec3a858c17115d95baa39490c681ec16512301c0437419f8835e",
"public": "dsZvr0rEw9sIffHlv1VP65x1NB8GeXezIv6HONk1SIk=",
"result": "aDFySRINgetqnvVzhAIOnId/vYr8dFjPMqB+CcuB+Aewf7iVRxsEklEkwsZCXLoyryMUAQnXL1Jyc50TCfUcDA==",
"custom": {
"moment": "2025-04-05T14:30:10.000Z",
"status": "active"
}
}
]
}
}{
"hash": "b7eb7ccf5ffc126951e13e29a8dcfdaf95db859715d4edfc2d16f59a79d4cd58",
"data": {
"reason": "auth.unauthorized",
"detail": "Invalid token."
},
"meta": {
"proofs": [
{
"signer": "system",
"method": "ed25519-v2",
"digest": "3acece870c4118bfe4223118e4d2f3cfd5b8947a7093785b66d49aa57fa2890a",
"public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
"result": "gnK63DqqWDY/UXvnZHixDKPKS6tfeGHgdARylnPiJLwQGyYxuD97TYbSg2wrzsf/bDrHwQYZaf8Gu5ryYP0UAA==",
"custom": {
"moment": "2025-04-05T14:30:00.000Z"
}
}
]
}
}{
"hash": "9ec02726b50650add8acfd124c6defeb978a9ac252a5de888f9493ddc701e927",
"data": {
"reason": "auth.forbidden",
"detail": "Request is not authorized"
},
"meta": {
"proofs": [
{
"signer": "system",
"method": "ed25519-v2",
"digest": "4f8cbdc38d73348de0c31805c783c84a0fecc6be736d7e187004ba68cd00e675",
"public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
"result": "P3hRnveehtuobb4AIO56XBmiduvmYJbpdmOHltG/IifBEH7QSWdv/0pqled4SO9x1Ne3oXuWxJy40DzMvx1MBA==",
"custom": {
"moment": "2025-04-05T14:30:00.000Z"
}
}
]
}
}{
"hash": "d6c59a6df7165fa4a75159799ca5f5e26e544cbb8769eced3d35d8021f6f7935",
"data": {
"reason": "record.not-found",
"detail": "Signer not found"
},
"meta": {
"proofs": [
{
"signer": "system",
"method": "ed25519-v2",
"digest": "78cf86f34aefcf9da6ed4167a38aac0a2739f68f7bafb1d3e033c01ed1b6cdf1",
"public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
"result": "9Ledk+/iAAtj+uLjGe2afq4kID7n8UQD6UpRpLBCujxFjxddq0uZ2tnYRTAXmYdHDkbF0uXqtNM9qO3xhEtpAA==",
"custom": {
"moment": "2025-04-05T14:30:00.000Z"
}
}
]
}
}{
"hash": "1c084e8dcfb9bb84bc8ea96e9e137b149a34b2bbd85f8e60b4263f5aba980476",
"data": {
"custom": {
"errors": [
{
"instancePath": "/handle",
"schemaPath": "#/properties/handle/pattern",
"keyword": "pattern",
"params": {
"pattern": "^[a-zA-Z0-9_\\-+.]+$"
},
"message": "must match pattern \"^[a-zA-Z0-9_\\-+.]+$\""
}
]
},
"reason": "record.schema-invalid",
"detail": "Schema validator error: data.handle must match pattern \"^[a-zA-Z0-9_\\-+.]+$\""
},
"meta": {
"proofs": [
{
"signer": "system",
"method": "ed25519-v2",
"digest": "7a5febb431719b6f43d7e88e79211308e16ac651b71b339276373fdb4e7c3760",
"public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
"result": "2/1zYw4AaIzsIHfOIC6V/CHw6owbjYHt48cwmFOig0ibeT0IbojLmj1RCRi8W00ka0udPa9WsacWDd7ObMY8CA==",
"custom": {
"moment": "2025-04-05T14:30:00.000Z"
}
}
]
}
}{
"hash": "93a5f4d97a42c2df97f827c58ff7768d02568c15aca931e22b81fa3160ba0df3",
"data": {
"reason": "api.unexpected-error",
"detail": "An unexpected error occurred"
},
"meta": {
"proofs": [
{
"signer": "system",
"method": "ed25519-v2",
"digest": "efaf5360143b586917d9636779ad6e08571c5b06909a20dd0f5eba4bf3be7eae",
"public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
"result": "hERh6Aecj59iR+Fb25OQsHJScOi4t8EiffKSfjlMQdjHMccTnfDlgZFdaJzXzUtpSwy/NHq0l+7ydh3HSWCoAg==",
"custom": {
"moment": "2025-04-05T14:30:00.000Z"
}
}
]
}
}Path Parameters
The unique identifier of the record - it is luid or handle (address).
Header Parameters
The unique identifier of ledger in context for multi tenant requests.
Request Body
application/json
Proof body
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
Delete wallet DELETE
The wallet must have zero balances across all symbols before it can be deleted. If the ledger requires wallets to have anchors, any associated anchors must also be removed first. All balance records for the wallet are permanently removed along with the wallet itself. The [change history](/ledger/reference/api/wallet/list-wallet-changes) remains accessible after deletion — use the record's LUID to query it. Previous record versions can be retrieved for auditing. A [POST alternative](/ledger/reference/api/wallet/drop-wallet-post) is available for clients that cannot send request bodies with DELETE requests. Broadcasts the `wallet-dropped` signal. Use [effects](/ledger/reference/api/effect) to subscribe.
List wallet balances GET
Returns all balances held by this wallet across symbols. A wallet can hold balances in multiple currencies or units of exchange simultaneously. Only symbols that have had balance activity are returned — symbols with no prior transactions will not appear with a zero balance. Balances are returned as integers in the smallest unit defined by the symbol's factor. Divide the balance by the factor to get the decimal value. For example, a balance of `1550` with a symbol factor of `100` represents `15.50`.