API key endpoints

Generate, list, and revoke keys.

Endpoints

MethodPathDescription
POST/api-keysGenerate new API key
GET/api-keysList API keys (prefix only)
DELETE/api-keys/:idRevoke API key
These three are dashboard-only. They require a signed-in dashboard session; calling them with an API key returns 403 FORBIDDEN. A key cannot mint or revoke another key — key management stays where a human is authenticated.

Reference

POST/api-keys

Mint a new API key. The secret is returned exactly once, in this response.

Success: 201 Created

key is the only field that never appears again — Outvo stores a hash, not the secret. Lose it and the only remedy is revoking the key and minting another. rateLimit is the per-minute request budget the key carries.

Body

FieldTypeDescription
namereqstringA label for you, 1-100 characters. It has no effect on what the key can reach.

Request

json
POST /api-keys
{ "name": "Production automation" }

Response

json
201 Created

{
  "data": {
    "id": "1f2e3d4c-...",
    "userId": "...",
    "keyPrefix": "pc_live_",
    "name": "Production automation",
    "rateLimit": 100,
    "createdAt": "2026-08-13T12:00:00.000Z",
    "key": "pc_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  }
}

Errors

CodeHTTPWhen
FORBIDDEN403Called with an API key instead of a dashboard session.
PLAN_LIMIT_REACHED403Your plan does not include API keys. Upgrade to Pro or higher.
VALIDATION_ERROR400Missing name, or name outside 1-100 characters.

GET/api-keys

List your active keys, newest first. Revoked keys are excluded.

Success: 200 OK

No key field here, by design. lastUsedAt is omitted for a key that has never authenticated a request — that is how you find keys worth revoking.

Response

json
200 OK

{
  "data": [
    {
      "id": "1f2e3d4c-...",
      "keyPrefix": "pc_live_",
      "name": "Production automation",
      "rateLimit": 100,
      "lastUsedAt": "2026-08-13T11:58:00.000Z",
      "createdAt": "2026-08-01T09:00:00.000Z"
    }
  ]
}

Errors

CodeHTTPWhen
FORBIDDEN403Called with an API key instead of a dashboard session.

DELETE/api-keys/:id

Revoke a key. It stops authenticating immediately and disappears from the list.

Success: 204 No Content

Path parameters

FieldTypeDescription
idreqstring (uuid)API key id — not the key itself.

Errors

CodeHTTPWhen
FORBIDDEN403Called with an API key instead of a dashboard session.
API_KEY_NOT_FOUND404Unknown id, not yours, or already revoked.