Skip to main content

Authentication

Every request (except register, login, health, and the Stripe webhook) needs a Authorization: Bearer <token> header. Two token types work:

TokenLooks likeSourceUse for
Personal Access Token (PAT)wap_pat_<hex>.<secret>POST /v1/account/keysserver-to-server, long-lived
Session JWTa JWTPOST /v1/auth/loginthe dashboard / short-lived browser sessions

The secret half of a PAT is shown once at creation — store it securely. Manage keys with GET/POST /v1/account/keys and DELETE /v1/account/keys/{key_id}.

Requests are rate-limited per tenant/key (HTTP 429 + Retry-After). This is separate from the per-number anti-ban pacing described in Protection.