Authentication
All API requests authenticate with a Bearer token in the Authorization
header:
Token types
A personal access token spans multiple workspaces, so you always pass the
workspace_id in the path. A workspace token is bound to one workspace —
the workspace_id in the path must match, or the request returns 403.
Sandbox tokens use the lct_test_ prefix and are valid only against
test-mode workspaces. Sandbox mode is on the roadmap.
Scopes
Tokens carry granular scopes in three tiers, per resource:
read:<resource>— list and getwrite:<resource>— read + create + updatemanage:<resource>— write + custom actions (issue, mark paid, send, delete)
Resources include invoices, quotes, proformas, credit_notes,
expenses, contacts, bank_accounts. A wildcard like read:* or
manage:* grants the tier across all resources.
Scopes are capped at creation by the issuing user’s own permissions — a token can never grant more than the user has. If the user later loses a role, the token’s effective power shrinks with it.
Errors
A missing or invalid token returns 401:
A valid token without the required scope returns 403 (forbidden).
See Errors.

