A customer is exposed as a pseudonymous record: a stable id plus
non-identifying metadata. The id is consistent across the customer's bookings,
so you can recognise a returning customer and group their orders without
learning who they are. A key granted customer_data:read also gets the
customer's contact details. See
Conventions → Customer privacy.
Requires the customers:read permission.
List customers
GET /admin/v0/customers
Authorization: Bearer YOUR_API_KEYReturns the organization's customers, newest first, in the paginated envelope.
Query parameters
| Parameter | Type | Description |
|---|---|---|
page | integer | Page index (default 1) |
per_page | integer | Items per page (default 50, max 200) |
updated_since | string | ISO 8601 timestamp; only customers updated at or after it |
marketing_consented | boolean | true for customers who consented to marketing email, false for those who haven't |
Use updated_since for incremental sync of customer records.
Get a customer
GET /admin/v0/customers/{id}
Authorization: Bearer YOUR_API_KEYResponse
{
"data": {
"id": "8f268b4a-8197-438d-90ca-acf8612ad472",
"customer_type": "individual",
"marketing_consented": true,
"created_at": "2026-05-21T09:23:34+02:00",
"updated_at": "2026-05-21T09:23:34+02:00"
}
}Fields
| Field | Type | Notes |
|---|---|---|
id | string | Stable pseudonymous identifier (UUID) |
customer_type | string | individual or company |
marketing_consented | boolean | Whether the customer consented to marketing email. Consent covers the address it was given for, so it turns false when the customer's email changes, until they consent again |
created_at | string | Timestamp |
updated_at | string | Timestamp |
Personal data fields
Only for a key granted customer_data:read; otherwise these keys are absent.
| Field | Type | Notes |
|---|---|---|
name | string | Full name, or null |
email | string | Email address, or null |
phone | string | Phone number, or null |
company_name | string | For company customers, or null |
tax_id | string | Company tax / VAT number, or null |
The API doesn't return a customer's stored address; each order carries its own
billing_address.