Skip to content

Authentication & permissions

  • Format: ws_live_ + 40 hexadecimal characters.
  • A key belongs to the workspace (not a person) and is passed as a header: Authorization: Bearer ws_live_….
  • Shown only once at creation; we only store a hash.
  • Revocable anytime from the dashboard: immediate effect on the API and the MCP.

Every key carries precise permissions, chosen at creation:

Scope Grants access to
leads:read / leads:write Read leads / update status & tags
conversations:read Inbox + message history
lists:read / lists:write List / create lists, import contacts
campaigns:read / campaigns:write List / pause & resume
messages:send Send messages (anti-ban enforced)
bookings:read Booked meetings
groups:read Managed WhatsApp groups
webhooks:manage Create / delete / test webhooks

A key without the right scope gets 403 insufficient_scope. Grant each integration the minimum it needs.

Requests are limited per workspace per minute according to your plan (60 to 1,000 req/min). Every response carries X-RateLimit-Limit / X-RateLimit-Remaining; when exceeded: 429 rate_limited + Retry-After.

Message sends additionally have their own daily budget per WhatsApp number (X-Quota-*): see anti-ban.

  • Store the key in a secrets manager, never in code.
  • One key per integration (CRM, Zapier, scripts…): revoking one doesn’t break the others.
  • Rotate if you suspect a leak: create the new one, switch, revoke the old.