The API authenticates requests with a bearer token in the Authorization header:
There is no OAuth flow today — a token is a long-lived credential you generate directly in the app and pass with every request. OAuth 2.1 (for third-party and agent integrations that shouldn’t share a static token) is designed and roadmapped, not yet built — this page will be updated when that ships.
Every token is prefixed by its environment:
Tokens are created with a specific set of scopes — string permissions like surveys:read , surveys:write , distribution:write , or contacts:suppress — rather than blanket account access. A request fails with insufficient_scope (see Errors ) if the token’s scopes don’t cover the action being called.
Some representative scopes:
For reports:export , CSV and Excel exports work on every plan that has API access, and SPSS export needs Growth and above.
Grant only the scopes an integration actually needs. The full, current scope list is visible when creating a token in the app. Token management itself (creating, rotating, revoking) isn’t part of the API — it’s app-only, from Settings → API Tokens ; see Rotating and revoking tokens below.
Every token is bound to a single account and workspace. Requests are always scoped to that workspace — there’s no way for a token to read or write data belonging to a different workspace, including another workspace you personally belong to. Use a separate token per workspace if you’re integrating with more than one.
Tokens can be rotated or revoked from Settings → API Tokens in the app at any time, with immediate effect. There’s no grace period on revocation — a revoked token starts failing authentication on its very next request.