Groupilot Docs

Authentication and scopes

API keys, OAuth access tokens, the three scopes and what each one allows.

Every request to /v1 carries a bearer token:

Authorization: Bearer gp_live_xxxxxxxxxxxxxxxx

Two kinds of token exist.

TokenLooks likeForObtained
API keygp_live_…Your own account, Make, n8n, scripts, a local MCPSettings, Integrations
OAuth access tokengp_at_…A platform acting for its usersConnect OAuth

Both resolve to one project (one WhatsApp number) and a list of scopes. Every call runs with the same rights as the owner of the project in the app: a key can never read or write beyond what its owner sees.

Scopes

ScopeAllows
readEverything under GET: project, events, occurrences, communities, sequences, planned sends, deliveries, broadcasts, notifications
writeConfigure: create and update events, pause and resume, sequences and messages, sync, resync, media uploads, webhooks, member webhook, backup admin
sendSend now: one-off messages, edit, cancel and retry a planned send, broadcasts

send is separate from write on purpose: a send consumes the reputation of your customer's WhatsApp number. Give a partner platform read and write, keep send for tools you trust.

Errors

HTTPCodeMeaning
401unauthorizedMissing token
401invalid_api_keyInvalid, malformed, revoked or expired token
403api_not_enabledThe API is not enabled on this project
403insufficient_scopeThe token lacks the scope of this endpoint. The message names it.

Good habits

  • One key per integration, named after it. Revoke the one you stop using.
  • Never put a key in a URL, a log or a client-side app. Server to server only.
  • Rotate a key by creating a new one, switching, then revoking the old one. A revoked key stops working within a minute.
  • Idempotency-Key is scoped to the caller: the API key, or the grant for an OAuth token.
  • Keys are stored hashed. If you lose one, create another: nobody can show it to you again.

On this page