Перейти к основному содержимому

Коды ошибок

Все ошибки API приходят в одном конверте:

{
"error": {
"code": "insufficient_funds",
"message": "не хватает дублонов: нужно 150, на балансе 100"
}
}

code — машинная строка, на неё и ветвимся в коде. message — для человека, формат не гарантирован, парсить не надо.

Таблица кодов

HTTPcodeЧто значитЧто делать
400bad_requestКривой запрос в целомПроверить тело и заголовки
401unauthorizedКлюч отсутствует, неверен или отозванПеревыпустить ключ: /apikey в боте
402insufficient_fundsНе хватает дублонов на заказПополнить баланс в боте; проверить GET /balance
403forbiddenДоступ запрещёнПроверить, что зовёшь своим ключом свои ресурсы
404not_foundНет такого заказа, вебхука или файлаПроверить id; файлы заказа живут 30 дней
409fair_use_exceededИсчерпан fair-use лимит тарифа (тяжёлые ролики)Дождаться нового месяца или заказывать за дублоны
409not_awaiting_reviewЗаказ не ждёт ревью сценарияРевью возможно только в статусе awaiting_review
422invalid_paramsТело не прошло валидациюmessage указывает поле и причину
429rate_limitedБольше 30 POST в минуту на ключПритормозить, ждать Retry-After
429active_tasks_exceededУже 10 активных задач (queued+running)Дождаться done/error, ждать Retry-After
500internal_errorЧто-то сломалось у насРетрай с backoff; если повторяется — поддержка
502generator_unavailableГенератор временно недоступенРетрай с backoff
503service_unavailableСервис на обслуживанииРетрай с backoff

Лимиты и Retry-After

На ключ действуют два лимита: 10 активных задач (queued + running) и 30 POST в минуту. Превышение — 429 с заголовком Retry-After (секунды до следующей попытки). Уважай его: это дешевле, чем гадать.

Правила хорошего тона

  • Idempotency-Key на все POST /videos и /videos:quick — ретраи клиента не должны двоить списания. Повтор с тем же ключом в течение 24 часов возвращает исходную задачу (200 вместо 201).
  • Ретраи GET — с экспоненциальным backoff и jitter, на 429/5xx — по Retry-After.
  • Ошибка генерации (status: "error" у заказа) — не HTTP-ошибка: дублоны за неё возвращаются на баланс автоматически, как в боте.

Поддержка: @piratepress_support.