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.
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-Address': 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-Address': 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-Address", 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": []
}Updated 8 days ago
