API Key Authentication
Include your API key in theX-API-Key header:
Key Format
The checksum enables client-side format validation before making a request:
Key Types
Publishable keys (
cpk) differ from the other types in that they are:
- Scoped to a single organization (returns org context, not user context)
- Limited to a lower default rate (100 requests/minute) suited to client-side use
rate_limit_per_minute, rate_limit_per_day) and optional
expiration (expires_at) apply to every key type, not just publishable ones —
see Rate Limits.
Key Lifecycle
Keys are shown once at creation time. The raw key is never stored — only its SHA-256 hash.Organization Roles (RBAC)
Users belong to organizations through memberships, each with a role:
Roles are evaluated per-organization. A user can be an Owner of one organization and an Editor of another.
Permission Reference
Session Authentication
Browser-based access (Dashboard, admin) uses Django session cookies. This is automatic when logged in and is primarily for internal use. API integrations should always use API key authentication.Security Best Practices
- Never expose
csborcsukeys in client-side code — usecpkpublishable keys instead - Store keys in environment variables, not in source code
- Rotate keys periodically and revoke unused ones
- Use per-key rate limits on publishable keys to prevent abuse
- Set expiration dates on keys used for temporary integrations