Get Profile
Retrieve the authenticated customer's profile
Get Profile
Returns the authenticated user's account information and linked customer profile. If the account does not have an active linked customer profile, the request still succeeds and data.customer is null.
Endpoint
GET /profileAuthentication
Requires a valid JWT access token.
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9...Example Request
curl -X GET "https://edge.tiquo.app/api/client/v1/profile" \
-H "Authorization: Bearer eyJhbGciOiJSUzI1NiJ9..."Response
{
"success": true,
"data": {
"user": {
"id": "user_abc123",
"email": "customer@example.com"
},
"customer": {
"id": "cust_456",
"firstName": "John",
"lastName": "Doe",
"displayName": "John Doe",
"customerNumber": "CUST-000001",
"email": "customer@example.com",
"phone": "+1234567890",
"profilePhoto": "https://example.com/photo.jpg",
"status": "active",
"totalOrders": 5,
"totalSpent": 150.00,
"lifetimeValue": 200.00,
"createdAt": 1704067200000,
"firstActiveAt": 1706745600000
}
}
}User Object
| Field | Type | Description |
|---|---|---|
id | string | The user's unique ID |
email | string | The user's email address |
Customer Object
The customer field is included when the user has a linked customer profile in the organization. If no customer record exists, this field will be null.
| Field | Type | Description |
|---|---|---|
id | string | Customer document ID |
firstName | string or omitted | First name |
lastName | string or omitted | Last name |
displayName | string or omitted | Full display name |
customerNumber | string | Human-readable customer number (e.g. CUST-000001) |
email | string or omitted | Primary email address |
phone | string or omitted | Phone number |
profilePhoto | string or omitted | URL to profile photo |
status | string | One of: active, inactive, banned |
totalOrders | integer or omitted | Total number of orders |
totalSpent | number or omitted | Total amount spent |
lifetimeValue | number or omitted | Customer lifetime value |
createdAt | integer or omitted | Read-only Unix timestamp in milliseconds for when the customer profile was created |
firstActiveAt | integer or omitted | Read-only Unix timestamp in milliseconds for the customer's first qualifying activity |
Created and First Active
createdAt is the time the profile itself was created. It is never rewritten or backdated from customer activity.
firstActiveAt is the time the customer first became active through qualifying customer activity. It is not the database insertion time. Activities performed by staff, systems, integrations, or imports do not set it. The field can be omitted for a legacy or never-active profile until qualifying activity is recorded.
The two values are equal when the customer creates their own account and is immediately active in the same flow. Imported or staff-created profiles can have a later First Active value.
Both fields are system-managed and cannot be changed through PATCH /profile or customer parameter updates.
Errors
| Status | Description |
|---|---|
401 | Invalid or expired access token |
500 | Internal server error |
Code Examples
JavaScript
const response = await fetch('https://edge.tiquo.app/api/client/v1/profile', {
headers: {
'Authorization': `Bearer ${accessToken}`,
},
});
const { success, data, error } = await response.json();
if (success) {
console.log(data.user.email);
console.log(data.customer?.displayName);
console.log(data.customer?.createdAt);
console.log(data.customer?.firstActiveAt);
}Swift
var request = URLRequest(url: URL(string: "https://edge.tiquo.app/api/client/v1/profile")!)
request.setValue("Bearer \(accessToken)", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
let result = try JSONDecoder().decode(ProfileResponse.self, from: data)Kotlin
val client = OkHttpClient()
val request = Request.Builder()
.url("https://edge.tiquo.app/api/client/v1/profile")
.addHeader("Authorization", "Bearer $accessToken")
.build()
val response = client.newCall(request).execute()