---
title: "List all keys (internal only)"
method: GET
path: "/v1/keys/list"
tags: ["billing"]
---

# List all keys (internal only)

`GET /v1/keys/list`

## Request

- Base URL: `https://modelglass-api.vercel.app`
- URL: `https://modelglass-api.vercel.app/v1/keys/list`
- Auth: HTTP bearer

Admin-style listing of every non-revoked key across all accounts. Requires an `internal`-plan Bearer key. Raw key strings are never returned.

## Response `200`

All key records (masked).

- object
  - `ok` true, required
  - `data` KeySummary[], required
    - `keyId` string, required
    - `display` string, required
    - `tier` 'free' | 'starter' | 'pro' | 'internal' | 'app', required
    - `label` string, nullable
    - `status` 'active' | 'grace' | 'revoked' | 'suspended', required
    - `formatVersion` integer
    - `isLegacyFormat` boolean
    - `createdAt` string, date-time
    - `expiresAt` string, date-time, nullable
    - `lastUsedAt` string, date-time, nullable
  - `meta` ResponseMeta, required
    - `artifact_version` integer, required
    - `built_at` string, date-time, required
    - `count` integer: Item count when `data` is a collection.

## Other responses

- `401`: Missing, unknown, or revoked API key (UNAUTHORIZED / NOT_FOUND).
- `403`: Valid key but not `internal` (FORBIDDEN).
- `429`: Over the plan's daily rate limit (RATE_LIMITED).
- `500`: Unexpected server error (INTERNAL).

---

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