Developers
Manage custody programmatically: accounts and wallets, deposit addresses, balances, withdrawal and transfer instructions, Travel Rule payloads, and webhooks. Production access follows onboarding.
| POST /accounts | Create a custody account |
| POST /wallets | Create a wallet for an asset |
| GET /wallets | List wallets |
| GET /wallets/{id}/address | Deposit address |
| GET /balances | Balances across the account |
| POST /withdrawals | Submit a transfer (policy engine) |
| GET /transactions | List transaction history |
| POST /travel-rule/messages | Exchange IVMS101 payloads |
| POST /webhooks | Manage webhook subscriptions |
Quickstart
Transfers
Webhooks
Verify the signature and respond 2xx; events retry with backoff. Events include deposit.confirmed, withdrawal.completed and travel_rule.received.
Conventions
API key with HMAC request signing over the timestamp, method, path and body. A short replay window applies; writes require an idempotency key.
List endpoints use cursor-based pagination (limit + cursor).
Structured error objects with stable codes, e.g. policy_violation, rate_limited.
Default 600 read / 60 write requests per minute; 429 responses include a retry hint.
Safely retry writes by reusing an idempotency key; the original result is returned.
Test assets and simulated confirmations; API keys issued from the dashboard after onboarding.
FAQ
Each request carries your API key, a timestamp and an HMAC signature over the timestamp, method, path and body. Writes also include an idempotency key.
After submission, a withdrawal moves through the policy engine and approvals before signing and broadcast. Track status via the API or webhooks.
Yes — a sandbox environment with test assets and simulated confirmations is available for integration.
Tell us about your stack and we’ll set you up with sandbox access.