Sign inGet an API key
API reference

Authentication

API keys, scopes, IP allow-lists, rate limits.

Authenticate every request with an API key, sent either as a bearer token or in the X-API-Key header.

Authorization: Bearer wk_xxxxxxxxxxxxxxxx
# or
X-API-Key: wk_xxxxxxxxxxxxxxxx

Keys are stored hashed, so we cannot show a key again after creation. If you lose one, revoke it and create a new one. Never put a key in browser code or a mobile app.

Scopes

Each key carries a list of scopes; an endpoint rejects keys that lack the scope it needs with 403 insufficient_scope. Grant only what an integration requires.

ScopeGrants
messages:sendSend messages (POST /messages)
messages:readList and fetch messages
contacts:readList contacts
contacts:writeCreate, update and delete contacts
templates:readList message templates
campaigns:readList campaigns and read their statistics
campaigns:writeReserved for campaign management
webhooks:manageReserved for webhook management

Available scopes: messages:send, messages:read, contacts:read, contacts:write, templates:read, campaigns:read, campaigns:write, webhooks:manage.

Key restrictions

Rate limits

Each key has a per-minute request limit set by your plan (60 per minute if the plan does not define one). Every response includes:

HeaderMeaning
X-RateLimit-LimitRequests allowed per minute
X-RateLimit-RemainingRequests left in the current window
Retry-AfterSeconds to wait — only on 429

On 429 rate_limited, wait for Retry-After seconds and retry. Spread bulk sends out, or use campaigns for large audiences.

Check a key — GET /me

GET/me

Returns the workspace, plan, this month’s message usage, the key’s scopes and the connected numbers.

{
  "workspace": { "id": 12, "name": "Acme Retail" },
  "plan": { "name": "Growth", "monthly_messages": 50000, "api_rate_limit": 300 },
  "usage": { "messages_this_month": 1840 },
  "scopes": ["messages:send", "messages:read"],
  "numbers": [
    { "id": 3, "name": "Support", "display_phone": "+1 415-555-0100", "phone_number_id": "1098765432101", "quality_rating": "GREEN" }
  ]
}