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-Type | application/json | Обязателен для POST /api.php?action=create_task |
| X-Calc-Profile | A | B | Опциональный выбор профиля расчёта. Приоритет: header > query > body > default(A). |
| X-API-Key | Опционален для публичных задач и обязателен для приватных request_id в get_result/export_result. | |
| Accept | application/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
Превышен лимит запросов (глобальный или ключевой).