Scopes

A scope is one permission the user grants your app. Request only what your features use: fewer scopes means a shorter consent screen and more users who click Allow.

All scopes

ScopeEndpointsWhat the user sees on the consent screen
verify:singlePOST /v1/verifyVerify individual email addresses using your credits
verify:bulkPOST /v1/verify/bulk, file uploads and previewsStart bulk verification jobs using your credits
jobs:readGET /v1/jobs, GET /v1/jobs/{id}, /results, /downloadSee your bulk jobs and download their results
jobs:writeDELETE /v1/jobs/{id} (cancel)Cancel your bulk jobs
webhooks:manageAll /v1/webhooks endpointsCreate, change and delete webhooks on your account
credits:readGET /v1/creditsSee your credit balance and usage
monitors:readGET /v1/monitors, GET /v1/monitors/{id}, /runsSee your deliverability monitors and their results
monitors:writePOST, PATCH, DELETE /v1/monitors, POST .../runCreate, change, delete and run deliverability monitors
account:readGET /v1/meSee your name, email address, account type and credit balance

OAuth apps cannot request the * scope. It exists only for API keys. Domain tools under /v1/tools follow the same rules as for API keys; see Domain Tools.

Requesting scopes

  • Send scopes space separated in the scope parameter of the authorize URL: scope=verify:bulk%20jobs:read%20account:read.
  • The token response has a scope field with what was granted. Store it with the tokens and check it before you call an endpoint.
  • A call without the right scope returns 403 with error code insufficient_scope.
  • To add a scope later, send the user through the authorize URL again with the full new list. The consent screen shows only the new permissions. The new grant replaces the old one.

Least privilege

Ask for what you use today

If your app only verifies signups one at a time, request verify:single and nothing else. Add verify:bulk and jobs:read the day you ship list imports, not before.

Add account:read for a better connected state

account:read lets you show "Connected as jane@acme.com, 12,400 credits" and warn before a job runs out of credits. It is low risk and users expect it.

Write scopes get extra review

webhooks:manage, jobs:write and monitors:write change things in the user's account. Reviewers will ask what feature uses them. Unused write scopes are the most common reason a review is sent back.

Common sets

App typeScopes
Signup form or CRM that checks one address at a timeverify:single account:read
List cleaning or import featureverify:bulk jobs:read account:read
Reporting dashboardcredits:read jobs:read monitors:read
AI agent or MCP clientverify:single verify:bulk jobs:read jobs:write credits:read

More in Build an App