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

Где читать ошибку

Пример ошибки запроса с условным текстом:
Пример сбоя выполнения задачи:
Кратность в примере не является общим ограничением моделей. HTTP 200 означает успех проверки, поэтому проверяйте и статус задачи. Числовой бизнес-код 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 является снимком события; платежные поля могут отличаться от последующих проверок.

Обращение в поддержку

Укажите время и часовой пояс, модель, API, HTTP-статус, ID запроса, доступный ID задачи, code/reason и описание без конфиденциальных данных. Для изображения достаточно размеров, формата и размера файла. Не отправляйте API Key, подписанные URL, полные промпты или личные медиа; для воспроизведения используйте минимальный публичный пример.