invalid_request может означать неподходящие размеры изображения, а не отсутствие поддержки изображений.
Где читать ошибку
Пример ошибки запроса с условным текстом:
code тоже отличается от HTTP-статуса. При success: false проверяйте тело.
code идентифицирует ошибку, необязательный reason уточняет причину сбоя задачи, message объясняет ситуацию. error.type не обязательно совпадает с кодом. Текст может зависеть от языка; не стройте логику на полном совпадении сообщений. У некоторых ошибок авторизации code пуст, а некоторые протоколы возвращают только type и message.
Ошибки запросов
Эти идентификаторы возможны в публичных запросах, но не все API возвращают каждый из них. Модель может сохранять исходное написание. Расположение полей указано выше.Что именно означает invalid_request
Примеры обобщены из диагностики реальных запросов и неудачных задач. Они могут возвращаться под общим кодом параметров, отдельнымreason или исходным кодом модели. Прежде чем менять запрос, прочитайте поле и пояснение.
Числа в прошлых ошибках не являются ограничениями всей платформы. Поддержку изображений определяйте по возможностям модели, а не только по
invalid_request или invalid_image.
Причины сбоя задач
После получения ID ориентируйтесь на проверку задачи. Обычная ошибка генерации часто имеетerror.code=generation_failed, а необязательный error.reason уточняет категорию. Значения ниже не гарантированы в code ошибок запроса.
Если есть error.input_media_errors, читайте type, index, message каждого элемента. Например, type=image, index=0 указывает на первое изображение исходного запроса, чтобы исправить именно его. Эти сведения есть не у всех моделей и форматов проверки.
Некоторые модели сохраняют исходные ошибки, например
InvalidParameter.TaskTypeConstraint, RateLimitReached, InputImageSensitiveContentDetected, OutputVideoSensitiveContentDetected. Они могут относиться соответственно к параметрам задачи, частоте, проверке входа и проверке результата. Список не исчерпывающий.
В Seedance Global поля error.code и error.message могут сохранять исходные JSON-значения, включая числа и null, либо отсутствовать. Формат видео OpenAI и Webhook не гарантируют reason. Обрабатывайте неизвестные коды, пропуски и разные типы; исходный числовой код не является HTTP-статусом.
Повторы и восстановление запросов
- Параметры, формат и проверка контента: сначала исправьте ввод. Повтор без изменений обычно не помогает.
- Частотные ограничения и временная недоступность: соблюдайте
Retry-After, иначе используйте экспоненциальную задержку со случайной составляющей и ограничением повторов. - Есть ID задачи: проверяйте ту же задачу или получайте Webhook.
queuedиin_progressне являются ошибками и не требуют дубликатов. - Тайм-аут отправки видео или
submission_unconfirmed: если исходный запрос использовалclient_request_id, вызовитеGET /v1/video/requests/{client_request_id}из того же аккаунта. Проверяйте полученныйtask_id; приsubmittingилиunknownждите. Толькоstate=failedвместе сerror_code=submission_rejectedподтверждает отказ и позволяет новый запрос по инструкции. Восстановление доступно только поддерживающим его видео-API при использовании этого поля.
billing по руководству оплаты. Отсутствие полей не означает бесплатность или возврат. Webhook является снимком события; платежные поля могут отличаться от последующих проверок.