Menu

Concepts

Authentication and scopes

Per-user keys, roles, scopes and best practices.

The key acts as you

Each key belongs to one user of the account and acts as that user, never with more access. What it can do is the intersection of:

  1. the scopes chosen for the key;
  2. the user's current role (owner, admin, member or viewer) — if the role changes, the key follows;
  3. the plan modules and the member's access;
  4. during the free trial, read-only.

If the user leaves the account or is deactivated, the key stops working immediately.

How to send it

Authorization: Bearer czk_live_YOUR_KEY

The api-access-token: czk_live_… header is also accepted (with hyphens; proxies drop headers with underscores). Never put the key in the URL.

Scopes

ScopeWhat it allows
account:readRead account, members and plan
contacts:readRead contacts, lists, tags and fields
contacts:writeCreate and update contacts, lists, tags and fields
contacts:deleteDelete contacts
conversations:readRead inbox conversations and messages
conversations:writeAssign, resolve, tag and add notes to conversations
messages:sendSend WhatsApp messages and templates
whatsapp:readRead numbers, health and templates
templates:writeCreate and delete templates at Meta
campaigns:readRead campaigns and metrics
campaigns:writeCreate, start, pause and cancel campaigns
deals:readRead pipelines, stages and deals
deals:writeCreate, update and move deals
automations:readRead automations
automations:writeEnroll and remove contacts from automations
agents:readRead AI agents
agents:writeActivate, pause and take over AI agent conversations
webhooks:manageManage outgoing webhooks
analytics:readRead reports

Members don't get contacts:delete, templates:write or webhooks:manage (owners and admins only). Viewers only get :read scopes.

Security

  • Store the key in a password vault or environment variable, never in code or in the browser.
  • Use allowed IPs when your server has a fixed IP.
  • Grant only the scopes you need and an expiry date.
  • If it leaks, revoke it in Settings → Public API: it takes effect immediately.