/clients/{clientId}Get a clientFetch a single client by its UUID. Returns 404 not_found both for unknown IDs and for clients belonging to a different organization — the public API never leaks the existence of cross-tenant resources.
Parameters
clientIdstring · uuidpathrequiredClient UUID.
Responses
Headers
X-RateLimit-LimitThe request cap for the tighter of the per-organization / per-endpoint windows that applied to this request.
X-RateLimit-RemainingRequests remaining in the current window.
X-RateLimit-ResetUnix timestamp (seconds) when the current window resets.
allOf · 2 options
datavaluerequiredThe response payload — shape depends on the endpoint.
metaobjectrequiredPagination metadata — populated on list endpoints, empty on single-resource endpoints.
Show child attributes
cursornull | stringOpaque cursor to pass to the next request.
hasMoreboolean | nullTrue when further pages of results are available.
dataobjectA client record (partner's CRM account / customer). The fields `email`, `phone`, `company`, and `notes` from the v1.0 spec document are not yet populated — tracked as a follow-up.
Show child attributes
accountManagersarray of objectrequiredUsers assigned as account managers for this client. Peers — no primary/secondary distinction. Always present; an empty array signals no managers are assigned.
Show child attributes
Show array items
Minimal user identity surfaced on client records.
emailstring · emailrequiredfirstNamestringrequiredlastNamestringrequireduserIdstring · uuidrequiredStable UUID for this user.
clientTypestringrequiredLifecycle stage of the client (status, not legal entity type). `prospect` → `active` → `churned` is the canonical progression. Use this to answer pipeline/status questions ("who are my prospects?", "who has churned?"). Defaults to `active` on creation when the caller omits the field.
createdAtstring · date-timerequiredUTC timestamp when the client was created.
domainnull | stringPrimary email domain used to auto-assign communications (e.g. `acme.com`).
idstring · uuidrequiredStable UUID for this client.
namestringrequiredDisplay name of the client.
updatedAtstring · date-timerequiredUTC timestamp of the most recent update.
{
"data": {
"accountManagers": [
{
"email": "user@example.com",
"firstName": "string",
"lastName": "string",
"userId": "00000000-0000-0000-0000-000000000000"
}
],
"clientType": "active",
"createdAt": "2026-06-09T00:00:00Z",
"domain": "acme.com",
"id": "8b2d1c4e-3f5a-4e2b-9c8f-1e2d3c4b5a6f",
"name": "Acme Corp",
"updatedAt": "2026-06-09T00:00:00Z"
},
"meta": {
"cursor": "string",
"hasMore": true
}
}errorobjectrequiredShow child attributes
codestringrequiredMachine-readable error category.
detailsobjectOptional per-code context (field names, retry windows, …).
messagestringrequiredHuman-readable description — intended for operator logs, not end-user display.
{
"error": {
"code": "unauthorized",
"message": "Authentication required"
}
}errorobjectrequiredShow child attributes
codestringrequiredMachine-readable error category.
detailsobjectOptional per-code context (field names, retry windows, …).
messagestringrequiredHuman-readable description — intended for operator logs, not end-user display.
{
"error": {
"code": "not_found",
"message": "client not found"
}
}Headers
Retry-AfterSeconds the client should wait before retrying.
errorobjectrequiredShow child attributes
codestringrequiredMachine-readable error category.
detailsobjectOptional per-code context (field names, retry windows, …).
messagestringrequiredHuman-readable description — intended for operator logs, not end-user display.
{
"error": {
"code": "rate_limited",
"details": {
"retry_after_seconds": 30
},
"message": "Rate limit exceeded"
}
}