Scope Hierarchy
Scopes are organized into two levels:- Category scopes - Grant access to low/medium sensitivity fields in a category
- Field-level scopes - Required for high/critical sensitivity fields
Available Scopes
Category Scopes
| Scope | Description | Fields Included |
|---|---|---|
identity:read | Basic identity data | humanity_uuid, is_human, country_of_residence, email, phone, wallet_address, nationality |
kyc:read | KYC verification status | kyc_passed, kyc_last_updated_at, document_country, document_expiry_date |
financial:read | General financial data | Trading frequency, exchange balances |
Field-Level Scopes (High Sensitivity)
| Scope | Description | Fields Included |
|---|---|---|
identity:date_of_birth | Date of birth and derived fields | date_of_birth, age, age_over_18, age_over_21 |
identity:legal_name | Legal name from ID verification | legal_name |
identity:address_postal_code | Postal/ZIP code | address_postal_code |
identity:address_full | Complete verified address | address_full |
kyc:document_number | ID document number | document_number |
financial:net_worth | Total net worth | net_worth_total, net_worth_above_10k, net_worth_above_100k |
financial:bank_balance | Bank account balances | bank_balance_total |
financial:loan_balance | Outstanding loans | loan_balance_total |
Profile Scopes
| Scope | Description |
|---|---|
openid | Required for OpenID Connect ID tokens |
profile.full | Complete user profile access |
data.read | Raw data record access |
Preset to Scope Mapping
Each preset requires a specific scope. Here’s the mapping:Identity Presets
| Preset | Required Scope |
|---|---|
humanity_uuid, humanity_score, is_human | identity:read |
country_of_residence, residency_region, nationality | identity:read |
email, phone, wallet_address | identity:read |
palm_verified, social_accounts | identity:read |
date_of_birth, age, age_over_18, age_over_21 | identity:date_of_birth |
legal_name | identity:legal_name |
address_postal_code | identity:address_postal_code |
address_full | identity:address_full |
KYC Presets
| Preset | Required Scope |
|---|---|
kyc_passed, kyc_last_updated_at | kyc:read |
document_country, document_expiry_date | kyc:read |
document_number | kyc:document_number |
Financial Presets
| Preset | Required Scope |
|---|---|
net_worth_above_10k, net_worth_above_100k, net_worth_total | financial:net_worth |
bank_balance_total | financial:bank_balance |
loan_balance_total | financial:loan_balance |
Requesting Scopes
Request scopes during OAuth authorization:Scope Validation
When accessing presets or using the query engine, the API validates that:- The access token has the required scope for the requested data
- The user has consented to share that data
- The credential is valid and not expired
E4003 error:
Sensitivity Levels
Scopes align with data sensitivity levels:| Sensitivity | Description | Example Scopes |
|---|---|---|
low | Minimal privacy impact | Derived fields like age, residency_region |
medium | Standard PII | identity:read, kyc:read |
high | Sensitive PII | identity:date_of_birth, identity:legal_name, financial:* |
critical | Highly sensitive | Tax IDs, SSN (restricted access) |
Best Practices
- Request minimal scopes - Only request what you need
- Explain why - Use clear consent text explaining data usage
- Handle scope downgrade - Users may grant fewer scopes than requested
- Check granted_scopes - The token response includes actual granted scopes
Discovery
Fetch available scopes from the discovery endpoint:scopes_supported and scopes_catalog with detailed metadata for each scope.