Scopes

Scopes gate what a general API key (gl_api_…) can read. They apply only to the read API — ingest tokens have no scopes (their access is fixed by the source they are bound to).

A key carries an explicit list of scopes, chosen when it is minted. Each read endpoint requires exactly one scope; if the key lacks it the request returns 403 (the key is valid, just not authorized for that resource):

{ "error": { "code": "forbidden", "message": "This API key is missing the required scope: issues:read." } }

All scopes are read-only today.

Available scopes

ScopeEnumGrants
apps:readAPPS_READRead applications in the key's organization
sources:readSOURCES_READRead log sources in the key's organization
issues:readISSUES_READRead issues in the key's organization
signals:readSIGNALS_READRead signals (events) in the key's organization
deployments:readDEPLOYMENTS_READRead deployments in the key's organization

Endpoint → required scope

EndpointRequired scope
GET /api/v1/appsapps:read
GET /api/v1/apps/{id}apps:read
GET /api/v1/apps/{id}/sourcessources:read
GET /api/v1/issuesissues:read
GET /api/v1/issues/{id}issues:read
GET /api/v1/signalssignals:read
GET /api/v1/deploymentsdeployments:read

Grant a key only the scopes it needs. To read issues and the apps they belong to, for example, mint a key with both issues:read and apps:read.

See also: authentication.md · errors.md.