API Keys
Create API key
Section titled “Create API key”POST https://api.bve.me/admin/api-keysAuthorization: Bearer admin_bve_YOUR_ADMIN_KEYContent-Type: application/jsonRequest body
Section titled “Request body”{ "name": "my-client", "rpm_limit": 60, "rpd_limit": 10000, "monthly_limit": null, "monthly_token_limit": null, "allowed_models": null}| Field | Type | Required | Default | Description |
|---|---|---|---|---|
name | string | Yes | — | Human-readable label (1–255 chars) |
rpm_limit | integer | No | 60 | Max requests per minute |
rpd_limit | integer | No | 10000 | Max requests per day |
monthly_limit | integer | null | No | null | Max requests per month (null = unlimited) |
monthly_token_limit | integer | null | No | null | Max tokens per month (null = unlimited) |
allowed_models | string[] | null | No | null | Restrict to specific model IDs (null = all) |
Response (201)
Section titled “Response (201)”{ "id": "550e8400-e29b-41d4-a716-446655440000", "name": "my-client", "key": "sk-bve-a1b2c3d4...", "status": "active", "rpm_limit": 60, "rpd_limit": 10000, "monthly_limit": null, "monthly_token_limit": null, "allowed_models": null, "created_at": "2026-05-21T12:00:00.000Z"}cURL example
Section titled “cURL example”curl -X POST https://api.bve.me/admin/api-keys \ -H "Authorization: Bearer admin_bve_YOUR_ADMIN_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "my-client", "rpm_limit": 60, "rpd_limit": 10000 }'Create a rate-limited key
Section titled “Create a rate-limited key”curl -X POST https://api.bve.me/admin/api-keys \ -H "Authorization: Bearer admin_bve_YOUR_ADMIN_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "trial-key", "rpm_limit": 10, "rpd_limit": 100, "monthly_limit": 500 }'Create a model-restricted key
Section titled “Create a model-restricted key”curl -X POST https://api.bve.me/admin/api-keys \ -H "Authorization: Bearer admin_bve_YOUR_ADMIN_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "embeddings-only", "allowed_models": ["text-embedding-3-small", "text-embedding-3-large"] }'List API keys
Section titled “List API keys”GET https://api.bve.me/admin/api-keysAuthorization: Bearer admin_bve_YOUR_ADMIN_KEYReturns all keys (active, suspended, and revoked).
Response (200)
Section titled “Response (200)”[ { "id": "550e8400-e29b-41d4-a716-446655440000", "name": "my-client", "status": "active", "rpm_limit": 60, "rpd_limit": 10000, "monthly_limit": null, "monthly_token_limit": null, "allowed_models": null, "created_at": "2026-05-21T12:00:00.000Z", "updated_at": "2026-05-21T12:00:00.000Z", "revoked_at": null }]The raw key (sk-bve-...) is not included in list responses.
cURL example
Section titled “cURL example”curl https://api.bve.me/admin/api-keys \ -H "Authorization: Bearer admin_bve_YOUR_ADMIN_KEY"Revoke API key
Section titled “Revoke API key”POST https://api.bve.me/admin/api-keys/:id/revokeAuthorization: Bearer admin_bve_YOUR_ADMIN_KEYRevocation is permanent and immediate. The key cannot be restored.
Path parameters
Section titled “Path parameters”| Parameter | Description |
|---|---|
id | UUID of the API key to revoke |
Response (200)
Section titled “Response (200)”{ "id": "550e8400-e29b-41d4-a716-446655440000", "status": "revoked", "revoked_at": "2026-05-21T13:00:00.000Z"}Response (404)
Section titled “Response (404)”{ "error": { "message": "API key not found", "type": "invalid_request_error", "code": "not_found" }}cURL example
Section titled “cURL example”curl -X POST https://api.bve.me/admin/api-keys/550e8400-e29b-41d4-a716-446655440000/revoke \ -H "Authorization: Bearer admin_bve_YOUR_ADMIN_KEY"