Naar de inhoud
Open Nexym

List customers

GET
/api/connect/customers
curl --request GET \
--url 'https://app.nexym.nl/api/connect/customers?per_page=50&page=1' \
--header 'Authorization: Bearer <token>'

A page of customers for the key’s project. No relations are loaded.

This endpoint reads personal data, so every call is written to the project’s access log with the number of records the page belonged to — the same timeline a read in the dashboard lands on.

Requires customers: read (or write).

per_page
integer
default: 50 >= 1 <= 200

Records per page. Values above 200 are silently clamped to 200. The value is not otherwise validated, so send a sensible positive integer.

page
integer
default: 1 >= 1

1-based page number.

A page of customers.

Media typeapplication/json
object
current_page
required
integer
data
required
Array<object>
object
first_page_url
required
string format: uri
from
required

Index of the first record on this page, or null on an empty page.

integer | null
last_page
required
integer
last_page_url
required
string format: uri
links
required
Array<object>

One entry of the paginator’s rendered link list.

object
url
string | null format: uri
label
string
page
integer | null
active
boolean
next_page_url
required
string | null format: uri
path
required
string format: uri
per_page
required
integer
prev_page_url
required
string | null format: uri
to
required
integer | null
total
required
integer
data
required
Array<object>

A customer record. Personal data — every read of this resource is written to the project’s access log.

object
id
integer
project_id
integer
reference

The canonical customer key. A guest, which has no customer number at the source, is keyed by e-mail address instead.

string
name
string
email
string | null format: email
is_guest

Inferred from an order rather than synced from the system that owns customers.

boolean | null
discovered_via

Which entity the record was first seen on, for a guest.

string | null
phone
string | null
vat_number
string | null
gender
string | null
date_of_birth

A date-only value, serialised at midnight.

string | null format: date-time
billing

A denormalised address or contact block, stored as JSON exactly as the mapping produced it. Keys vary by connector and by project mapping; treat it as an open object rather than a fixed shape.

object | null
shipping

A denormalised address or contact block, stored as JSON exactly as the mapping produced it. Keys vary by connector and by project mapping; treat it as an open object rather than a fixed shape.

object | null
meta

Free-form store for fields the universal schema does not define for everybody: a connector’s declared extension fields and a project’s own customer fields, each under its own name.

object | null
source_connection_id
integer | null
created_at
string | null format: date-time
updated_at
string | null format: date-time

Example

{
"current_page": 1,
"first_page_url": "https://app.nexym.nl/api/connect/orders?page=1",
"from": 1,
"last_page": 7,
"last_page_url": "https://app.nexym.nl/api/connect/orders?page=7",
"links": [
{
"url": "https://app.nexym.nl/api/connect/orders?page=2",
"label": "2",
"page": 2,
"active": false
}
],
"next_page_url": "https://app.nexym.nl/api/connect/orders?page=2",
"path": "https://app.nexym.nl/api/connect/orders",
"per_page": 50,
"prev_page_url": null,
"to": 50,
"total": 318,
"data": [
{
"id": 2201,
"project_id": 3,
"reference": "CUST-0099",
"name": "Acme Interiors",
"email": "ops@example.com",
"is_guest": false,
"discovered_via": "order",
"phone": "+31 10 123 4567",
"vat_number": "NL123456789B01",
"gender": null,
"date_of_birth": "1984-03-02T00:00:00.000000Z",
"billing": {
"name": "Acme Interiors",
"street": "Voorstraat 12",
"postcode": "1234 AB",
"city": "Middelburg",
"country": "NL"
},
"shipping": {
"name": "Acme Interiors",
"street": "Voorstraat 12",
"postcode": "1234 AB",
"city": "Middelburg",
"country": "NL"
},
"meta": {
"service_code": "INSTALL-STD"
},
"source_connection_id": 7,
"created_at": "2026-04-11T09:55:12.000000Z",
"updated_at": "2026-09-14T13:41:05.000000Z"
}
]
}

No key, a key that does not match, a revoked key, or an expired one. The body says which, and nothing else — an unusable key is never described further.

Media typeapplication/json

Every error this API returns carries a single human-readable message.

object
message
required
string

Examples

No bearer token, or one too short to hold a prefix

{
"message": "Missing or invalid API key."
}

The key is valid but its abilities do not cover this resource at this right.

Media typeapplication/json

Every error this API returns carries a single human-readable message.

object
message
required
string

Examples

{
"message": "This API key lacks read access to orders."
}

The per-minute rate limit was exceeded. The limit is 120 requests per minute by default (CONNECT_API_RATE_PER_MIN), counted per API key — or per IP address for a request that never authenticated.

Media typeapplication/json

Every error this API returns carries a single human-readable message.

object
message
required
string

Examples

Examplelimited
{
"message": "Too many requests — slow down."
}
Retry-After
integer

Seconds until the limit resets.

X-RateLimit-Limit
integer

Requests allowed per minute.

X-RateLimit-Remaining
integer

Requests left in the current window.