Усі теми

SHVYDKO / API

Помилки та повтори

Розрізняйте валідацію, ліміт, нестачу резерву й недоступність моделі.

Прочитайте HTTP-статус і detail

Помилка повертається з неуспішним HTTP-статусом і полем detail. При валідації також може бути errors — список полів і повідомлень. Не очікуйте answers у такій відповіді.

Приклад форми помилки валідації
{
  "detail": "Request validation failed",
  "errors": [
    {
      "field": "body.questions",
      "message": "Questions must use supported types"
    }
  ]
}

Текст прикладу ілюстративний. Обробляйте статус і структуру, а не точне формулювання detail.

Статуси

HTTPПричинаЩо зробити
401Ключ відсутній, невідомий або відкликанийПеревірити серверний секрет; не повторювати з тим самим ключем
402Не вистачає доступного балансу на резерв у paid-режиміПеревірити баланс і активні резерви
403Організацію призупинено для перевірки білінгуПеревірити стан організації; не обходити новими ключами
409Резерв запиту вже завершено або простроченоПеревірити Usage; автоматично не повторювати дію
413JSON перевищує ліміт байтівСкоротити контекст або розбити задачу
422Невірна структура, ім’я моделі або відхилений контекстВиправити запит чи зменшити контекст
429Хвилинний ліміт або добова preview-квотаВрахувати Retry-After, якщо є; для добової квоти — 00:00 UTC
502Модель недоступна, відповідь некоректна або сплив часОбмежений повтор із затримкою; перевірка Usage при втраті зв’язку
503Сервіс моделі не підключенийПеревірити стан сервісу пізніше

Повтори мають бути обмеженими

Для хвилинного 429 використайте Retry-After та невеликий випадковий зсув між клієнтами. Добова квота preview може повернути 429 без цього заголовка: повідомлення вкаже на скидання о 00:00 UTC.

Не повторюйте 401, 402, 403, 413 або 422 без зміни причини. Для мережевих збоїв та 502 задайте невеликий ліміт спроб і загальний часовий бюджет. У POST /v1/systemone немає гарантії ідемпотентності.

Шлюз не списує кредити за запит, який він завершив помилкою моделі. Втрата відповіді на стороні вашого клієнта — інша ситуація: сервер міг уже успішно завершити роботу.