Light AIDocs Beta Open Light AI

API reference

GETList clients

GET /v1/clients: List clients

GEThttps://api.light-ai.app/v1/clients
Scopeclients:read
CredentialAPI key: Authorization: Bearer lai_live_… (or lai_test_…). Partner keys add Light-AI-Organization.
Test modeWorks with test keys against simulated test objects.

Query parameters#

limitinteger#
Page size, 1–100 (default 25). 1–100.
cursorstring#
next_cursor from the previous page. At most 400 characters.
sortstring#
updated_asc pages objects in last-change order (for an initial or incremental sync with updated_since). A write that commits late can carry an earlier updated_at, so re-poll from your high-water mark minus 5 minutes and de-duplicate by id + updated_at; GET /v1/events?sort=sync_asc is the gapless change feed. One of: created_desc, updated_asc.
created_aftertimestamp#
Only objects created after this time.
created_beforetimestamp#
Only objects created before this time.
updated_sincetimestamp#
Only objects updated after this time (alias: updated_after). Overlap polls by a few minutes: see sort.
updated_aftertimestamp#
Alias of updated_since.
external_refstring#
<system>:<id> in your own namespace, e.g. jobber:Z2lk123. At most 400 characters.
external_ref_namespacestring#
At most 120 characters.

Headers#

Light-AI-Organizationstring#
Partner keys: the connected organization to act for (org_…). Organization keys may omit it. Id prefix org_.
Light-AI-Versionstring#
Pin a dated API version (defaults to the key's version). One of: 2026-11-01.

Response 200#

A page of clients.

objectstringrequired#
Always list.
dataobject[]required#
data[].idstringrequired#
Id prefix cli_.
data[].objectstringrequired#
Always client.
data[].livemodebooleanrequired#
false for objects created with a test key.
data[].first_namestring | nullrequired#
data[].last_namestring | nullrequired#
data[].emailstring | nullrequired#
data[].phonestring | nullrequired#
E.164, or null when the stored number could not be normalized (see phone_raw).
data[].phone_rawstring | nullrequired#
The number as stored in Light AI.
data[].primary_propertyobject | nullrequired#
data[].primary_property.idstringrequired#
Id prefix prop_.
data[].primary_property.objectstringrequired#
Always property.
data[].primary_property.client_idstring | nullrequired#
Id prefix cli_.
data[].primary_property.is_primarybooleanrequired#
data[].primary_property.property_typestring | nullrequired#
data[].primary_property.addressobject | nullrequired#
data[].primary_property.created_attimestamprequired#
RFC 3339 timestamp (UTC, milliseconds).
data[].primary_property.updated_attimestamprequired#
RFC 3339 timestamp (UTC, milliseconds).
data[].property_countintegerrequired#
data[].external_refsobject[]required#
data[].external_refs[].systemstringrequired#
data[].external_refs[].namespacestring | nullrequired#
data[].external_refs[].idstringrequired#
data[].external_refs[].ownerstringrequired#
self: written by your integration (editable); others are read-only. One of: self, organization, partner.
data[].external_refs[].read_onlybooleanrequired#
data[].created_attimestamprequired#
RFC 3339 timestamp (UTC, milliseconds).
data[].updated_attimestamprequired#
RFC 3339 timestamp (UTC, milliseconds).
data[].fixtureboolean#
Always true.
has_morebooleanrequired#
next_cursorstring | nullrequired#
Pass as cursor to fetch the next page.

Errors#

StatusMeaning
400Bad request. bad_request, test_mode_mismatch, test_mode_unsupported, unsupported_api_version
401Missing or invalid credential. authentication_required, invalid_api_key, api_key_revoked, api_key_expired, api_key_suspended
403Not allowed. insufficient_scope, plan_upgrade_required, organization_paused, organization_off_season, api_disabled, api_access_not_enabled, ip_not_allowed, forbidden
404Not found (also for objects of other organizations and for organizations without an active grant).
422Validation failed. idempotency_key_reused
429Rate limited or daily cap reached. See Retry-After and the RateLimit headers. rate_limited, daily_cap_reached
500Unexpected server error. Safe to retry with exponential backoff; quote the Request-Id to support. internal_error
503Temporarily unavailable. Retry with exponential backoff. service_unavailable