Skip to content

Setting Up

API Keys & Scopes

Create least-privilege keys, understand scopes, and rotate safely.

Creating a key#

From Developers → API keys in the portal (admin) or API keys on the developer dashboard, click Create API key:

  1. Name — describe the integration, not the person.
  2. Scopes — tick only what the integration needs. x:write implies x:read.
  3. Rate limit — requests per minute, 10 to 6 000. Default 600.

The plaintext key (grt_live_ + 32 characters) is shown once. The portal then only shows the prefix and the last four characters. Up to 25 active keys per institution.

Scopes#

ScopeGrants
students:read / students:writeList and read students · provision, update, suspend, map personal emails
faculty:read / faculty:writeList and read faculty · provision, update
groups:read / groups:writeGroups and membership
licenses:read / licenses:writeLicenses and device seats · extend, revoke
sso:writeMint launch tokens
exams:read / exams:writeExams, assignments · create, publish, files, hidden-test key
submissions:read / submissions:writeSubmissions, scores, proctoring events · grade, void (write also unlocks recordings)
coupons:read / coupons:writeCoupon batches, redemptions · request batches
merits:read / merits:writeWallets and ledger · credit merits
guardians:read / guardians:writeGuardian links and reports · invite, remove
alpha:read / alpha:writeAlpha Learning data · enroll, award points
institution:read / institution:writeProfile · integration config
webhooks:read / webhooks:writeEndpoints, deliveries, events · create, rotate, replay

GET /v1/scopes returns the same list with descriptions. A request without the right scope gets 403 insufficient_scope with required and missing arrays in the body.

students:write, faculty:write, groups:write, licenses:read

Rotating a key#

There is no in-place rotation; create a new key, switch the integration, then revoke the old one. Revocation is immediate. Usage per key is visible under Usage on the keys table (requests, errors and rate-limited calls per day, top routes).

Storing keys#

  • Keep keys in a secret manager or environment variable. Never commit them, never ship them to a browser or mobile app.
  • The API accepts requests without an Origin header, so server-to-server is the intended mode.
  • If a key leaks, revoke it in the portal; the audit log records who created and revoked it.