> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tokenlab.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Tạo API key

> Tạo một API key người dùng mới cho tổ chức hiện tại.

## Tổng Quan

Tạo một API key `type=user` mới trong tổ chức gắn với management token hiện tại.

## Thân Yêu Cầu

| Trường          | Kiểu           | Mặc định / Giới hạn                             | Ghi chú                                                                                                                                          |
| --------------- | -------------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| `name`          | string         | bắt buộc, mặc định `Default Key`, độ dài `1-50` | Tên hiển thị, server sẽ trim khoảng trắng                                                                                                        |
| `limitAmount`   | number \| null | tối thiểu `0`, input tối đa `1000000`           | `null` hoặc bỏ qua = không giới hạn, `0` = quota bằng 0. Giá trị dương được chuẩn hoá thành trần lưu trữ không vượt quá tương đương `100000` USD |
| `limitCurrency` | enum           | default `USD`                                   | Chỉ hỗ trợ USD. Gửi `CNY` sẽ trả về `400 currency_retired`.                                                                                      |
| `models`        | string\[]      | mặc định `[]`                                   | Danh sách cho phép model tùy chọn                                                                                                                |
| `expiresAt`     | string \| null | datetime RFC3339                                | `null` nghĩa là không hết hạn                                                                                                                    |

## Ghi Chú

* Giá trị đầy đủ của API key chỉ hiển thị một lần trong response.
* `models: []` nghĩa là key không có hạn chế model bổ sung nào ngoài chính sách của tổ chức.
* `limitAmount: 0` tạo ra một key hợp lệ nhưng chưa thể chi tiêu quota cho đến khi được cập nhật.

## Ví Dụ

<RequestExample>
  ```bash cURL theme={null}
  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"
    }'
  ```
</RequestExample>

## Yêu Cầu / Phản Hồi

Sử dụng bảng OpenAPI tương tác ở trên để xem schema và các trường response chính xác.

## Response example

<ResponseExample>
  ```json 201 Created theme={null}
  {
    "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"
  }
  ```
</ResponseExample>

## Important fields

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