---
title: "List API keys"
method: GET
path: "/v1/api-keys"
tags: ["API Keys"]
---

# List API keys

`GET /v1/api-keys`

## Request

- Base URL: `https://api.samva.dev`
- URL: `https://api.samva.dev/v1/api-keys`
- Auth: API key in header `x-api-key`

Returns the organization's API keys, newest first, filterable by status and a search term matched against name and description. Pass `nextCursor` back as `cursor` for the next page; it is null on the last page.

## Query parameters

- `limit` string, nullable
- `cursor` string
- `status` 'active' | 'revoked', nullable
- `search` string, nullable

## Response `200`

ApiKeyPage

- ApiKeyPage
  - `items` ApiKey[], required
    - `id` string, required
    - `name` string, required
    - `key` string, nullable
    - `start` string, nullable, required
    - `end` string, nullable, required
    - `description` string, nullable
    - `createdAt` string, required
    - `expiresAt` string, nullable, required
    - `lastUsedAt` string, nullable, required
    - `isActive` boolean, required
    - `access` union, required
      - object
        - `mode` 'full', required
      - object
        - `mode` 'restricted', required
        - `resources` ApiKeyResourceAccess, required
          - `messages` 'read' | 'write', nullable
          - `email` 'read' | 'write', nullable
          - `domains` 'read' | 'write', nullable
          - `phoneNumbers` 'read' | 'write', nullable
          - `contacts` 'read' | 'write', nullable
          - `conversations` 'read' | 'write', nullable
          - `templates` 'read' | 'write', nullable
          - `webhooks` 'read' | 'write', nullable
          - `apiKeys` 'read' | 'write', nullable
          - `organization` 'read' | 'write', nullable
          - `billing` 'read' | 'write', nullable
          - `analytics` 'read' | 'write', nullable
        - `mailboxes` ApiKeyMailboxAccess
          - `permissions` string[], required: `read` reads mailboxes, threads, and messages; `update` changes thread state, labels, drafts, and notes; `send` sends and replies; `quarantine.read` reads quarantined mail.
          - `mailboxIds` MailboxId[], nullable: The mailboxes the key may act on. Omit to reach every mailbox the owner can.
          - `sendMode` 'send' | 'approval': How the grantee's sends execute: `send` runs them within account limits; `approval` holds each one until a different member approves it.
        - `namespaceId` string
    - `owner` ApiKeyOwner, required
      - `id` string, required
      - `name` string, required
      - `email` string, required
  - `nextCursor` string, nullable, required

## Other responses

- `401`: UnauthorizedError
- `403`: ForbiddenError
- `422`: ValidationError
- `500`: InternalError
- `504`: GatewayTimeoutError

---

[API](https://skmtc.dev/samva/apis/samva-api.md) · [All operations](https://skmtc.dev/samva/apis/samva-api/llms.txt) · [OpenAPI document](https://skmtc.dev/samva/apis/samva-api/revisions/a99408542cc3?raw)
