2. Аутентификация и доступ

Выгрузка для ИИ (JSON)

Для create_task обязателен api_key в JSON. Для get_result/export_result доступ зависит от ключа, которым создана задача: публичные ключи дают открытый доступ по request_id, приватные требуют тот же API-ключ через X-API-Key или query api_key.

# 2. Аутентификация и доступ

Параметры безопасности

Тип
API key
Расположение
Тело запроса (JSON), заголовок X-API-Key или query api_key
Имя
api_key
Пример
655351024

# HTTP-заголовки

ЗаголовокЗначениеОписание
Content-Typeapplication/jsonОбязателен для POST /api.php?action=create_task
X-Calc-ProfileA | BОпциональный выбор профиля расчёта. Приоритет: header > query > body > default(A).
X-API-KeyОпционален для публичных задач и обязателен для приватных request_id в get_result/export_result.
Acceptapplication/jsonРекомендуется для API-запросов.

# Правила авторизации

POST/api.php?action=create_task
Требуется авторизация

Всегда требуется валидный api_key в JSON-теле.

{
  "api_key": "655351024",
  "user": { ... }
}
GET/api.php?action=get_result&request_id=...
Условно публичный

Если задача создана публичным ключом (public_result_access=true), достаточно request_id. Для приватных ключей нужен X-API-Key или query api_key.

GET /api.php?action=get_result&request_id=task_...&view=summary&api_key=<private_key>
GET/api.php?action=export_result&request_id=...&format=ndjson
Условно публичный

Правило такое же, как у get_result: для приватных ключей обязателен тот же ключ доступа.

GET /api.php?action=export_result&request_id=task_...&format=ndjson&api_key=<private_key>

# Система ранжирования API-ключей

# Таблица рангов

Поле / ПараметрТипОписание
demiurgeбезлимитФлаг is_god=true. limit_per_hour = -1 (без ограничения).
magusквотаlimit_per_hour = 1000 условных единиц в час.
masterквотаlimit_per_hour = 500 условных единиц в час.
adeptквотаlimit_per_hour = 100 условных единиц в час. Ранг тестового ключа.

# Лимиты и квоты

  • Стоимость новой задачи учитывается коэффициентом cost_new (по умолчанию 3).
  • Стоимость повторного/кэшированного обращения может учитываться коэффициентом cost_cached (по умолчанию 1).
  • Дополнительно действует лимит per_minute из реестра ключей (config/api_keys.php).

# Лимиты и квоты

List

  • Глобальный лимит API: 360 запросов за 60 секунд по IP (429 + Retry-After: 60).
  • Дополнительный лимит по ключу: per_minute из реестра API-ключей.
  • Почасовая квота по рангу/ключу учитывает стоимость новой задачи (cost_new).
  • Тестовый ключ 655351024 остаётся публичным и предназначен для интеграционных проверок.
  • run_worker защищён: доступ только с localhost или с валидным X-Worker-Token.

# Коды ошибок

401
Unauthorized: ключ отсутствует/невалиден или не передан для приватного request_id.
403
Forbidden: передан неверный ключ для приватного request_id или запрещён доступ к run_worker.
405
Метод не разрешён для выбранного HTTP-метода.
429
Превышен лимит запросов (глобальный или ключевой).