Симптомы
При вызове модели Nano Banana (gemini-3.1-flash-image-preview, gemini-3-pro-image-preview, gemini-nano-banana-2.1 и т. д.) для редактирования изображения с референсным изображением API возвращает HTTP 400 с одной из этих двух ошибок:
Причина
inlineData.data в вашем запросе пуст, поэтому провайдер так и не получил изображение. Обе ошибки имеют одну и ту же причину; разные узлы формулируют её по-разному. В одном сообщается, что параметр inlineData пуст. В другом указано «unable to process input image», из-за чего может сложиться впечатление, что изображение повреждено или ссылка на него недоступна.
inlineData изображение передается в виде base64 внутри тела запроса, и провайдер не выполняет загрузку по ссылке. Эта ошибка означает, что сама строка base64 пуста. Проблема возникает на этапе, когда ваш код преобразует изображение в base64.Чек-лист
Действительно ли этап скачивания или кодирования завершился успешно?
Имеет ли переменная значение undefined?
JSON.stringify без предупреждения пропускает поля со значением undefined. Если imageBase64 имеет значение undefined, то в сериализованном запросе внутри inlineData будет присутствовать только mimeType, а поле data будет полностью отсутствовать, из-за чего провайдер сообщает о пустом inlineData. В коде этого не видно — необходимо логировать тело запроса, которое фактически отправляется.Содержит ли data префикс data URL?
inlineData.data должно содержать только чистый base64. Если у вас полная строка data:image/png;base64,iVBORw0..., удалите всё до запятой включительно.Соответствует ли mimeType реальному формату изображения?
mimeType значение image/png, image/jpeg или image/webp в соответствии с фактическим форматом. Расширения файлов ненадежны (некоторые файлы .jpg с телефонов на самом деле представляют собой многокадровые изображения). Самый надежный способ — перекодировать всё в PNG или JPEG в процессе конвертации.Валидация перед отправкой
Несколько строк проверок перед формированием запроса позволят выявить проблему локально, а не в виде ошибки API:- JavaScript
- Python
Хотите вместо этого передать URL изображения?
Нативный эндпоинт Gemini также принимает прямую ссылку на изображение. ИспользуйтеfileData, а не inlineData:
Часто задаваемые вопросы
Мое изображение общедоступно. Почему я все равно получаю эту ошибку?
Мое изображение общедоступно. Почему я все равно получаю эту ошибку?
inlineData провайдер не загружает данные по ссылке, поэтому публичный доступ не имеет значения. Проверьте шаг, на котором ваш код преобразует изображение в base64, и убедитесь, что отправляемое поле data не пустое.Тарифицируются ли эти неудачные запросы?
Тарифицируются ли эти неудачные запросы?