Документация
FRANKLAB API

Ошибки и повторы

Формат ошибок, коды статусов и лимиты.

Открыть .md
Открыть в AI

Разобраться с AI-ассистентом

Передаётся документация выбранного раздела, без ваших ключей. Большие разделы копируются целиком для вставки в чат.

Cursor и Claude Code откроются с готовым текстом, если он помещается в ссылку. ChatGPT и Antigravity: вставьте скопированный контекст вручную.

Задать вопрос

Формат

Ошибки биллинг-API обычно имеют следующий конверт. У API генерации также есть поля code, message и data; проверяйте контракт конкретного метода:

json
{
  "statusCode": 400,
  "message": "duration must be an integer number"
}
  • statusCode — HTTP-код;
  • message — строка или массив строк (ошибки валидации);
  • code — машиночитаемый код (не всегда присутствует).

Коды

КодКогда
400Неверные параметры запроса (валидация DTO)
401Нет ключа / ключ неизвестен или деактивирован
403Legacy service-ключ; доступ запрещён
404Ресурс не найден
429Превышен лимит. Для биллинга/вебхуков по умолчанию 60/мин на API-ключ, для сессии — на партнёра. Есть дополнительные IP-лимиты: таблица. Учитывайте Retry-After, если он присутствует
500Внутренняя ошибка; исход изменяющей операции может быть неизвестен. Правила повторов — ниже

Валидация

Глобальный валидационный пайплайн отбрасывает неизвестные поля и приводит типы. Массив message перечисляет все нарушения сразу:

json
{
  "statusCode": 400,
  "message": [
    "duration must be an integer number",
    "resolution must be shorter than or equal to 16 characters"
  ]
}

Рекомендации по ретраям

ОперацияПосле 429, 5xx или сетевого таймаута
Чтение баланса, истории, статуса задачиПовторяйте с ограничением числа попыток и экспоненциальной задержкой; учитывайте Retry-After
POST /v1/billing/pricing/estimateОценка не запускает задачу и не резервирует баланс; допустим ограниченный повтор
POST /v1/billing/payment/linkСохраняйте исходные Idempotency-Key и сумму; не создавайте новый ключ для повторной попытки той же операции. Конфликт суммы — 409
Запуск генерацииНе повторяйте автоматически. Если есть data.task_id, проверяйте эту задачу. Успешное списание или его отсутствие не доказывает, что провайдер не принял запрос
Создание счёта или регистрация вебхукаСначала проверьте историю счетов / список эндпоинтов; общего обещания идемпотентности здесь нет
Повтор доставки вебхукаСначала проверьте получателя и историю доставки. Replay сохраняет eventId; обработчик обязан дедуплицировать событие

Для 401/403 исправьте авторизацию; повтор без изменения ключа или сессии не поможет. Для 400 исправьте параметры. Не продолжайте бесконечный polling: ограничьте время ожидания и сохраните идентификатор для последующей проверки.

Неизвестный исход запуска

Если ответ запуска потерян и task_id отсутствует, не отправляйте новый платный запрос. Проверьте историю задач в кабинете и обратитесь через контакты Apergrex. Передайте время UTC, путь API, HTTP-код и известные идентификаторы. Не передавайте API-ключ, cookie, подпись или секрет вебхука.

/docs/errors.md
Не нашли ответ?Связаться с поддержкой