API Key Management
API keys allow your integrations to authenticate with SalesOS. You can create and manage keys in two ways:Via Dashboard
Point-and-click — best for most users
Via API
Programmatic — for automation and CI/CD
API key management requires the admin.integrations capability. Tenant owners and admins have this by default.
Via Dashboard
The simplest way to create an API key is through the SalesOS Dashboard.Open the Dashboard
Go to dashboard.play2sell.com and log in with your admin account.
Create a new key
Click Create API Key and fill in:
- Name — A descriptive name (e.g., “CRM Nightly Sync”, “Website Forms”)
- Scope — Select
default:syncfor standard integrations - Rate limit — Requests per hour (default: 1,000)
- Expiration — Optional expiry date
Managing keys in the Dashboard
From the same Integrations > API Keys page you can:- View all active, revoked, and expired keys
- Revoke a key — immediately stops it from working
- Delete a key — permanently removes it (prefer revoking to keep audit history)
- Monitor usage — see request count and last used date
Via API
For automation, CI/CD pipelines, or custom admin panels, you can manage keys programmatically.Authentication
| Method | Who | How |
|---|---|---|
| JWT (Bearer token) | Tenant admins | Token from Dashboard session. Keys are scoped to your tenant automatically. |
| service_role | Platform admins | Internal service key. Must provide X-Tenant-Id header or tenant_id in body. |
Create a Key
- cURL (JWT)
- cURL (service_role)
- JavaScript
List Keys
The full API key and key hash are never returned in list responses.
Revoke a Key
Delete a Key
Available Scopes
| Scope | Grants access to |
|---|---|
default:sync | sync_collaborators and sync_activities endpoints |
leads:read | Read lead data |
leads:write | Create and update leads |
An empty
scopes array means the key has no scope restriction — it can access any endpoint that accepts API key auth.Best Practices
Use multiple keys for different integrations
Use multiple keys for different integrations
Create separate keys for each integration (CRM sync, website forms, partner API). This way, if one key is compromised, you only need to rotate that one.
Set expiration dates
Set expiration dates
Keys without expiration live forever. Set
expires_in_days to enforce regular rotation — 90 days is a good default.Use minimal scopes
Use minimal scopes
If a key only needs to sync activities, give it
default:sync only. Don’t leave scopes empty unless the key truly needs full access.Monitor usage
Monitor usage
Check
usage_count and last_used_at in the list response. Keys that haven’t been used in months may be candidates for revocation.Rotate keys without downtime
Rotate keys without downtime
- Create a new key
- Update your integration to use the new key
- Verify the new key works
- Revoke the old key
Next Steps
Authentication
Learn about API key formats and security
Default Integration
Start sending activities with your new key

