All wallet routes require:Documentation Index
Fetch the complete documentation index at: https://docs.calmtreasury.xyz/llms.txt
Use this file to discover all available pages before exploring further.
- A valid
calm_sessioncookie (callPOST /v1/sessionfirst) :addressmatches the cookie’s bound wallet (else 403wallet_token_mismatch)
credentials: "include".
GET /v1/wallets/:address
Read current state for the wallet. Proxied from Bridge — no caching.
Echoed from the URL.
not_started | incomplete | under_review | active | rejected.
Derived from Bridge’s customer status.True after the user has accepted Bridge’s ToS via the hosted page.
session_required, session_invalid, wallet_token_mismatch,
invalid_wallet, customer_not_registered, bridge_error.
POST /v1/wallets/:address
Register a new (app_id, wallet) pair. Creates the Bridge customer and the
local mirror row.
Body
Must be unique across the entire Bridge dev account. Bridge rejects
duplicates with
email_already_in_use.ISO 3166-1 alpha-2 (e.g.
"US"). Normalized to uppercase server-side.validation_error, wallet_token_mismatch, invalid_wallet,
already_registered (409), email_already_in_use (400, surfaced from
Bridge), bridge_error.
POST /v1/wallets/:address/tos-link
Returns Bridge’s hosted ToS URL. Iframe it; Bridge sends a postMessage with
signedAgreementId on accept.
customer_not_registered (404), wallet_token_mismatch,
bridge_error.
POST /v1/wallets/:address/kyc-link
Returns Bridge’s hosted KYC URL. Same iframe pattern as the ToS link, but no
postMessage — the SDK polls GET /v1/wallets/:address to watch the state
transition.
customer_not_registered (404), wallet_token_mismatch,
bridge_error.