User Information
Retrieve user profile, verification status, and capabilities.
Before You Start
Read the following guides before proceeding:
| Guide | Why |
|---|---|
| Getting Started | Platform overview and setup |
| Api Basics | Required headers and request configuration |
| Authentication | How to obtain access tokens |
| Onboarding | User and wallet registration |
Overview
The user endpoint returns complete account information including profile data, verification status, residence address, and capabilities. Use this endpoint to populate user dashboards and determine feature availability.
Deprecated:
GET /api/v1/user/sharing-tokenandPOST /api/v1/user/sharing-tokenare deprecated.
Get User
Retrieve the authenticated user's account information.
Endpoint
GET /api/v2/user
Response
{
"id": "00000000-0000-0000-0000-000000000001",
"owner": "0xA7E41d5680dE394EaA2ed417169DFf56840Fb3EE",
"chain_id": 8453,
"profile": {
"first_name": "Alex",
"last_name": "Grey",
"date_of_birth": "1990-01-15",
"nationality": "GB",
"email": "[email protected]",
"phone_number": "+447700900123",
"status": "Active"
},
"residence_address": {
"line1": "123 High Street",
"line2": "Flat 4B",
"city": "London",
"state": null,
"post_code": "SW1A 1AA",
"country": "GB"
},
"verification": {
"status": "Approved",
"levels": [
{
"status": "Approved",
"type": "BDD",
"name": "Basic Identity"
},
{
"status": "Approved",
"type": "SDD",
"name": "Standard Due Diligence"
}
],
"documents": [
{
"type": "passport",
"id": "doc_123",
"file_type": "pdf",
"added_date": "2024-01-15T10:30:00Z"
}
]
},
"external_providers": [
{
"type": "cpn"
}
],
"capabilities": [
{
"type": "SepaAccount",
"status": "Active",
"verification_requirements": [
{ "type": "SDD", "order": 1 }
],
"prerequisites": []
},
{
"type": "SepaOut1stParty",
"status": "Active",
"verification_requirements": [
{ "type": "SDD", "order": 1 }
],
"prerequisites": ["SepaAccount"]
}
]
}Response Fields
Root Object
| Field | Type | Description |
|---|---|---|
id | string (UUID) | User account identifier |
owner | string | EOA wallet address that owns this account |
chain_id | integer | Chain where the account was registered (8453 for Base) |
profile | object | User's personal information |
residence_address | object | User's residence address |
verification | object | Verification status and documents |
external_providers | array | Linked external service providers |
capabilities | array | Available capabilities and their statuses |
Profile Object
| Field | Type | Description |
|---|---|---|
first_name | string | First name from KYC |
last_name | string | Last name from KYC |
date_of_birth | string | Date of birth (YYYY-MM-DD) |
nationality | string | Nationality (ISO 3166-1 alpha-2) |
email | string | Email address |
phone_number | string | Phone number with country code |
status | string | Profile status: Active, Pending, Blocked, Deleted |
Residence Address Object
| Field | Type | Description |
|---|---|---|
line1 | string | Primary address line |
line2 | string | Secondary address line (optional) |
city | string | City name |
state | string | State or province (optional) |
post_code | string | Postal code |
country | string | Country (ISO 3166-1 alpha-2) |
Verification Object
| Field | Type | Description |
|---|---|---|
status | string | Overall verification status |
levels | array | Individual verification levels completed |
documents | array | Submitted verification documents |
Verification Statuses
| Status | Description |
|---|---|
None | No verification submitted |
Pending | Awaiting user action |
Applied | Verification data submitted |
InReview | Under review by compliance |
Approved | Verification approved |
Rejected | Verification rejected |
Cancelled | Verification cancelled |
Verification Levels
| Level | Description |
|---|---|
BDD | Basic Due Diligence — identity information and documents |
SDD | Standard Due Diligence — includes address verification |
EDD | Enhanced Due Diligence — additional compliance checks |
Code Examples
const response = await fetch('https://api-baas.wirexapp.com/api/v2/user', {
method: 'GET',
headers: {
'Authorization': `Bearer ${accessToken}`,
'X-User-Wallet': userEoaAddress,
'X-Chain-Id': '8453'
}
});
const user = await response.json();
// Check verification status
if (user.verification?.status === 'Approved') {
console.log('User is verified');
}
// Check capability availability
const sepaCapability = user.capabilities?.find(c => c.type === 'SepaOut1stParty');
if (sepaCapability?.status === 'Active') {
console.log('User can send SEPA transfers');
}import requests
response = requests.get(
'https://api-baas.wirexapp.com/api/v2/user',
headers={
'Authorization': f'Bearer {access_token}',
'X-User-Wallet': user_eoa_address,
'X-Chain-Id': '8453'
}
)
user = response.json()
# Check verification status
if user.get('verification', {}).get('status') == 'Approved':
print('User is verified')
# Check capability availability
capabilities = user.get('capabilities', [])
sepa_capability = next(
(c for c in capabilities if c['type'] == 'SepaOut1stParty'),
None
)
if sepa_capability and sepa_capability['status'] == 'Active':
print('User can send SEPA transfers')package main
import (
"encoding/json"
"fmt"
"net/http"
)
type UserResponse struct {
ID string `json:"id"`
Owner string `json:"owner"`
Verification *Verification `json:"verification"`
Capabilities []Capability `json:"capabilities"`
}
type Verification struct {
Status string `json:"status"`
}
type Capability struct {
Type string `json:"type"`
Status string `json:"status"`
}
func getUser(accessToken, userAddress string) (*UserResponse, error) {
req, _ := http.NewRequest("GET", "https://api-baas.wirexapp.com/api/v2/user", nil)
req.Header.Set("Authorization", "Bearer "+accessToken)
req.Header.Set("X-User-Wallet", userAddress)
req.Header.Set("X-Chain-Id", "8453")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
var user UserResponse
if err := json.NewDecoder(resp.Body).Decode(&user); err != nil {
return nil, err
}
return &user, nil
}
func main() {
user, _ := getUser(accessToken, userAddress)
// Check verification status
if user.Verification != nil && user.Verification.Status == "Approved" {
fmt.Println("User is verified")
}
// Check capability availability
for _, cap := range user.Capabilities {
if cap.Type == "SepaOut1stParty" && cap.Status == "Active" {
fmt.Println("User can send SEPA transfers")
}
}
}Error Handling
| Error Reason | Description |
|---|---|
ErrorNotFound | User account not found |
Error Response Format
{
"error_reason": "ErrorNotFound",
"error_description": "User account not found",
"error_category": {
"category": "CategoryNotFound",
"http_status_code": 404
},
"error_details": []
}
