For AI agents: a documentation index is available at the root level at /llms.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Permissions your OAuth app requests from a Brevo user
Scopes declare what a Brevo user is consenting your app to do on their behalf. You include them in the authorization request, the user sees them on the consent screen, and they’re embedded in the issued access token.
Naming convention
{resource}[.{sub-resource}]:{action}
resource — the API area (e.g. contacts, crm, webhooks)
sub-resource — optional, used to split large areas (e.g. transactional.email, campaigns.sms)
action — either read (GET access) or write (create/update/delete access)
:write does not imply :read. If your app needs to both read and modify a resource — for example, list contacts before updating them — request both scopes.
Scope catalog
Each scope’s name, what it grants, and the API paths it authorizes. Paths are prefixes — /contacts covers every endpoint under /contacts/.... :read authorizes GET requests on those paths; :write authorizes POST, PUT, PATCH and DELETE on the same paths.
Scopes are grouped by category — the same grouping returned by brevo app available-scopes. Use the filter to find a scope by name, description or endpoint.
32 of 32 scopes
Account
account:readRead account info, senders and inbound feeds.
Prefer the terminal? Run brevo app available-scopes --web to browse this same catalog in a local page, or brevo app available-scopes --json for the raw list.
Requesting scopes
Scopes go in the scope query parameter of the authorization request, space-separated and URL-encoded.
The user sees a consent screen listing the human-readable name and description of each requested scope before authorizing.
Inspecting scopes in a token
Every issued access token is a signed JWT and includes a scope claim — a space-separated string of the scopes granted to that specific token. Decode the JWT or call the introspection endpoint to verify what a token can do.