Grant support access
POST /v1/support-access-grants · permission support-access-grants:write
Gives KeenAuth support staff time-limited access to this environment, for example while they work on a support ticket. Access is either read-only (read) or may also change configuration (read_write_config); support staff never write end-user data. Every use of the grant and every staff action is written to the management audit log, and a support_access_grant.created event is published. Grants can only be created from the dashboard by an owner or admin who signed in again within the last 5 minutes; API keys and machine clients receive 403 insufficient_permissions.
Request
| Field | Type | Required | Description |
|---|---|---|---|
Idempotency-Key |
header | no | Optional. 16-64 characters [A-Za-z0-9_-]; repeating the same key with the same body returns the same grant. |
scope |
string | yes | read (read-only) or read_write_config (may also change configuration). |
duration_hours |
integer | yes | Duration in hours, 1-72. |
ticket_ref |
string | yes | Support ticket reference: 1-200 printable ASCII characters, no leading or trailing space. |
allowed_regions_of_staff |
array | null | no | Enterprise only. Only staff located in these regions (eu, us) may use the grant; omitted or null means no restriction. |
Request body:
{
"scope": "read",
"duration_hours": 24,
"ticket_ref": "SUP-48213",
"allowed_regions_of_staff": ["eu"]
}
Response
201 Created with the new grant.
{
"id": "sag_01j9xk3m7q8r2s4t6v8w0y2z4a",
"scope": "read",
"status": "active",
"ticket_ref": "SUP-48213",
"allowed_regions_of_staff": ["eu"],
"granted_by": "du_01j9xk2p5n7q9s1t3v5w7y9z1b",
"created_at": "2026-10-12T09:30:00.123456Z",
"expires_at": "2026-10-13T09:30:00.123456Z",
"revoked_at": null
}
Errors
| HTTP | code | When |
|---|---|---|
| 400 | malformed_request |
The body is not valid JSON or Idempotency-Key is malformed. |
| 403 | insufficient_permissions |
The request was not made from the dashboard by an owner or admin, or the credential lacks the required permission. |
| 403 | plan_feature_unavailable |
allowed_regions_of_staff requires the Enterprise plan. |
| 422 | validation_failed |
A field is invalid (scope, duration_hours outside 1-72, ticket_ref, allowed_regions_of_staff). |
| 422 | idempotency_key_reuse |
The Idempotency-Key was already used with a different body. |
| 401 | unauthenticated |
The credential is missing, invalid or revoked. |
| 429 | rate_limited |
The rate limit was exceeded; retry after the Retry-After period. |
| 503 | service_unavailable |
A dependency is temporarily unavailable; retry after the Retry-After period. |
Example
Create and revoke are dashboard actions. The request the dashboard sends:
POST /v1/support-access-grants
Content-Type: application/json
Idempotency-Key: 2f1c9a7e-5b3d-4e8f-9a6c-1d2e3f4a5b6c
{
"scope": "read",
"duration_hours": 24,
"ticket_ref": "SUP-48213",
"allowed_regions_of_staff": ["eu"]
}