List Account Keys

GET /v1/account/keys

List the account keys of your active account, newest first: their name, role, the last four characters of the key, who created them, when they were last used and when they expire. A key's secret is never returned. Revoked keys aren't listed.

Account keys are API keys that belong to the account, not to a person: each one acts only in its own account, with the role it was given, and keeps working when the person who created it leaves.

Permission required

The members:read permission on the active account. Call it from a dashboard session or with your own API key; an account key gets 403 with the code account_key_not_allowed.

Query parameters

page int optional
1-based page number. Default 1.
page_size int optional
Keys per page, sent together with page. Default 15, capped at 200.

Response (200 OK)

items object[]
The keys (fields below). Always present; [] when there are none.
page, page_size int
The page returned and the effective page size.
total int
Number of keys across all pages (expired ones included, revoked ones not).

Each key contains:

uuid string (uuid)
The key's public id. Use it in DELETE /v1/account/keys/{uuid}.
name string
The name given at creation.
role object?
{uuid, name} of the key's role. The key can do what this role allows.
hint string
nak_… and the key's last four characters, to tell keys apart.
created_at datetime
When the key was created, RFC 3339 UTC.
created_by object?
{uuid, name} of the member who created it (their name, else their email). null once that member's user is deleted; the key keeps working.
last_used_at datetime?
When the key was last used. null if it has never been used.
expires_at datetime?
When the key stops working. null: it never expires.
allowed_ips string
The addresses and CIDR ranges the key may be used from, comma-separated. "": any address.
status string
active, expired (every request with it answers 401) or paused (the account has more keys than its plan allows; every request answers 403 with the code account_key_paused until there is room again).
paused_reason string?
Why a paused key is paused and how to resume it. Omitted otherwise.

Errors

401 Unauthorized
Missing or invalid auth.
403 Forbidden
The caller lacks members:read, the request uses an account key (account_key_not_allowed), or the account is suspended (account_suspended).
Request
curl "https://api.ngris.com/v1/account/keys?page=1&page_size=15" \ -H "X-API-KEY: <your_api_key>"
Response — 200 OK
{ "items": [ { "uuid": "019a4e2f-6c1d-7b3a-9e52-3f8d1c7a2b40", "name": "GitHub Actions deploy", "role": { "uuid": "019a3f4c-77ab-7e10-b2d4-6c1e9f0a8d23", "name": "CI deploy" }, "hint": "nak_…7Qx2", "created_at": "2026-11-02T14:58:40Z", "created_by": { "uuid": "019a52c2-ca1e-78ba-ab5c-50362cc29134", "name": "Maria Example" }, "last_used_at": "2026-11-02T15:14:07Z", "expires_at": "2027-01-31T14:58:40Z", "allowed_ips": "", "status": "active" }, { "uuid": "019a2c11-08f4-7d2e-a1c9-5be0f4d36a17", "name": "Nightly export", "role": { "uuid": "019a1d2e-3f40-7a5b-8c6d-7e8f9a0b1c2d", "name": "Admin" }, "hint": "nak_…c41d", "created_at": "2026-07-14T09:30:00Z", "created_by": null, "last_used_at": "2026-10-11T03:00:12Z", "expires_at": "2026-10-12T09:30:00Z", "allowed_ips": "203.0.113.10", "status": "expired" } ], "page": 1, "page_size": 15, "total": 2 }
Was this helpful?
On this page
List Account Keys
Was this helpful?