403 Forbidden with
{ "error": { "code": "FORBIDDEN", "message": "API key does not have access to operation(s): <scopes>" } }.
Scope naming
Scopes use the form<resource>:<verb>. The available scopes today:
Endpoints addressed by a client and a site — linking and unlinking the two
(
PUT/DELETE /v1/client/{clientId}/site/{siteId}) and labelling the link
(PUT/DELETE /v1/client/{clientId}/site/{siteId}/label/{labelId}) — touch both
resources, so they require both client:write and site:write. Likewise, linking
and unlinking a conversation and a site (PUT/DELETE /v1/conversation/{id}/site/{siteId})
require both conversation:write and site:write.Choosing scopes
When you create a key in Settings → Integrations → Developer (see Authentication), select the minimum set of scopes your integration needs. Granting a parent resource also grants its children (for example,client:read
includes clientEmail:read, and site:read includes siteFile:read). signalIncident and
project are top-level resources: conversation:read does not grant Signal Incidents and
site:read does not grant projects, so a key that needs either must list
signalIncident:read / project:read explicitly (or use all:read).