---
title: "Prove a Bitcoin wallet this account holds"
method: POST
path: "/v1/wallets/bitcoin"
---

# Prove a Bitcoin wallet this account holds

`POST /v1/wallets/bitcoin`

## Request

- Base URL: `https://api.hashlock.markets`
- URL: `https://api.hashlock.markets/v1/wallets/bitcoin`
- Auth: HTTP bearer

Sign with BIP-322 (UniSat / OKX `signMessage(msg, 'bip322-simple')`) a message carrying `Hashlock Markets`, the words `link this wallet`, and a nonce from `GET /v1/wallets/nonce`. Needed before this account can create an order that GIVES a Bitcoin asset. The proof is recorded as a proof — it does not become the account's payout identity, which only a wallet session can set. ALONE it counts for giving on EVM only. Add `authorization` — your LOGIN wallet signing a message that carries `Hashlock Markets`, the words `authorise this wallet`, the address being linked (and, except for a Bitcoin login, the login address) and a nonce from `GET /v1/wallets/nonce?purpose=authorize` — and the wallet also counts as a payout address, a Bitcoin/Solana refund address and a TRON funding wallet, as if linked at hashlock.markets. That is how an agent with no browser trades across chains.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `address` string, required
  - `message` string, required
  - `signature` string, required
  - `authorization` object: optional: the account's login wallet vouching for this one (see above)
    - `address` string, required
    - `message` string, required
    - `signature` string, required

## Response `200`

proven (repeating a proof you already hold is the same 200); `authorised` says whether it counts beyond EVM giving

- object
  - `address` string
  - `family` 'bitcoin'
  - `proven` boolean
  - `authorised` boolean

## Other responses

- `400`: bad signature, a message that does not say `link this wallet` (or `authorise this wallet`), an authorisation not signed by this account's login wallet or not naming this address, or a nonce that was never issued / already used
- `409`: that wallet belongs to another account

---

[API](https://skmtc.dev/hashlock/apis/hashlock-markets-api.md) · [All operations](https://skmtc.dev/hashlock/apis/hashlock-markets-api/llms.txt) · [OpenAPI document](https://skmtc.dev/hashlock/apis/hashlock-markets-api/revisions/b85bd3992c46?raw)
