Tenant and environment isolation
API keys resolve a single tenant from the key pair. Environment-bound keys resolve their ownenvironmentId; a sandbox key cannot become a live key by sending a different
x-environment-id header.
Use sandbox keys for development, QA, SharePoint workflow tests, and BI dashboard
prototyping. Use live keys only after live access is approved for the tenant.
Least-privilege scopes
Create separate keys per integration and assign only the scopes that integration needs.| Scope | Use |
|---|---|
tenants.read | Read current tenant profile and context metadata. |
environments.read | Read the environments visible to the API key. |
accounts.read | Read account records and invite metadata. |
kyc.read | Read KYC status, history, summaries, and exports. |
document-reviews.read | Read document review status. |
document-reviews.write | Request a general document from a specific tenant user. |
source-of-funds.read | Read source-of-funds records. |
files.download | Download files through signed file endpoints. |
tenant-users.write | Provision tenant users singly or in bulk. |
invites.write | Create tenant invitation workflows. |
Explicit API-key exposure
API-key access is enabled route by route. Exposed routes must declare an API-key scope. Routes that exist for the dashboard or admin console but do not declare API-key access reject API-key callers with403 key_forbidden.
There are no unscoped API-key routes. New enterprise API groups must add explicit scopes
before rollout.
PII and regulated data
KYC, account, source-of-funds, sanctions, document-review, and contract APIs can contain personal data, financial-source data, or provider-derived compliance data. Store exports and webhook payloads according to your tenant retention policy and regional obligations.Webhook verification
Verify every webhook signature before processing the payload. Store webhookevent.id
for idempotency so retries and manual replays do not create duplicate downstream records.
Webhook endpoint management and delivery-retry APIs are dashboard/JWT-only until
webhooks.read and webhooks.manage scopes are introduced. Outbound webhook delivery
and signature verification are available today.