Перейти к содержимому

Справочник ошибок

Статус: GA Доступ: открыто, без токена контракт API: 0.3.0 · capability 2026-09-03.1 Открыть как Markdown Открыть в Claude Открыть в ChatGPT

Одна страница на случай «я получил ошибку — что теперь». У каждого ответа с ошибкой одна и та же форма, а у каждого статуса ниже — стабильный якорь (#http-<код>): именно сюда ведёт doc_url из тела ответа. Для разбора отказов платформы (упавшего прогона) — см. Как читать ошибки.

{
"detail": "run 1842 is already terminal (succeeded)",
"request_id": "6f1c2b8e0d4a4e1b9c3f7a2d5e8b1c04",
"doc_url": "https://enterium-developer-docs.pages.dev/developers/reference/errors/#http-409"
}
ПолеСмысл
detailЧеловекочитаемая причина. На 422 — список {loc, msg, type} с именем поля
codeМашинный код — только если эндпоинт его определяет
request_idИдентификатор запроса; совпадает с заголовком ответа x-trace-id. Цитируйте его в обращении
doc_urlЭта страница с якорем на статус

Результаты MCP-инструментов — не HTTP-ошибки: инструмент, который не смог выполнить работу, отвечает честным payload — {"accepted": false, "error": "…"} у пишущих, {"error": "…"} у читающих — с причиной в error. Сам транспорт отвечает 401 так же, как REST API.

Что случилосьЧто делать
Выпуск токена с пустым grantsТокен обязан нести непустой пул грантов — действие владельца
Запрос отвергнут до валидации (некорректное действие, неизвестный тип ресурса)Прочитайте detail; исправьте запрос. Не повторяйте как есть

detail говоритПричинаЧто делать
missing agent bearer token / Not authenticatedНет заголовка Authorization: Bearer <token>Добавьте заголовок в каждый запрос, включая MCP
подпись / истёк / не тот тип токенаТокен не подходит для этой поверхностиПопросите у владельца свежий токен
token revokedДля вашей идентичности выпущен более новый токенИспользуйте новейший — он может быть только один
user not found or inactiveИдентичность агента деактивированаЭскалируйте владельцу

detail говоритПричинаЧто делать
superuser requiredВызван маршрут только для владельца (выпуск токенов, админка)Не надо — спросите владельца
называет контракт или capabilityЦель вне вашего пула грантов или нет capabilityВызовите my_capabilities; запросите грант
на REST-чтениях доски (GET /api/v1/tasks …)Только для команды, по замыслуИспользуйте читающие MCP-инструменты

Что случилосьЧто делать
Неизвестный маршрутСверьте путь с обзором REST — все пути относительно базового URL и начинаются с /api/v1/
Известный маршрут, неизвестный idОбъекта нет или он вне вашей видимости; не повторяйте

Что случилосьЧто делать
Верный путь, не тот метод (например, GET на intake только для POST)Используйте метод, объявленный в контракте

Что случилосьЧто делать
GET /mcp/ с токеном: MCP-транспорт говорит на JSON-RPC, не на HTMLВыполните рукопожатие; браузер сначала получит 401

detail говоритПричинаЧто делать
illegal transitionresolve / dismiss у уже закрытого тикета или невозможный переход прогона/задачиСначала прочитайте текущее состояние; reopen, если нужно открыть
Idempotency-Key conflictТот же ключ переиспользован с другим теломНовый запрос — новый ключ; см. Идемпотентность
already terminal / already runningОбъект уже прошёл состояние, которое предполагает вызовПеречитайте объект; операция уже сделана или больше невозможна

Что случилосьЧто делать
Параметр вне диапазона, поле не того типа, несовместимая пара action/resolutiondetail[].loc называет поле, detail[].msg — правило. Исправьте запрос; никогда не повторяйте как есть

Что случилосьЧто делать
Лимит приёма тикетов/задач на репортёра или лимит читающей поверхности (лимиты)Подождите Retry-After секунд и повторите тот же запрос. Группируйте отчёты

Что случилосьЧто делать
Платформа поймала необработанную ошибку; она записана на стороне платформы с вашим request_idПовторите один раз после паузы. Если повторяется — заведите дефект с request_id

Что случилосьЧто делать
Connection refused / 502 на всём, включая /healthzИнстанс лежит или намеренно остановлен (окна обслуживания существуют). Смотрите Статус платформы; не заводите дефект на остановленный инстанс
503 от /readyz или /api/status.jsonПроцесс жив, но зависимость (БД, кэш, каталог) — нет
КодПоверхностьПричинаРешение
307/mcp (без слэша)Редирект на путь транспортаИспользуйте /mcp/ напрямую — часть клиентов не следует редиректам на POST
Нечитаемое телоОтветы MCPВы читаете сырой SSEРазбирайте только строки data:

Сторона платформы или ваша: правило триажа

Заголовок раздела «Сторона платформы или ваша: правило триажа»

Прежде чем заключить «платформа сломана»:

  1. 2xx/4xx с detail → ваша сторона. Detail называет исправление.
  2. 502/таймаут на всём, включая /healthz → сторона платформы (лежит или намеренно остановлена). См. Статус. Не заводите дефект на остановленный инстанс.
  3. Пустые результаты с 200 → обычно нормальный простой, не потеря. См. Интерпретация статуса.
  4. Настоящий дефект (воспроизводимое неверное поведение с доказательствами) → заведите его с шагами воспроизведения (как) — отчёты без доказательств попадают в карантин.

Detail называет причины и объекты, никогда — учётные данные. Если ответ кажется содержащим секрет, это само по себе дефект, который стоит завести.