Authentication and scopes
Send the correct Authorization header and request the scopes your integration needs
Authentication modes in the live API
The live public API accepts two credential types in the Authorization header:
- OAuth bearer tokens:
Authorization: Bearer <access-token> - API keys:
Authorization: sk-apik_<id>.<secret>
If you use an API key, do not add a scheme prefix. Send the raw key value.
Scope model
Scopes follow {resource}:{action} naming. The current public API scopes are:
Some engagement reads also require additional scopes when you request expansions:
expand=contactsrequirescontacts:readexpand=ownerrequiresusers:read
Bearer tokens
- Use bearer tokens when you need delegated user access.
- Tokens should be workspace-scoped and include the supported resource scopes required by the routes you call.
- OAuth apps cannot request
workspace:admin. - Missing, expired, or malformed tokens return
401with aWWW-Authenticatechallenge.
API keys
API keys are best for server-to-server integrations:
- Format:
sk-apik_<id>.<secret> - Sent as the full
Authorizationheader value - Scoped to the workspace and permissions assigned to the key
- Can be issued with
workspace:adminwhen full public API access is needed - Ideal for backend jobs, sync workers, and ingestion services