Creates a client. name and phone are required. The phone number is deduplicated within the Location: if another (non-deleted) client already owns it, the request fails with 422 phone_taken. That signal is part of clients:write (no clients:read_contact required); it does not reveal the other client's id or contacts. Phone-bearing writes are audited and rate-limited against enumeration. Requires Idempotency-Key.
Contact fields in the response follow the redaction contract: without clients:read_contact they are returned as null and listed in redacted_fields, never as a placeholder string.
- 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 POST \
'https://developer.alteg.io/_mock/en/b2b-v3/openapi/locations/{location_id}/clients' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"name": "Demo",
"surname": "Client",
"phone": "+351210000175",
"email": "demo.client@example.com",
"birth_date": "1990-04-12"
}'The created client.
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>.
International phone number. null when absent or withheld — see redacted_fields.
Additional phone number. null when absent or withheld — see redacted_fields.
Names of fields withheld by the PII policy for this object, for example ["phone", "email"]. A withheld contact is always returned as null — never as a masked or empty string, so an integration cannot write a mask back. An empty array means nothing was withheld and a null value simply means no value is stored.
{ "id": 789, "object": "client", "name": "Demo", "surname": "Client", "patronymic": null, "display_name": "Demo Client", "phone": "+351210000175", "additional_phone": null, "email": "demo.client@example.com", "birth_date": "1990-04-12", "comment": null, "discount": 5, "visits_count": 12, "first_visit_at": "2025-11-02T10:00:00+00:00", "last_visit_at": "2026-07-09T11:30:00+01:00", "currency": "EUR", "created_at": "2025-11-02T09:57:15Z", "updated_at": "2026-07-09T09:57:15Z", "sold_amount_minor": 1250000 }