Справочник API
Ошибки и квоты
Формат ошибок, распространённые коды и особенности генерации за бесплатные кредиты.
Формат ошибки
Все ошибки возвращаются в JSON с одинаковой внешней структурой:
{
"error": {
"code": "INSUFFICIENT_CREDITS",
"message": "Required 10 credits, available 4, missing 6. Choose lower-cost settings to continue."
}
}Поле code стабильно и подходит для ветвления в программе. Поле message содержит понятное человеку объяснение и может меняться.
Коды ошибок
| HTTP | Код | Когда возникает | Что делать |
|---|---|---|---|
400 | INVALID_INPUT | Тело запроса не прошло проверку: отсутствует промпт, недопустимое значение перечисления или нарушено правило, например включён звук без pro. | Исправьте запрос; сообщение указывает проблемное поле. |
404 | JOB_NOT_FOUND | ID задачи не существует или задача не принадлежит вашему ключу либо браузерной сессии. | Проверьте ID, сохранённый при создании задачи. |
402 | INSUFFICIENT_CREDITS | Бесплатных и прочих кредитов на балансе не хватает на рассчитанную сервером стоимость. | Получите доступные бесплатные кредиты или выберите более дешёвые настройки. |
403 | CHALLENGE_REQUIRED | Система защиты генерации обнаружила независимые сигналы высокого риска. | Пройдите запрошенную сервером проверку и повторите запрос с тем же ключом идемпотентности. |
429 | GENERATION_COOLDOWN | Высокая частота запросов и сильные независимые сигналы риска вызвали паузу для конкретной модели. | Дождитесь окончания паузы; повторные запросы её не продлевают. |
502 | CREATE_JOB_FAILED | Процесс генерации отклонил задачу или не смог её принять. | Временный сбой — повторите запрос с экспоненциальной задержкой. |
500 | UNKNOWN_ERROR | На нашей стороне произошла непредвиденная ошибка. | Повторите один раз; если ошибка сохраняется, свяжитесь с нами. |
Сбои после принятия задачи не используют этот формат. Сама задача переходит в status: "failed", а причина указывается в errorMessage, как описано в жизненном цикле задачи.
Бесплатные кредиты
- Гости и вошедшие пользователи, соответствующие условиям, получают бесплатные кредиты вручную.
- Бесплатные кредиты истекают в ближайшую полночь UTC и расходуются раньше остальных.
- Сервер рассчитывает стоимость по модели, длительности, разрешению, звуку и поддерживаемым настройкам опорного видео.
- Если принятая задача завершилась ошибкой или была отменена, кредиты возвращаются к исходному источнику. Возврат бесплатных кредитов никогда не превращает их в платные.
Простой вариант интеграции:
const res = await fetch(`${BASE}/api/ai-video/jobs`, { method: 'POST', headers, body });
if (res.status === 402) {
const { error } = await res.json();
if (error.code === 'INSUFFICIENT_CREDITS') {
// retain the draft and ask the user to claim or lower the quoted cost
}
}Нужно больше, чем даёт бесплатный уровень? Свяжитесь с нами, и мы поможем подобрать подходящий объём.