Endpoints
When HandCash Desktop is running and unlocked, apps reach the wallet on loopback:
Use the primary HTTPS endpoint when available; fall back to
3321 if the primary is unreachable (some environments reject the local certificate).
Ownership
- Desktop owns the local BRC-100 bridge and the permission UX.
- Your app must present a clear origin the wallet can approve or deny.
- Method payloads should match BRC-100. HandCash-specific migrate / claim helpers may be origin-gated to HandCash hosts.
Discovery
UsePOST /getVersion with {} as the body. This is the BRC-100 substrate
probe used by wallet clients:
GET /health does not prove that the renderer is unlocked and ready to answer
wallet calls. Use getVersion for wallet discovery.
Responses and errors
Successful methods return their BRC-100 JSON result with HTTP200. Errors
are JSON:
Do not retry a mutating request blindly after a transport timeout: the wallet
may have completed it after the caller disconnected. Reconcile by label,
transaction ID, or application protocol state first.
Deadlines
The bridge holds your request while the user decides: roughly 120 seconds for reads and prompts, 300 seconds for spends. Past that you get503 WALLET_BRIDGE_TIMEOUT for a read or 503 WALLET_BRIDGE_PENDING for a
spend, and WALLET_BRIDGE_PENDING may still complete afterwards. If your HTTP
client disconnects, the wallet cancels the pending prompt.
Other transport failures are 503 WALLET_BRIDGE_UNAVAILABLE when the wallet
window cannot answer and 500 HTTP_BRIDGE_ERROR for anything else.
Origin and permission rules
Your origin identifies your app, and the wallet gates methods in tiers: public discovery, a one-time connection, per-action approval, and separate scoped grants for item, token, and catalog reads. Market, migration, handle-claim, and administrative helpers are restricted to HandCash-owned hosts. Full rules, grant behaviour, and every permission error code: Permissions and scopes.Checklist for a first integration
- User installs and unlocks HandCash Desktop.
- Your app probes
getVersionon2121, then3321. - It calls
isAuthenticated, thenwaitForAuthenticationif needed. - The user grants your origin and any action-specific permissions.
- Your app calls standard BRC-100 methods and handles structured errors.
- It never treats cloud Connect
authTokenor WaaS access keys as substitutes for this path.
Related
- Getting started
- Wallet interactions
- Payments and actions
- Permissions and scopes
- Overview
- Protocol: BRC-100
- Live board: App Lab