Light AIDocs Beta Open Light AI

API reference

POSTConfirm the organization an unbound connect link reached

POST /v1/partner/grants/{grant_id}/confirm: A link without a bound organization activates only after you confirm the organization name the owner approved with (shown on the pending grant).

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

A link without a bound organization activates only after you confirm the organization name the owner approved with (shown on the pending grant). Live keys only, holding every scope the grant asks for.

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#

An empty JSON object ({}) or no body.

Response 200#

The active 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