GETAPI
СвязатьсяВойти
GETAPI/Документация/Скилл: ошибки и повторы

Скилл: ошибки и повторы

Диагностика без раскрытия ключей и повторных побочных действий

Разбор ошибки

Проверяй HTTP-статус и тело ответа. Ошибка может быть JSON, текстом или событием уже открытого потока

Поля error.code, error.type и идентификатор запроса могут отсутствовать Не выводи ключ и полные конфиденциальные входные данные

В Chat Completions проверяй choices[].error и finish_reason: "error", ошибка может сопровождаться HTTP 200 и частью текста в message.content, такой ответ не считается завершённым

Действия

ОшибкаДействие
Неверный ключ или праваИсправить доступ, не повторять тот же запрос
Неверная модель или параметрыИсправить запрос
402Проверить причину в теле, при metadata.limit_source: "openrouter_credits" передать ID запроса в поддержку GetAPI для проверки кредитов OpenRouter
429Проверить причину ограничения, учесть Retry-After, если есть
Временная 5xxОграниченный повтор с задержкой, если операция безопасна
Таймаут после отправкиСостояние выполнения неизвестно, проверить последствия
Ошибка SSEСчитать ответ частичным, не выдавать за завершённый

Один статус 503 не определяет причину. Если тело указывает на model_not_found, повтор без изменения модели не исправит запрос

Если состояние видео failed не содержит причины, прочитай GET /v1/tasks/{id} тем же ключом. В fail_reason может быть дополнительное описание, данные расчёта могут отсутствовать. Проверяй возврат по связанным проводкам, одного status: "FAILURE" недостаточно

Проверка резерва

Для Batch проверяй billing_status, reserved_quota и charged_quota отдельно от status. При reconciliation_required возврат резерва ещё не подтверждён

Сохраняй ID задания, суммы и время, сверяй связанные проводки. Не создавай новое задание ради освобождения прежнего резерва, передай данные в поддержку, если расчёт остаётся незавершённым

Запрос отмены Batch POST /v1/batches/{id}/cancel может вернуть unsupported_operation. При таком ответе не считай задание отменённым и резерв возвращённым, продолжай проверять исходный ID

Повторы

Установи предел попыток и общий срок. Используй задержку с увеличением и случайным разбросом, если это соответствует приложению

Не дублируй внешние действия агента при повторе генерации. Для платного асинхронного задания сначала проверь уже созданный ID

После таймаута или HTTP 502 запрос мог быть выполнен, проверь первую попытку по ID перед повторным созданием ресурса Если ID не получен, сохрани идентификатор запроса из ответа или журнала и передай в поддержку, не создавай дубликат автоматически

Сохраняй идентификатор и время запроса для поддержки, но не секреты

Подробности: ошибки API, повторы, таймауты

Для аудиозадания или изображения прочитай GET /v1/tasks/{task_id} ключом того же аккаунта, если task_id есть в журнале Внутренний ID задания может отличаться от ID запроса

При status: "FAILURE" и reconciliation.billing_state: "manual_reconciliation" возврат ещё не подтверждён Значение cost_confirmed: false означает, что стоимость не установлена, next_lookup_at: null означает, что следующая проверка не назначена Сохрани резерв и проводки для сверки с поддержкой

Строка «Стоимость» для аудио в кабинете может показывать резерв после возврата остатка, сверяй итоговые проводки по task_id

При response delivery failed: context_canceled сопоставляй журнал с сохранённым ответом приложения по request ID. Такая запись может сопровождаться полученным HTTP 200, не повторяй платный запрос только из-за этой строки

При bad_response_body с сообщением cost is missing or invalid окончательная стоимость ответа не подтверждена, сохрани ID запроса и сверь проводки При model_price_error с сообщением hosted-search quantity is unpriced не рассчитан резерв поиска, сохрани полный ответ для поддержки

Назад
← Скилл: эмбеддинги