Searches the client base of the Location. Exact phone and email contact searches require clients:read_contact plus the subject contact permission; without that scope the API returns 403 missing_scope/permission_denied, not an empty result. Free-text query remains under clients:read. Contact fields use the redaction contract when contact access is absent. This endpoint is rate-limited.\n\nCursor-paginated list. Default ordering: display_name, id tie-breaker. Cursors use the cursor query parameter, expire after one hour, and are bound to the credential, tenant, and filters. Expired, malformed, or foreign cursors fail with 422 validation_failed using field codes expired_cursor, invalid_cursor, or foreign_cursor.
- Mock serverhttps://developer.alteg.io/_mock/en/b2b-v3/openapi/locations/{location_id}/clients
- Preview resource API contract - endpoint surface is not live yethttps://api.alteg.io/api/v3/locations/{location_id}/clients
curl -i -X GET \
'https://developer.alteg.io/_mock/en/b2b-v3/openapi/locations/{location_id}/clients?phone=string&email=user%40example.com&query=string&limit=25&cursor=string' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'A page of clients matching the search.
Requests left in the most constrained policy window that applies to this request.
On 429, seconds until the most constrained policy frees up; it equals Retry-After there. On a successful response it reports the length of that policy's window rather than the time left in the current one, so treat it as the window size, not as a countdown — the counter to pace against is RateLimit-Remaining.
Most constrained policy applied to the request, as <limit>;w=<window in seconds>.
{ "object": "list", "data": [ { … } ], "has_more": false, "next_cursor": null }