API-ключи
MarkdownМетоды, поля запросов и ответы.
Полное руководство
В разделе 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-ключи
Доступ: Токен кабинета
/api/v1/keyscurl --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. Поля и типы — на страницах «Схемы данных».
{
"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-ключа
Доступ: Токен кабинета
/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 |
{
"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. Поля и типы — на страницах «Схемы данных».
{
"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; не публиковать реальные значения.
DELETE /api/v1/keys/:id — Удаление — API-ключи
Доступ: Токен кабинета
/api/v1/keys/:idПараметры пути
| Поле | Тип | Обязательно | Проверка / описание |
|---|---|---|---|
id | integer | да |
Тело запроса не требуется.
Ответ
JSON-ответ содержит code, message и data. Содержимое data описано в схемах ниже.
{
"code": 0,
"message": "success",
"data": {
"message": "VALUE_FROM_RESPONSE"
}
}Особенности: Все личные данные и объекты ограничены субъектом JWT.
Особенности: Операция изменяет состояние или продолжает одноразовую авторизацию; пример описывает контракт и не выполняется.
Особенности: Ответ содержит секретный key; не публиковать реальные значения.
GET /api/v1/keys/:id — Получение по идентификатору — API-ключи
Доступ: Токен кабинета
/api/v1/keys/:idcurl --fail-with-body "https://ailoot.ai/api/v1/keys/$ID" \
-H "Authorization: Bearer $TOKEN"Параметры пути
| Поле | Тип | Обязательно | Проверка / описание |
|---|---|---|---|
id | integer | да |
Тело запроса не требуется. Передавайте указанные выше параметры в URL.
Ответ
JSON-ответ содержит code, message и data. Содержимое data описано в схемах ниже.
Схемы данных ответа: APIKey. Поля и типы — на страницах «Схемы данных».
{
"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-ключа
Доступ: Токен кабинета
/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 |
{
"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. Поля и типы — на страницах «Схемы данных».
{
"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; не публиковать реальные значения.
Особенности: Пока по ключу есть незавершённые запросы с резервом, его лимит трат нельзя уменьшить или сбросить. Передавайте только поля, которые меняете.