API reference
GETList events
GET /v1/events: Events of the last 30 days your scopes can read.
GET
https://api.light-ai.app/v1/eventsEvents of the last 30 days your scopes can read. events:read or one of leads:read, clients:read, projects:read or quotes:read works: the feed holds only the event types those scopes can read (lead events need leads:read, quote events quotes:read, and so on). Polling integrations should use sort=sync_asc: store next_cursor and pass it back as cursor; every event appears exactly once (no gaps, even for slow transactions). A partner key without Light-AI-Organization lists events of every connected organization under one cursor, each with its grant.
| Scope | events:read |
|---|---|
| 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. |
Query parameters#
Page size, 1–100 (default 25). 1–100.
next_cursor from the previous page. At most 400 characters.
sync_asc is the gapless polling order: store next_cursor and pass it back; every event appears exactly once. One of: created_desc, sync_asc.One of:
lead.created, lead.touched, lead.updated, lead.mockup_ready, client.created, client.updated, client.deleted, project.created, project.stage_changed, quote.published, quote.viewed, quote.external_link_clicked, quote.change_requested, quote.approved, quote.declined, quote.expired, quote.link_disabled, quote.link_enabled, quote.superseded, mockup.completed, mockup.failed, organization.entitlement_changed, grant.created, grant.revoked, api_key.expiring, webhook_endpoint.disabled, ping.Comma-separated event types. At most 1000 characters.
Only events created after this time (first sync_asc poll only).
Partner keys: one grant's events. Id prefix
grant_.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.Response 200#
A page of events.
Always
list.Pass as
cursor to fetch the next page.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). |
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 |