API reference
PATCHUpdate a client
PATCH /v1/clients/{client_id}: Changes the name, email or phone.
PATCH
https://api.light-ai.app/v1/clients/{client_id}Changes the name, email or phone. null (or "") clears a field; a null or "" source_system is absent.
| Scope | clients:write |
|---|---|
| Credential | API key: Authorization: Bearer lai_live_… (or lai_test_…). Partner keys add Light-AI-Organization. |
| Test mode | Works with test keys against simulated test objects. |
| Idempotency | Idempotency-Key supported. See Idempotency. |
Path parameters#
The client id (
cli_…). Id prefix cli_.Headers#
Partner keys: the connected organization to act for (
org_…). Organization keys may omit it. Id prefix org_.Pin a dated API version (defaults to the key's version). One of:
2026-11-01.Retry-safe writes: the same key and body replay the first response for 24 hours (
Idempotent-Replayed: true). 8–128 characters.Request body#
At most 100 characters.
At most 100 characters.
null or "" clears the email. At most 254 characters.
null or "" clears the phone. At most 40 characters.
The system that caused this write (shown as origin.source_system on the resulting events, for loop prevention).
Response 200#
The updated client (id only without clients:read).
Id prefix
cli_.Always
client.false for objects created with a test key.
E.164, or null when the stored number could not be normalized (see phone_raw).
The number as stored in Light AI.
Id prefix
prop_.Always
property.Id prefix
cli_.Always present. Components may be null for addresses entered as one line.
RFC 3339 timestamp (UTC, milliseconds).
RFC 3339 timestamp (UTC, milliseconds).
self: written by your integration (editable); others are read-only. One of: self, organization, partner.RFC 3339 timestamp (UTC, milliseconds).
RFC 3339 timestamp (UTC, milliseconds).
Always
true.Errors#
| Status | Meaning |
|---|---|
400 | Bad request. bad_request, test_mode_mismatch, test_mode_unsupported, unsupported_api_version |
401 | Missing or invalid credential. authentication_required, invalid_api_key, api_key_revoked, api_key_expired, api_key_suspended |
403 | Not allowed. insufficient_scope, plan_upgrade_required, organization_paused, organization_off_season, api_disabled, api_access_not_enabled, ip_not_allowed, forbidden |
404 | Not found (also for objects of other organizations and for organizations without an active grant). |
409 | Conflict. stale_state, conflict, idempotency_in_progress, idempotency_scope_mismatch, quote_already_decided, quote_not_current, billing_review_required |
413 | Request bodies are limited to 256 KB. |
415 | The body is not JSON: send Content-Type: application/json. unsupported_media_type |
422 | Validation failed. idempotency_key_reused |
429 | Rate limited or daily cap reached. See Retry-After and the RateLimit headers. rate_limited, daily_cap_reached |
500 | Unexpected server error. Safe to retry with exponential backoff; quote the Request-Id to support. internal_error |
503 | Temporarily unavailable. Retry with exponential backoff. service_unavailable |