Skip to main content

Overview

Creates a new type=user API key in the organization associated with the current management token.

Request Body

FieldTypeDefault / LimitsNotes
namestringrequired, default Default Key, length 1-50Display name, trimmed server-side
limitAmountnumber | nullmin 0, input max 1000000null or omitted = unlimited, 0 = zero quota. Positive values are normalized to a stored cap that cannot exceed 100000 USD equivalent.
limitCurrencyenumdefault USDUSD only. Sending CNY returns 400 currency_retired.
modelsstring[]default []Optional model allowlist
expiresAtstring | nullRFC3339 datetimenull means no expiry

Notes

  • Monetary fields are USD-only. CNY inputs are retired and return 400 currency_retired.
  • The full API key value is shown only once in the response.
  • models: [] means the key has no additional model restriction beyond organization policy.
  • limitAmount: 0 creates a key that is valid but cannot spend quota until updated.

Example

curl -X POST "https://api.tokenlab.sh/v1/management/api-keys" \
  -H "Authorization: Bearer mt-your-management-token" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Backend Worker",
    "limitAmount": 500,
    "models": ["veo3.1", "kling-3.0-video"],
    "expiresAt": "2026-12-31T23:59:59Z"
  }'

Request / Response

Use the interactive OpenAPI panel above for the exact schema and response fields.

Response example

{
  "id": "key_abc123def456",
  "name": "Backend Worker",
  "key": "sk-live-redacted",
  "key_prefix": "sk-live...",
  "status": "active",
  "limit_amount": 500,
  "limit_amount_decimal": "500",
  "used_amount": 0,
  "used_amount_decimal": "0",
  "models": [
    "veo3.1",
    "kling-3.0-video"
  ],
  "expires_at": "2026-12-31T23:59:59.000Z",
  "last_used_at": null,
  "created_at": "2026-07-08T03:00:00.000Z"
}

Important fields

key
string
Full secret API key value. It is returned only once on creation.
id
string
API key identifier used in follow-up Management API calls.
name
string
Display name for the API key.
key_prefix
string
Non-secret key prefix for display and support.
status
string
One of active, inactive, or revoked.
limit_amount
number | null
Spending cap in USD as a JSON number for display. null means unlimited.
limit_amount_decimal
string | null
Exact spending cap in USD as a decimal string. null means unlimited.
used_amount
number
Accumulated usage in USD as a JSON number for display.
used_amount_decimal
string
Exact accumulated usage in USD as a decimal string.
models
string[]
Per-key model allowlist. Empty array means no additional key-level model restriction.
expires_at
string | null
ISO timestamp when the key expires, or null for no expiry.
last_used_at
string | null
ISO timestamp for the most recent use, or null when unused.
created_at
string
ISO creation timestamp.