---
title: "List Keys"
method: GET
path: "/keys"
tags: ["Access"]
---

# List Keys

`GET /keys`

## Request

- Base URL: `https://api.hedra.com/v3`
- URL: `https://api.hedra.com/v3/keys`
- Auth: one of:
  - API key in header `Authorization`
  - HTTP bearer

## Query parameters

- `workspace_id` string, nullable: List keys of this workspace; omitted means the authenticating key's workspace.

## Response `200`

Successful Response

- KeyListResponse
  - `data` KeySummary[], required: This page of items.
    - `key_id` string, nullable, required: The key's public identifier; null only for a legacy key that predates public key ids.
    - `kind` 'personal' | 'service', required: Personal keys die with the member; service keys belong to the workspace.
    - `name` string, nullable: Human-readable label for the key.
    - `scopes` string[], nullable: Scopes granted to the key; null means every scope except the opt-in `sandboxes:read`, `sandboxes:write` and `sandboxes:exec` (a legacy key predating scopes).
    - `workspace_id` string, nullable: The workspace the key bills and acts in.
    - `status` 'active' | 'revoked' | 'expired', required
    - `created_at` string, date-time, nullable: ISO-8601 instant the key was created.
    - `expires_at` string, date-time, nullable: ISO-8601 instant the key stops authenticating; null means it never expires.
    - `revoked_at` string, date-time, nullable: ISO-8601 instant the key was revoked; null unless `status` is `revoked`.
    - `last_used_at` string, date-time, nullable: ISO-8601 instant the key last authenticated a request; null when unused.
  - `next_cursor` string, nullable, required: Opaque cursor for the next page, or null when this response completes the list. Always present. Endpoints that serve the whole collection at once always return null.

## Other responses

- `400`: Invalid or failed-validation request.
- `401`: Authentication failed: missing, malformed, or invalid credentials.
- `403`: Insufficient scope or plan.
- `404`: Resource not found.
- `429`: Rate limit exceeded.
- `500`: Internal error.

## Changes

- **2026-10-16** `06692d16e78a`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/hedra-labs/apis/hedra-api/changes/keys/get.md)

---

[API](https://skmtc.dev/hedra-labs/apis/hedra-api.md) - [All operations](https://skmtc.dev/hedra-labs/apis/hedra-api/llms.txt) - [OpenAPI document](https://skmtc.dev/hedra-labs/apis/hedra-api/revisions/6ef35a11cefe?raw)
