Skip to content

Account & API keys

Identity and API key management. Keys belong to a user; create the first one from the app (user session), then any of that user’s credentials can manage them.

Method Path
GET /api/v1/me
GET /api/v1/keys
POST /api/v1/keys
DELETE /api/v1/keys/{id}

GET /api/v1/me

Identity behind the credentials.

Auth: API key (X-API-Key) or user session

Terminal window
curl "https://vol.example.com/api/v1/me" \
-H "X-API-Key: $VOL_API_KEY"

Response 200

{
"id": "4b0c…",
"email": "you@example.com"
}

GET /api/v1/keys

Keys owned by the current user. Only the prefix is returned.

Auth: API key (X-API-Key) or user session

Terminal window
curl "https://vol.example.com/api/v1/keys" \
-H "X-API-Key: $VOL_API_KEY"

Response 200

[
{
"id": "key_8f2a",
"name": "production backend",
"prefix": "vol_live_3kq",
"createdAt": "2026-10-01T09:12:00Z",
"lastUsedAt": "2026-10-15T18:03:11Z"
}
]

POST /api/v1/keys

Creates a key. The full key is returned only once.

From the API schema: The full key (vol_live_...) is returned only in this response; store it safely.

Auth: API key (X-API-Key) or user session

Request body

{
"name": "production backend"
}
Terminal window
curl -X POST "https://vol.example.com/api/v1/keys" \
-H "X-API-Key: $VOL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"production backend"}'

Response 201

{
"id": "key_8f2a",
"name": "production backend",
"prefix": "vol_live_3kq",
"createdAt": "2026-10-16T10:00:00Z",
"lastUsedAt": null,
"key": "vol_live_3kq…"
}

DELETE /api/v1/keys/{id}

Revokes a key immediately. Returns 204 No Content.

Auth: API key (X-API-Key) or user session

Terminal window
curl -X DELETE "https://vol.example.com/api/v1/keys/key_8f2a" \
-H "X-API-Key: $VOL_API_KEY"

Response: 204 No Content

interface ApiKey { id: string; name: string; prefix: string; createdAt: string; lastUsedAt: string | null }