Конверт
Каждый сбой, независимо от статуса, — это один JSON-объект:codeстабилен и рассчитан на машинную обработку. Ветвите логику по нему, а не поmessage.message— пояснение для человека, оно может меняться.request_id— UUID запроса. Он также возвращается в заголовкеX-Request-IDв каждом ответе, успешном или нет. Указывайте его, когда сообщаете о проблеме.
error с теми же тремя полями; см. Стриминг.
Коды
agent_not_found и agent_disabled проверяются только в POST …/chat и POST …/chat/stream. Два GET-эндпоинта не смотрят на состояние агента: ключ выключенного агента всё ещё может получить список его диалогов и прочитать сообщения.
Что повторять
Повторить через Retry-After с тем же Idempotency-Key
Повторить через Retry-After с тем же Idempotency-Key
idempotency_in_progress, conversation_busy, rate_limit_exceeded, api_rate_limit_unavailable, service_unavailable. Повторное использование ключа гарантирует, что вы никогда не заплатите дважды за одно сообщение.Сначала исправить запрос
Сначала исправить запрос
validation_error (прочитайте message; в нём названо проблемное поле), idempotency_conflict (используйте новый ключ для нового тела), permission_denied (используйте ключ с full), agent_mismatch (используйте агента, которому принадлежит ключ).Не повторять автоматически
Не повторять автоматически
invalid_api_key (ключ удалён или секрет неверен), agent_disabled, agent_not_found, insufficient_balance (сначала пополните баланс). Цикл повторов на этих кодах только сжигает лимит запросов.Сообщить с идентификатором запроса
Сообщить с идентификатором запроса
internal_error. Повторите один раз с тем же Idempotency-Key: неуспешная запись освобождается, поэтому повтор выполняет запрос заново, а не воспроизводит сохранённый результат. Это ожидаемо, но не гарантирует бесплатность. Если сбой случился после того, как модель уже ответила, повтор создаст новый ответ и новое списание. Если сбой повторяется, пришлите нам request_id.Замечание о 401
API не различает удалённый ключ и ключ, которого никогда не было: оба —invalid_api_key. Если ключ, который раньше работал, начал возвращать 401, проверьте карточку «Доступ по API» в приложении; скорее всего, его обновили или удалили.