API Keys
CheapestInference uses two categories of API keys:
- Consumption keys (
sk_xxx) — used for inference requests. Created via subscription payments or from your credit balance. - Management keys (
mk_xxx) — used for programmatic account management (create keys, check billing, etc.).
All key management endpoints accept either an auth token or a management key in the Authorization header:
Authorization: Bearer YOUR_AUTH_TOKEN# orAuthorization: Bearer mk_xxxxxxxxxxxxxxxxConsumption keys
Section titled “Consumption keys”Consumption keys are the keys you use with the Chat Completions and Anthropic Messages endpoints.
There are two types:
Subscription keys
Section titled “Subscription keys”Minted from a pool (Unlimited) subscription. After you reserve one or more time blocks via POST /api/pools/:id/subscribe, create a key with POST /api/keys/subscription.
- Unlimited usage during your reserved time blocks, no budget cap, 1 concurrent request per key
- Independent expiration per key, tied to the subscription’s billing period
- When a key expires, only that key is revoked
See Unlimited Subscriptions API for the pool subscribe flow.
Credit keys
Section titled “Credit keys”Created manually from the API Keys page or via API. All credit keys share your account’s credit balance.
- 60 RPM rate limit
- Usage deducted from your shared credit pool
- Never expire (as long as you have balance)
List consumption keys
Section titled “List consumption keys”GET /api/keysReturns all consumption keys (subscription + credit) for the authenticated user.
Example
Section titled “Example”curl https://api.cheapestinference.com/api/keys \ -H "Authorization: Bearer YOUR_AUTH_TOKEN"Response
Section titled “Response”{ "success": true, "data": [ { "id": "clx1abc...", "name": "prod-key", "keyPlan": "pool", "keyType": "subscription", "apiKey": "sk-...", "isActive": true, "subscriptionId": "sub-uuid", "subscriptionStatus": "active", "subscriptionExpiresAt": "2026-02-15T10:00:00.000Z", "createdAt": "2026-01-15T10:00:00.000Z", "lastUsedAt": "2026-01-20T08:00:00.000Z" }, { "id": "clx2def...", "name": "client_42", "keyPlan": "credits", "keyType": "credit", "apiKey": "sk-...", "isActive": true, "maxBudget": 25.00, "rpmLimit": 60, "tpmLimit": null, "createdAt": "2026-01-20T14:30:00.000Z", "lastUsedAt": null } ]}The full key (
apiKey) is included in list responses for the show/copy feature in the dashboard. Treat list responses as sensitive.
Create subscription key (Unlimited / pool)
Section titled “Create subscription key (Unlimited / pool)”POST /api/keys/subscriptionCreates a new API key for your active Unlimited (pool) subscription.
Request body
Section titled “Request body”| Parameter | Type | Required | Description |
|---|---|---|---|
subscriptionId | string | No | Target a specific subscription. If omitted, uses the most recent active subscription. |
Example — create key for most recent subscription
Section titled “Example — create key for most recent subscription”curl -X POST https://api.cheapestinference.com/api/keys/subscription \ -H "Authorization: Bearer mk_your_key"Example — create key for a specific subscription
Section titled “Example — create key for a specific subscription”curl -X POST https://api.cheapestinference.com/api/keys/subscription \ -H "Authorization: Bearer mk_your_key" \ -H "Content-Type: application/json" \ -d '{"subscriptionId": "subscription_uuid"}'Response
Section titled “Response”{ "success": true, "data": { "id": "key-uuid", "apiKey": "sk_pool_xxxxxxxxxxxxxxxx", "isActive": true }}Important: The
apiKeyvalue is only returned once — on creation. Copy it immediately.
This endpoint is for Unlimited/pool subscriptions — the current subscription product. Reserve time blocks via
POST /api/pools/:id/subscribefirst, then create the key here.
Create credit key
Section titled “Create credit key”POST /api/keys/creditCreates a new credit key that shares your account’s credit balance. Requires a credit balance > 0.
Request body
Section titled “Request body”| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | A label for the key (e.g. “client_42”) |
maxBudget | number | No | Per-key budget in USD (omit for shared pool) |
rpm | number | No | Requests per minute limit (default: 60) |
tpm | number | No | Tokens per minute limit |
Example
Section titled “Example”curl -X POST https://api.cheapestinference.com/api/keys/credit \ -H "Authorization: Bearer YOUR_AUTH_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name": "client_42"}'Response
Section titled “Response”{ "success": true, "data": { "id": "clx3ghi...", "name": "client_42", "keyType": "credit", "apiKey": "sk_live_xxxxxxxxxxxxxxxx", "isActive": true, "createdAt": "2026-01-20T14:30:00.000Z" }}Important: The
apiKeyvalue is only returned once — on creation. Copy it immediately.
Update key
Section titled “Update key”PUT /api/keys/:idUpdate a key’s name or active status. Deactivating a key immediately revokes it.
Request body
Section titled “Request body”| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | No | New name for the key |
isActive | boolean | No | false to deactivate, true to reactivate |
Example
Section titled “Example”curl -X PUT https://api.cheapestinference.com/api/keys/clx1abc... \ -H "Authorization: Bearer YOUR_AUTH_TOKEN" \ -H "Content-Type: application/json" \ -d '{"isActive": false}'Delete key
Section titled “Delete key”DELETE /api/keys/:idPermanently deletes a consumption key and revokes it.
Example
Section titled “Example”curl -X DELETE https://api.cheapestinference.com/api/keys/clx1abc... \ -H "Authorization: Bearer YOUR_AUTH_TOKEN"Response
Section titled “Response”{ "success": true, "data": { "deleted": true }}Management keys
Section titled “Management keys”Management keys (mk_xxx) let you manage your account programmatically without a session token. Use them in CI/CD pipelines, scripts, or automated workflows.
List management keys
Section titled “List management keys”GET /api/keys/managementExample
Section titled “Example”curl https://api.cheapestinference.com/api/keys/management \ -H "Authorization: Bearer YOUR_AUTH_TOKEN"Response
Section titled “Response”{ "success": true, "data": [ { "id": "uuid-here", "name": "mgmt_key_01", "keyPrefix": "mk_a1b2c3d4", "isActive": true, "lastUsedAt": "2026-02-01T08:00:00.000Z", "createdAt": "2026-01-25T12:00:00.000Z" } ]}Create management key
Section titled “Create management key”POST /api/keys/management| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | A label for the key (e.g. “mgmt_key_01”) |
Example
Section titled “Example”curl -X POST https://api.cheapestinference.com/api/keys/management \ -H "Authorization: Bearer YOUR_AUTH_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name": "mgmt_key_01"}'Response
Section titled “Response”{ "success": true, "data": { "id": "uuid-here", "name": "mgmt_key_01", "keyPrefix": "mk_a1b2c3d4", "apiKey": "mk_a1b2c3d4e5f6g7h8i9j0..." }}Important: The full management key is only returned once. Store it securely.
Delete management key
Section titled “Delete management key”DELETE /api/keys/management/:idcurl -X DELETE https://api.cheapestinference.com/api/keys/management/uuid-here \ -H "Authorization: Bearer YOUR_AUTH_TOKEN"Using management keys
Section titled “Using management keys”Once created, use a management key as a Bearer token to authenticate any /api/* endpoint:
# List your consumption keys using a management keycurl https://api.cheapestinference.com/api/keys \ -H "Authorization: Bearer mk_a1b2c3d4e5f6g7h8i9j0..."
# Check billing statuscurl https://api.cheapestinference.com/api/billing/status \ -H "Authorization: Bearer mk_a1b2c3d4e5f6g7h8i9j0..."
# Create a credit key programmaticallycurl -X POST https://api.cheapestinference.com/api/keys/credit \ -H "Authorization: Bearer mk_a1b2c3d4e5f6g7h8i9j0..." \ -H "Content-Type: application/json" \ -d '{"name": "auto-created"}'Management keys cannot be used for inference. Use consumption keys (
sk_xxx) for that.
Key lifecycle
Section titled “Key lifecycle”Subscription keys
Section titled “Subscription keys”Subscribe to a pool (reserve time blocks) → Create key (POST /api/keys/subscription) → Use during reserved hours → Key expires at period end → Renew- Reserve one or more time blocks on a pool via
POST /api/pools/:id/subscribe. - Create one or more keys for that subscription with
POST /api/keys/subscription. - Each key gives unlimited usage during your reserved blocks (no budget cap, 1 concurrent request).
- When a subscription key expires at the end of the billing period, only that specific key is revoked.
- You can hold multiple pool subscriptions to cover more time blocks, each with its own keys.
Credit keys
Section titled “Credit keys”Top up credits → Create credit key(s) → Use until balance runs out → Top up again- Top up your credit balance first (Billing page).
- Create one or more credit keys — they all share your account balance.
- Credit keys never expire; usage is deducted from your shared pool.
Rate limits
Section titled “Rate limits”| Type | Throughput | Concurrency |
|---|---|---|
| Pool (Unlimited) subscription | Unlimited during reserved blocks, no budget cap | 1 concurrent request per key |
| Credit | 60 RPM | — |