---
title: "List the caller’s active API keys (previews only; the secret is never returned)."
method: GET
path: "/v1/api-keys"
---

# List the caller’s active API keys (previews only; the secret is never returned).

`GET /v1/api-keys`

## Request

- Base URL: `https://api.usebubbles.com`
- URL: `https://api.usebubbles.com/v1/api-keys`
- Auth: HTTP bearer

## Response `200`

Success.

- ApiKeyList: GET /v1/api-keys — the finite list of the caller's active keys.
  - `data` ApiKeySummary[], required: The caller's active API keys.
    - `id` string, required: The key id.
    - `name` string, required: The key name.
    - `token_preview` string, required: A safe-to-show token preview (bbls_pat_ab12…).
    - `created_at` string, required: Creation instant (ISO-8601 UTC).
    - `last_used_at` string, nullable, required: Last-used instant, or null if never used.

## Other responses

- `401`: Missing, malformed, or wrong-kind credential (unauthorized / token_revoked / account_deleted).
- `403`: The workspace cannot access paid features (pro_plan_required).
- `409`: Constraint conflict, e.g. the active-key cap (invalid_request).
- `500`: An unexpected server error occurred (internal_error).

---

[API](https://skmtc.dev/usebubbles/apis/bubbles-public-api.md) - [All operations](https://skmtc.dev/usebubbles/apis/bubbles-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/usebubbles/apis/bubbles-public-api/revisions/31570f5d4b05?raw)
