Source: https://ailoot.ai/docs/ru/cabinet/keys/
Canonical: https://ailoot.ai/docs/ru/cabinet/keys/
Language: ru

[API кабинета](https://ailoot.ai/docs/ru/) 

# API-ключи

[Markdown](https://ailoot.ai/docs/ru/cabinet/keys/index.md)

Методы, поля запросов и ответы.

В разделе 5 методов. Откройте метод, чтобы посмотреть условия доступа, поля запроса и ответ.

| Метод и путь | Описание | Доступ |
| --- | --- | --- |
| `GET /api/v1/keys` | Список — API-ключи | Токен кабинета |
| `POST /api/v1/keys` | Создание API-ключа | Токен кабинета |
| `DELETE /api/v1/keys/:id` | Удаление — API-ключи | Токен кабинета |
| `GET /api/v1/keys/:id` | Получение по идентификатору — API-ключи | Токен кабинета |
| `PUT /api/v1/keys/:id` | Изменение API-ключа | Токен кабинета |

**GET /api/v1/keys** — Список — API-ключи

Доступ: Токен кабинета

GET`/api/v1/keys`

Чтение; ID берётся из вашего предыдущего ответа

```bash
curl --fail-with-body "https://ailoot.ai/api/v1/keys" \
  -H "Authorization: Bearer $TOKEN"
```

## Query-параметры

| Поле | Тип | Обязательно | Проверка / описание |
| --- | --- | --- | --- |
| `sort_by` | `string` | нет | ; по умолчанию: created\_at |
| `sort_order` | `string` | нет | ; по умолчанию: desc |
| `search` | `string` | нет |  |
| `status` | `string` | нет |  |
| `page` | `integer` | нет | ; по умолчанию: 1; positive; page\_size/limit \<=1000 |
| `page_size` | `integer` | нет | ; по умолчанию: 20; positive; page\_size/limit \<=1000 |
| `limit` | `integer` | нет | ; по умолчанию: 20; positive; page\_size/limit \<=1000 |

Тело запроса не требуется. Передавайте указанные выше параметры в URL.

## Ответ

JSON-ответ содержит code, message и data. Содержимое data описано в схемах ниже.

Схемы данных ответа: `APIKey`. Поля и типы — на страницах «Схемы данных».

Схема ответа, значения условные

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "items": [
      {
        "id": "PLACEHOLDER_ID (integer)",
        "user_id": "PLACEHOLDER_USER_ID (integer)",
        "key": "PLACEHOLDER_KEY (string)",
        "name": "PLACEHOLDER_NAME (string)",
        "status": "PLACEHOLDER_STATUS (string)",
        "ip_whitelist": "PLACEHOLDER_IP_WHITELIST (array)",
        "ip_blacklist": "PLACEHOLDER_IP_BLACKLIST (array)",
        "last_used_at": "PLACEHOLDER_LAST_USED_AT (string)",
        "last_used_ip": "PLACEHOLDER_LAST_USED_IP (string)",
        "quota": "PLACEHOLDER_QUOTA (number)",
        "quota_used": "PLACEHOLDER_QUOTA_USED (number)",
        "expires_at": "PLACEHOLDER_EXPIRES_AT (string)",
        "created_at": "PLACEHOLDER_CREATED_AT (string)",
        "updated_at": "PLACEHOLDER_UPDATED_AT (string)",
        "current_concurrency": "PLACEHOLDER_CURRENT_CONCURRENCY (integer)",
        "rate_limit_5h": "PLACEHOLDER_RATE_LIMIT_5H (number)",
        "rate_limit_1d": "PLACEHOLDER_RATE_LIMIT_1D (number)",
        "rate_limit_7d": "PLACEHOLDER_RATE_LIMIT_7D (number)",
        "usage_5h": "PLACEHOLDER_USAGE_5H (number)",
        "usage_1d": "PLACEHOLDER_USAGE_1D (number)",
        "usage_7d": "PLACEHOLDER_USAGE_7D (number)",
        "window_5h_start": "PLACEHOLDER_WINDOW_5H_START (string)",
        "window_1d_start": "PLACEHOLDER_WINDOW_1D_START (string)",
        "window_7d_start": "PLACEHOLDER_WINDOW_7D_START (string)",
        "reset_5h_at": "PLACEHOLDER_RESET_5H_AT (string)",
        "reset_1d_at": "PLACEHOLDER_RESET_1D_AT (string)",
        "reset_7d_at": "PLACEHOLDER_RESET_7D_AT (string)",
        "user": "PLACEHOLDER_USER (object)"
      }
    ],
    "total": "PLACEHOLDER_TOTAL (integer)",
    "page": "PLACEHOLDER_PAGE (integer)",
    "page_size": "PLACEHOLDER_PAGE_SIZE (integer)",
    "pages": "PLACEHOLDER_PAGES (integer)"
  }
}
```

Особенности: Все личные данные и объекты ограничены субъектом JWT.

Особенности: Ответ содержит секретный key; не публиковать реальные значения.

**POST /api/v1/keys** — Создание API-ключа

Доступ: Токен кабинета

POST`/api/v1/keys`

## Поля JSON / формы

| Поле | Тип | Обязательно | Проверка / описание |
| --- | --- | --- | --- |
| `name` | `string` | да | required |
| `custom_key` | `string` | нет | ; Необязательное собственное значение ключа; может быть null |
| `ip_whitelist` | `array` | нет | ; Список разрешённых IP |
| `ip_blacklist` | `array` | нет | ; Список запрещённых IP |
| `quota` | `number` | нет | ; Лимит трат ключа в USD; может быть null |
| `expires_in_days` | `integer` | нет | ; Срок действия в днях; может быть null |
| `rate_limit_5h` | `number` | нет | ; может быть null |
| `rate_limit_1d` | `number` | нет | ; может быть null |
| `rate_limit_7d` | `number` | нет | ; может быть null |

Шаблон тела запроса

```json
{
  "name": "PLACEHOLDER_NAME (string)",
  "custom_key": "PLACEHOLDER_CUSTOM_KEY (string)",
  "ip_whitelist": "PLACEHOLDER_IP_WHITELIST (array)",
  "ip_blacklist": "PLACEHOLDER_IP_BLACKLIST (array)",
  "quota": "PLACEHOLDER_QUOTA (number)",
  "expires_in_days": "PLACEHOLDER_EXPIRES_IN_DAYS (integer)",
  "rate_limit_5h": "PLACEHOLDER_RATE_LIMIT_5H (number)",
  "rate_limit_1d": "PLACEHOLDER_RATE_LIMIT_1D (number)",
  "rate_limit_7d": "PLACEHOLDER_RATE_LIMIT_7D (number)"
}
```

PLACEHOLDER обозначает ваш ввод и его тип. Замените значения и оставьте только нужные необязательные поля; строковые маркеры не отправляются вместо чисел, boolean, объектов или массивов.

Схема запроса: `CreateAPIKeyRequest`

## Ответ

JSON-ответ содержит code, message и data. Содержимое data описано в схемах ниже.

Схемы данных ответа: `APIKey`. Поля и типы — на страницах «Схемы данных».

Схема ответа, значения условные

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "id": "PLACEHOLDER_ID (integer)",
    "user_id": "PLACEHOLDER_USER_ID (integer)",
    "key": "PLACEHOLDER_KEY (string)",
    "name": "PLACEHOLDER_NAME (string)",
    "status": "PLACEHOLDER_STATUS (string)",
    "ip_whitelist": "PLACEHOLDER_IP_WHITELIST (array)",
    "ip_blacklist": "PLACEHOLDER_IP_BLACKLIST (array)",
    "last_used_at": "PLACEHOLDER_LAST_USED_AT (string)",
    "last_used_ip": "PLACEHOLDER_LAST_USED_IP (string)",
    "quota": "PLACEHOLDER_QUOTA (number)",
    "quota_used": "PLACEHOLDER_QUOTA_USED (number)",
    "expires_at": "PLACEHOLDER_EXPIRES_AT (string)",
    "created_at": "PLACEHOLDER_CREATED_AT (string)",
    "updated_at": "PLACEHOLDER_UPDATED_AT (string)",
    "current_concurrency": "PLACEHOLDER_CURRENT_CONCURRENCY (integer)",
    "rate_limit_5h": "PLACEHOLDER_RATE_LIMIT_5H (number)",
    "rate_limit_1d": "PLACEHOLDER_RATE_LIMIT_1D (number)",
    "rate_limit_7d": "PLACEHOLDER_RATE_LIMIT_7D (number)",
    "usage_5h": "PLACEHOLDER_USAGE_5H (number)",
    "usage_1d": "PLACEHOLDER_USAGE_1D (number)",
    "usage_7d": "PLACEHOLDER_USAGE_7D (number)",
    "window_5h_start": "PLACEHOLDER_WINDOW_5H_START (string)",
    "window_1d_start": "PLACEHOLDER_WINDOW_1D_START (string)",
    "window_7d_start": "PLACEHOLDER_WINDOW_7D_START (string)",
    "reset_5h_at": "PLACEHOLDER_RESET_5H_AT (string)",
    "reset_1d_at": "PLACEHOLDER_RESET_1D_AT (string)",
    "reset_7d_at": "PLACEHOLDER_RESET_7D_AT (string)",
    "user": "PLACEHOLDER_USER (object)"
  }
}
```

Особенности: Все личные данные и объекты ограничены субъектом JWT.

Особенности: Операция изменяет состояние или продолжает одноразовую авторизацию; пример описывает контракт и не выполняется.

Особенности: Idempotency-Key поддерживается; повтор возвращает сохранённый ответ с X-Idempotency-Replayed.

Особенности: Ответ содержит секретный key; не публиковать реальные значения.

Метод изменяет данные. Повторная отправка безопасна только там, где у метода указан Idempotency-Key. Если ответ потерялся, сначала проверьте результат (например, список ключей), а потом решайте, повторять ли запрос.

**DELETE /api/v1/keys/:id** — Удаление — API-ключи

Доступ: Токен кабинета

DELETE`/api/v1/keys/:id`

## Параметры пути

| Поле | Тип | Обязательно | Проверка / описание |
| --- | --- | --- | --- |
| `id` | `integer` | да |  |

Тело запроса не требуется.

## Ответ

JSON-ответ содержит code, message и data. Содержимое data описано в схемах ниже.

Схема ответа, значения условные

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "message": "VALUE_FROM_RESPONSE"
  }
}
```

Особенности: Все личные данные и объекты ограничены субъектом JWT.

Особенности: Операция изменяет состояние или продолжает одноразовую авторизацию; пример описывает контракт и не выполняется.

Особенности: Ответ содержит секретный key; не публиковать реальные значения.

Метод изменяет данные. Повторная отправка безопасна только там, где у метода указан Idempotency-Key. Если ответ потерялся, сначала проверьте результат (например, список ключей), а потом решайте, повторять ли запрос.

**GET /api/v1/keys/:id** — Получение по идентификатору — API-ключи

Доступ: Токен кабинета

GET`/api/v1/keys/:id`

Чтение; ID берётся из вашего предыдущего ответа

```bash
curl --fail-with-body "https://ailoot.ai/api/v1/keys/$ID" \
  -H "Authorization: Bearer $TOKEN"
```

## Параметры пути

| Поле | Тип | Обязательно | Проверка / описание |
| --- | --- | --- | --- |
| `id` | `integer` | да |  |

Тело запроса не требуется. Передавайте указанные выше параметры в URL.

## Ответ

JSON-ответ содержит code, message и data. Содержимое data описано в схемах ниже.

Схемы данных ответа: `APIKey`. Поля и типы — на страницах «Схемы данных».

Схема ответа, значения условные

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "id": "PLACEHOLDER_ID (integer)",
    "user_id": "PLACEHOLDER_USER_ID (integer)",
    "key": "PLACEHOLDER_KEY (string)",
    "name": "PLACEHOLDER_NAME (string)",
    "status": "PLACEHOLDER_STATUS (string)",
    "ip_whitelist": "PLACEHOLDER_IP_WHITELIST (array)",
    "ip_blacklist": "PLACEHOLDER_IP_BLACKLIST (array)",
    "last_used_at": "PLACEHOLDER_LAST_USED_AT (string)",
    "last_used_ip": "PLACEHOLDER_LAST_USED_IP (string)",
    "quota": "PLACEHOLDER_QUOTA (number)",
    "quota_used": "PLACEHOLDER_QUOTA_USED (number)",
    "expires_at": "PLACEHOLDER_EXPIRES_AT (string)",
    "created_at": "PLACEHOLDER_CREATED_AT (string)",
    "updated_at": "PLACEHOLDER_UPDATED_AT (string)",
    "current_concurrency": "PLACEHOLDER_CURRENT_CONCURRENCY (integer)",
    "rate_limit_5h": "PLACEHOLDER_RATE_LIMIT_5H (number)",
    "rate_limit_1d": "PLACEHOLDER_RATE_LIMIT_1D (number)",
    "rate_limit_7d": "PLACEHOLDER_RATE_LIMIT_7D (number)",
    "usage_5h": "PLACEHOLDER_USAGE_5H (number)",
    "usage_1d": "PLACEHOLDER_USAGE_1D (number)",
    "usage_7d": "PLACEHOLDER_USAGE_7D (number)",
    "window_5h_start": "PLACEHOLDER_WINDOW_5H_START (string)",
    "window_1d_start": "PLACEHOLDER_WINDOW_1D_START (string)",
    "window_7d_start": "PLACEHOLDER_WINDOW_7D_START (string)",
    "reset_5h_at": "PLACEHOLDER_RESET_5H_AT (string)",
    "reset_1d_at": "PLACEHOLDER_RESET_1D_AT (string)",
    "reset_7d_at": "PLACEHOLDER_RESET_7D_AT (string)",
    "user": "PLACEHOLDER_USER (object)"
  }
}
```

Особенности: Все личные данные и объекты ограничены субъектом JWT.

Особенности: Ответ содержит секретный key; не публиковать реальные значения.

**PUT /api/v1/keys/:id** — Изменение API-ключа

Доступ: Токен кабинета

PUT`/api/v1/keys/:id`

## Параметры пути

| Поле | Тип | Обязательно | Проверка / описание |
| --- | --- | --- | --- |
| `id` | `integer` | да |  |

## Поля JSON / формы

| Поле | Тип | Обязательно | Проверка / описание |
| --- | --- | --- | --- |
| `name` | `string` | нет |  |
| `status` | `string` | нет | omitempty,oneof=active inactive |
| `ip_whitelist` | `array` | нет | ; Разрешённые IP: null не изменяет список, пустой массив очищает его; может быть null |
| `ip_blacklist` | `array` | нет | ; Запрещённые IP: null не изменяет список, пустой массив очищает его; может быть null |
| `quota` | `number` | нет | ; Лимит трат ключа в USD; 0 — без лимита; может быть null |
| `expires_at` | `string` | нет | ; Время окончания действия в формате ISO 8601; может быть null |
| `reset_quota` | `boolean` | нет | ; Сбросить израсходованную часть лимита трат; может быть null |
| `rate_limit_5h` | `number` | нет | ; может быть null |
| `rate_limit_1d` | `number` | нет | ; может быть null |
| `rate_limit_7d` | `number` | нет | ; может быть null |
| `reset_rate_limit_usage` | `boolean` | нет | ; Сбросить расход лимитов за окна; может быть null |

Шаблон тела запроса

```json
{
  "name": "PLACEHOLDER_NAME (string)",
  "status": "PLACEHOLDER_STATUS (string)",
  "ip_whitelist": "PLACEHOLDER_IP_WHITELIST (array)",
  "ip_blacklist": "PLACEHOLDER_IP_BLACKLIST (array)",
  "quota": "PLACEHOLDER_QUOTA (number)",
  "expires_at": "PLACEHOLDER_EXPIRES_AT (string)",
  "reset_quota": "PLACEHOLDER_RESET_QUOTA (boolean)",
  "rate_limit_5h": "PLACEHOLDER_RATE_LIMIT_5H (number)",
  "rate_limit_1d": "PLACEHOLDER_RATE_LIMIT_1D (number)",
  "rate_limit_7d": "PLACEHOLDER_RATE_LIMIT_7D (number)",
  "reset_rate_limit_usage": "PLACEHOLDER_RESET_RATE_LIMIT_USAGE (boolean)"
}
```

PLACEHOLDER обозначает ваш ввод и его тип. Замените значения и оставьте только нужные необязательные поля; строковые маркеры не отправляются вместо чисел, boolean, объектов или массивов.

Схема запроса: `UpdateAPIKeyRequest`

## Ответ

JSON-ответ содержит code, message и data. Содержимое data описано в схемах ниже.

Схемы данных ответа: `APIKey`. Поля и типы — на страницах «Схемы данных».

Схема ответа, значения условные

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "id": "PLACEHOLDER_ID (integer)",
    "user_id": "PLACEHOLDER_USER_ID (integer)",
    "key": "PLACEHOLDER_KEY (string)",
    "name": "PLACEHOLDER_NAME (string)",
    "status": "PLACEHOLDER_STATUS (string)",
    "ip_whitelist": "PLACEHOLDER_IP_WHITELIST (array)",
    "ip_blacklist": "PLACEHOLDER_IP_BLACKLIST (array)",
    "last_used_at": "PLACEHOLDER_LAST_USED_AT (string)",
    "last_used_ip": "PLACEHOLDER_LAST_USED_IP (string)",
    "quota": "PLACEHOLDER_QUOTA (number)",
    "quota_used": "PLACEHOLDER_QUOTA_USED (number)",
    "expires_at": "PLACEHOLDER_EXPIRES_AT (string)",
    "created_at": "PLACEHOLDER_CREATED_AT (string)",
    "updated_at": "PLACEHOLDER_UPDATED_AT (string)",
    "current_concurrency": "PLACEHOLDER_CURRENT_CONCURRENCY (integer)",
    "rate_limit_5h": "PLACEHOLDER_RATE_LIMIT_5H (number)",
    "rate_limit_1d": "PLACEHOLDER_RATE_LIMIT_1D (number)",
    "rate_limit_7d": "PLACEHOLDER_RATE_LIMIT_7D (number)",
    "usage_5h": "PLACEHOLDER_USAGE_5H (number)",
    "usage_1d": "PLACEHOLDER_USAGE_1D (number)",
    "usage_7d": "PLACEHOLDER_USAGE_7D (number)",
    "window_5h_start": "PLACEHOLDER_WINDOW_5H_START (string)",
    "window_1d_start": "PLACEHOLDER_WINDOW_1D_START (string)",
    "window_7d_start": "PLACEHOLDER_WINDOW_7D_START (string)",
    "reset_5h_at": "PLACEHOLDER_RESET_5H_AT (string)",
    "reset_1d_at": "PLACEHOLDER_RESET_1D_AT (string)",
    "reset_7d_at": "PLACEHOLDER_RESET_7D_AT (string)",
    "user": "PLACEHOLDER_USER (object)"
  }
}
```

Особенности: Все личные данные и объекты ограничены субъектом JWT.

Особенности: Операция изменяет состояние или продолжает одноразовую авторизацию; пример описывает контракт и не выполняется.

Особенности: Ответ содержит секретный key; не публиковать реальные значения.

Особенности: Пока по ключу есть незавершённые запросы с резервом, его лимит трат нельзя уменьшить или сбросить. Передавайте только поля, которые меняете.

Метод изменяет данные. Повторная отправка безопасна только там, где у метода указан Idempotency-Key. Если ответ потерялся, сначала проверьте результат (например, список ключей), а потом решайте, повторять ли запрос.

Остались вопросы? Пришлите Request ID и описание — поможем разобраться.[Написать в поддержку](mailto:support@ailoot.ai)

## Ailoot · Компания и портфель её проектов





Ailoot опирается на накопленный опыт работы, большую клиентскую базу, стабильный сервис и постоянный контроль KPI.





Компания и портфель её проектов: миллионы клиентов; продажи на миллиарды ежемесячно.





Этот опыт Ailoot использует для API-доступа к нейросетям в продуктах клиентов, агентах, приложениях и автоматизациях.
