List User Wallets
Lists the user's wallets. Addresses live on wallets, not on the user, and a user may hold several: one per chain, and more than one on the same chain. Every wallet-bound operation (buy, sell, OTC, burn, withdraw, recall) names one of these by its id as wallet_id.
A wallet is chain-scoped: its address is valid on every network of its chain. The list carries no balances; read them per wallet with Get User Wallet Networks and Get User Wallet Network Assets. The KYC record is on Get User Wallet.
Required permission: user:view
Request
GET /v2/users/{user_id}/wallets
Parameters
| Name | Type | In | Description |
|---|---|---|---|
user_id | string | path | Required. User ID |
Headers
| Name | Description |
|---|---|
Authorization | Required. Bearer <access_token> |
Example
curl --request GET \
--url '{{baseUrl}}/v2/users/6a87455ad5f439809d488ac3/wallets' \
--header 'Authorization: Bearer <access_token>'
Response
The body is a JSON array (not paginated). A user with no wallet answers [].
[
{
"id": "6a8754e187be1d0e22aa6d83",
"chain_id": "6740e0a10000000000000101",
"chain_name": "EVM",
"address": "0x4a096e485281de1b8bf11a511d39d5b128ef7c4b",
"label": "Main wallet",
"custody": true
},
{
"id": "6a8754e187be1d0e22aa6d91",
"chain_id": "6740e0a10000000000000101",
"chain_name": "EVM",
"address": "0x2222222222222222222222222222222222222222",
"label": "alice@example.com",
"custody": false
}
]
Response Fields
| Field | Type | Description |
|---|---|---|
[].id | string | Wallet ID, the wallet_id other endpoints take |
[].chain_id | string | Chain the wallet lives on |
[].chain_name | string | Display name of the chain |
[].address | string | On-chain address |
[].label | string | Name set at creation or with Rename User Wallet. Wallets imported by migration are labelled with the user's email or external_id |
[].custody | boolean | true when the platform's custody provider holds the keys (created with the user, with Create User Wallet or by migration without wallet); false for a self-custody address imported with Migrate With Wallet |
Errors
| Status | Code | Description |
|---|---|---|
| 400 | 10016 | user_id is not a valid id |
| 400 | 10001 | User not found (domain 1) |
See Errors for the error format and common codes.