Skip to content
better-i18n.com
इस पेज पर

Scope reference #

ScopeDefaultWhat it opens
org:readOnOrganization metadata
projects:readOnList and get projects
projects:writeOffCreate/modify project settings
keys:readOnList translation keys
keys:writeOnCreate, update, delete keys
translations:readOnRead translations
translations:writeOnWrite translations (drafts)
translations:publishOffPublish to the public CDN
content:readOnRead Content CMS entries
content:writeOnWrite Content CMS entries
content:publishOffPublish content entries
glossary:readOnRead glossary terms
glossary:writeOffModify glossary terms

Default vs destructive scopes #

Default-on scopes are pre-checked on the consent screen. The user can uncheck any of them.

Default-off scopes (marked Off above) require the user to explicitly opt in. They surface a yellow warning on the consent screen because they can modify production-facing content:

  • translations:publish — pushes to the public CDN
  • content:publish — publishes content entries
  • projects:write — changes project structure
  • glossary:write — rewrites brand terminology

Endpoint → scope mapping #

MethodEndpointRequired scope
GET/api/oauth-client/meNone (identity, access token)
GET/api/oauth-client/organizationsorg:read
GET/api/oauth-client/organizations/:orgId/projectsprojects:read
GET/api/oauth-client/organizations/:orgSlug/projects/:projectSlug/modelscontent:read
POST/api/oauth-client/v1/projectsprojects:write
GET/api/oauth-client/v1/projects/:projectIdprojects:read
POST/api/oauth-client/v1/projects/:projectId/languagesprojects:write

Translation key, translation value, publishing, glossary, and Content CMS write operations use the same scopes through the MCP tools while dedicated partner REST endpoints roll out.

Requesting scopes #

Pass scopes as a space-separated string in the scope query parameter:

Code
scope=org:read+projects:read+keys:read+keys:write+translations:write

Request only what you need. Users are more likely to approve integrations that ask for fewer permissions.