Authorization header.
Generate an API key
- Go to Settings → Access in the OpenCX dashboard.
- Click Create API Key.
- Give it a name (e.g. “Production”, “Staging”).
- Choose access level:
- Full access — the key can call every endpoint with no restrictions.
- Custom scopes — select only the resources and actions (read / write) this key needs.
- Copy the key.
Existing keys created before scopes were introduced remain full-access.
Using the key
Pass the key as a Bearer token in theAuthorization header on every request:
Scopes
Scopes restrict an API key to specific resources and actions. A full-access key bypasses all scope checks, while a scoped key can only call the endpoints it was granted. Each scope follows the patternresource:action, where action is read (GET / list) or write (create / update / delete).
Available scopes
Read-only resources (Audit logs, Handoff analytics, Impact report, SLA
analytics) have no write scope. Media is write-only — there is no
media:read. Salesforce MIAW only exposes a write scope for sending webhook
events.Workflows also expose
workflows:trigger, granted independently of read /
write. It only authorizes calls to a workflow webhook trigger URL whose
trigger configuration has Access Control set to Private (Authentication
Required). Public webhook triggers do not require any scope.Error responses
401 — invalid or missing key
Best practices
- Never commit keys to source control. Use environment variables or a secrets manager.
- Rotate keys periodically. You can create multiple keys and revoke old ones from the dashboard.
- Use separate keys for each environment (production, staging, development) so revoking one doesn’t break the others.
- Use scoped keys in production. Grant only the permissions each integration needs (principle of least privilege).
- Prefer separate keys per integration so revoking one doesn’t break others, and each gets only the scopes it needs.