Light AIDocs Beta Open Light AI

API reference

GETThe organization's line-item catalog

GET /v1/catalog: The templates the organization quotes from (built-in ones always included, replaced by the organization's "My defaults" copy when it saved one) with each line item's stable code (matching line_items[].code on quotes) and default price,

GEThttps://api.light-ai.app/v1/catalog

The templates the organization quotes from (built-in ones always included, replaced by the organization's "My defaults" copy when it saved one) with each line item's stable code (matching line_items[].code on quotes) and default price, resolved as the app prices a new quote. Mini lights carry sqft_per_set. Never costs.

Scopequotes: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.

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#

Templates and their line items.

objectstringrequired#
Always list.
dataobject[]required#
data[].idstringrequired#
Id prefix tpl_.
data[].objectstringrequired#
Always catalog_template.
data[].namestringrequired#
data[].service_typestring | nullrequired#
data[].is_defaultboolean | nullrequired#
data[].is_systemboolean | nullrequired#
data[].fixtureboolean#
Always true.
data[].itemsobject[]required#
data[].items[].codestring | nullrequired#
data[].items[].namestring | nullrequired#
data[].items[].descriptionstring | nullrequired#
data[].items[].categorystring | nullrequired#
data[].items[].measurement_typestring | nullrequired#
data[].items[].unitstring | nullrequired#
The pricing unit of unit_price. One of: ft, sqft, each, set.
data[].items[].unit_priceMoney | nullrequired#
The default price a new quote starts from: the template's own pricing, else the organization's saved defaults, else Light AI's defaults. Per foot for C9, per set for mini lights; null for custom items (priced per quote).
data[].items[].sqft_per_setnumber | nullrequired#
Mini lights only: the square feet one set covers. Quote lines measure mini lights in square feet; sets = ceil(quantity / sqft_per_set). Null for other items.
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