address_book_whitelist_violation (HTTP 403). An empty address book means withdrawals are unrestricted.
There is no separate enforcement toggle, no status endpoint, and no label editing — the list of entries is the single source of truth. To know whether the whitelist is active, list the entries: a non-empty list means enforcement is on.
Roles. Anyone in the organization can read the address book. All writes (adding and deleting entries) require the acting profile to be an organization owner or admin. Requests by other members fail with
forbidden (HTTP 403).- Implicit enforcement — adding the first entry turns enforcement on; deleting the last entry turns it off.
- Hard delete — removing an entry deletes it permanently. Deleting the last entry is allowed and lifts all withdrawal restrictions for the organization.
- Uniqueness — one entry per
(chain, address)pair. EVM addresses are matched case-insensitively; Solana addresses are matched exactly. - Immutable entries —
address,chain, andlabelare set at creation and cannot be changed. To change a destination or its label, delete the entry and create a new one.
ethereum, ethereum_sepolia, polygon, arbitrum, base, solana, solana_devnet.
The full surface is three endpoints: list, create, and delete.
List entries
The entry list is the only read. Derive enforcement from it: the whitelist is active exactly when the list is non-empty.nextCursor back as cursor to fetch the next page (limit max 200).
Create an entry
label must be 1-120 characters. The address format is validated for the given chain (EVM hex format for EVM chains, base58 public key for Solana chains).
(chain, address) fails with address_book_duplicate_entry (HTTP 409). If this is the organization’s first entry, withdrawal enforcement is now active — subsequent withdrawals must pay out to an address in the book.
Delete an entry
Permanently removes an address from the whitelist. The response returns the removed entry.Error reference
| Code | HTTP | Meaning |
|---|---|---|
validation_error | 400 | Missing/invalid fields (e.g. label length, invalid id). |
unsupported_chain | 400 | chain is not in the supported chain list. |
invalid_destination_address | 400 | Address format is invalid for the given chain. |
forbidden | 403 | Acting profile is not an organization owner or admin. |
address_book_entry_not_found | 404 | Entry does not exist for this organization. |
address_book_duplicate_entry | 409 | An entry already exists for this (chain, address). |
address_book_whitelist_violation | 403 | Returned by withdrawal creation when the address book has entries and the destination is not one of them. |