Shipeasy
Flags experimentsApiOperations

List API keys

Returns a single page of the project's API keys ordered by created_at desc, id desc, in the standard { data, next_cursor } envelope. Use the cursor query…

Returns a single page of the project's API keys ordered by created_at desc, id desc, in the standard { data, next_cursor } envelope. Use the cursor query parameter to paginate.

Response fields are snake_case (created_at, revoked_at, created_by_email, last4). The raw token is never returned — only its last4 tail, so a held key can be matched against the masked row. Revoked keys are included (with a non-null revoked_at).

Use case

Audit which keys exist for a project — surface stale or never-expiring keys, or drive a CI check that asserts no client key is still active in prod after a rotation.

GET
/api/admin/keys

Authorization

bearerSdkKey
AuthorizationBearer <token>

Pass an admin SDK key as Authorization: Bearer sdk_admin_…. Mint via POST /api/admin/keys with type: "admin".

In: header

Query Parameters

limit?integer

Page size (1–500). Defaults to 100.

Default100
Range1 <= value <= 500
cursor?string

Opaque cursor returned in the previous page's next_cursor. Omit for the first page.

q?string

Case-insensitive substring filter across the resource's human-readable text columns (e.g. name, title, description). OR-matched across those columns; omit to return everything.

Lengthlength <= 100

Header Parameters

X-Project-Id?string

Project the request operates on. Optional — defaults to the project the SDK key belongs to; pass it only to scope a multi-project key (the generated client sets it once from its configuration, so per-call callers never thread it).

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://shipeasy.ai/api/admin/keys"
{
  "data": [
    {
      "id": "3f2a9b1c-7d4e-4a8f-9c2b-1e5d6f7a8b90",
      "type": "server",
      "env": "prod",
      "created_at": "2026-05-09T16:01:22.000Z",
      "revoked_at": null,
      "expires_at": null,
      "created_by_email": "ana@example.com",
      "name": "production back-end",
      "scopes": [
        "gates:evaluate",
        "events:write"
      ],
      "last4": "a1b2"
    }
  ],
  "next_cursor": null
}
{
  "error": "Malformed request (bad JSON, missing project scope).",
  "code": "BAD_REQUEST"
}
{
  "error": "Missing or invalid admin SDK key.",
  "code": "UNAUTHORIZED"
}

{
  "error": "Key is valid but not allowed to act on this project.",
  "code": "FORBIDDEN"
}

{
  "error": "The resource does not exist or is not visible to the caller.",
  "code": "NOT_FOUND"
}

{
  "error": "A resource with this name already exists in the project.",
  "code": "ALREADY_EXISTS"
}

{
  "error": "The request body failed structural (schema) validation.",
  "code": "VALIDATION"
}

Was this page helpful?
✎ Edit this page