Scopes
Scopes define what your app can access on behalf of a user. They are declared when you register your app and shown to the user on the consent screen. Users grant or deny each scope individually. Request only what you need.
Available scopes
| Scope | What it grants |
|---|---|
| identity | Display name and avatar. Always included, cannot be omitted. |
| wallet | Read the wallet balance and charge it through the proxy. Required for any metered product. |
| Verified email address. Request it only if your product needs it for delivery or account recovery. | |
| profile | Extended profile data: bio, social links, and public join date. |
| community | Community posts and reviews written within your product's context. |
Declaring scopes
Scopes are set in the developer dashboard when you create or edit your app. They cannot be changed at runtime. If you need additional scopes after launch, update your app in the dashboard. Users who already accepted will see a re-consent screen on their next visit showing the new scopes.
Reading granted scopes in the SDK
After consent, the SDK exposes the granted scopes on the user object returned
by onReady:
CladiorSDK.init({
appId: 'your-app-id',
onReady: (user) => {
console.log(user.grantedScopes);
// e.g. ['identity', 'wallet', 'email']
},
}); If a user denied a scope that your product requires, handle the missing scope
gracefully in onReady rather than crashing.
Show a message explaining what the scope is needed for and offer a re-consent button.
Scope minimization
The consent screen shows every scope you declared. A long list of scopes reduces conversion. Request only what your product needs at launch. You can add more scopes later as you ship features that require them.
The identity and wallet scopes are the minimum for a working metered product. Most apps need nothing else.