
Custody API for on-chain products
Programmatic vaults, deposit addresses, balances, and transfers — with ZenVault as the MPC custody layer, so your code never touches private keys or signing. One REST API, signed webhooks, versioned.
Vaults & balances
Custody accounts per user, merchant, or desk. Activate assets, generate deposit addresses, read live balances.
Transfers
Internal moves, external withdrawals, contract calls, and ERC-20 approvals — one clear state machine.
Webhooks
Signed, at-least-once delivery for deposits and transfer lifecycle. Verify with HMAC, dedupe on event id.
Gas, handled
Fund one gas wallet per workspace; ZenVault tops up your web3 vaults on demand and tells you when to refill.
Policy & approvals
Hold or reject risky movements before signing, with an approvals queue and a full audit trail.
Compliance (KYT)
Every outbound movement screened for sanctions and wallet risk at the custody layer.
Send a withdrawal in one call
Authenticate with a workspace key, send an idempotent request, track it to completion over webhooks. See the quickstart →
curl -s -X POST https://api.zenvault.io/api/v1/transfers/external \
-H "Authorization: Bearer $ZENVAULT_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"srcAccountId":"<id>","assetCanonical":"USDT_ETHEREUM",
"amount":"250.00","destination":{"externalWalletId":"<wallet>"}}'