Set an application API grant

PUT /v1/applications/{application_id}/api-grants/{api_id} · permission applications:write

Replaces, as a whole, the scopes an application may request for one API. An application can hold grants for at most 50 APIs.

Request

Parameter In Description
application_id path Application id (app_…).
api_id path API id (api_…).

Body

Field Type Required Description
scopes string[] yes Allowed scopes (resource:action); each must be defined on the API. At most 1000.
default_scopes string[] no Scopes granted by default; a subset of scopes.

Response

200 OK with the grant.

{
  "application_id": "app_6f8d0cjgbmf0gtn2rg6pscp3cg",
  "api_id": "api_0000000000000000000000001z",
  "scopes": ["orders:read", "orders:write"],
  "default_scopes": ["orders:read"],
  "created_at": "2026-10-05T10:00:01Z",
  "updated_at": "2026-10-05T10:00:01Z"
}

Errors

HTTP code When
401 unauthenticated The key is missing, invalid or revoked.
403 insufficient_permissions The key lacks the required permission.
404 not_found The application or the grant does not exist in this environment.
422 validation_failed A scope is malformed or not defined on the API, or default_scopes is not a subset of scopes.
403 quota_exceeded The application already holds grants for 50 APIs.
400 unknown_field The body has a field that is not part of the schema.

Example

curl -X PUT https://api.eu.keenauth.com/v1/applications/app_6f8d0cjgbmf0gtn2rg6pscp3cg/api-grants/api_0000000000000000000000001z \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"scopes":["orders:read","orders:write"],"default_scopes":["orders:read"]}'