Light AIDocs Beta Open Light AI

API reference

PATCHSet your reference and metadata for a connected organization

PATCH /v1/partner/grants/{grant_id}: external_reference (e.g.

PATCHhttps://api.light-ai.app/v1/partner/grants/{grant_id}

external_reference (e.g. a HighLevel locationId) is echoed in every event of that organization, for routing.

CredentialPartner API key (a key of a partner account).
Test modeLive keys only (answers 400 test_mode_unsupported to a test key).
IdempotencyIdempotency-Key supported. See Idempotency.

Path parameters#

grant_idstringrequired#
The grant id (grant_…). Id prefix grant_.

Headers#

Light-AI-Versionstring#
Pin a dated API version (defaults to the key's version). One of: 2026-11-01.
Idempotency-Keystring#
Retry-safe writes: the same key and body replay the first response for 24 hours (Idempotent-Replayed: true). 8–128 characters.

Request body#

external_referencestring | null#
Your id for this contractor (e.g. a HighLevel locationId). null or "" clears it. 1–255 characters.
metadataobject | null#
Replaces the metadata; null is absent (send {} to empty it).

Response 200#

The grant.

idstringrequired#
Id prefix grant_.
objectstringrequired#
Always grant.
statusstringrequired#
One of: pending, active, superseded, revoked, suspended, expired.
versionintegerrequired#
scopesstring[]required#
One of: leads:read, leads:write, clients:read, clients:write, projects:read, projects:write, quotes:read, quotes:write, quotes:share_link, quotes:asset_links, webhooks:manage, events:read, mockups:read, mockups:write, forms:read, forms:write.
external_referencestring | nullrequired#
metadataobjectrequired#
client_labelstring | nullrequired#
granted_attimestamprequired#
RFC 3339 timestamp (UTC, milliseconds).
confirmed_attimestamp | nullrequired#
RFC 3339 timestamp (UTC, milliseconds).
pending_expires_attimestamp | nullrequired#
RFC 3339 timestamp (UTC, milliseconds).
revoked_attimestamp | nullrequired#
RFC 3339 timestamp (UTC, milliseconds).
organizationobject | nullrequired#
organization.idstringrequired#
Id prefix org_.
organization.namestring | nullrequired#
partnernull#

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).
409Conflict. stale_state, conflict, idempotency_in_progress, idempotency_scope_mismatch, quote_already_decided, quote_not_current, billing_review_required
413Request bodies are limited to 256 KB.
415The body is not JSON: send Content-Type: application/json. unsupported_media_type
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