Перейти к содержимому
Зарегистрироваться бесплатно
Nano Banana

Nano Banana: выбор модели и подключение OpenAI API

Nano Banana 2, 2.1 и Pro в BetterToken: сравнение товаров, генерация и редактирование через OpenAI Images, размеры, Python SDK, сохранение и фактическая оплата.

Обновлено 22 октября 2026 г..

Выбор модели · Сравнение изображений · Быстрое подключение · Размеры и параметры · Редактирование по референсу · Python SDK · Оплата и устранение ошибок

С одним BetterToken API Key можно вызывать все доступные на платформе модели генерации изображений, включая Nano Banana 2, 2.1, Pro и серию GPT Image. Используйте единое подключение для генерации по тексту, изменения цвета по референсу и объединения двух изображений, а затем выбирайте модель под задачу и сосредоточьтесь на композиции, материалах и творческом замысле.

Если вы ещё не выбрали модель, начните с Nano Banana 2 + 1K, чтобы подобрать композицию, а затем создайте материалы 2K или 4K с подходящим описанием или референсом. В наших примерах товаров с одинаковым заданием Nano 2 отвечала быстрее, 2.1 сильнее выделяла объект, а Pro оставляла больше свободного пространства. Эти различия помогут выбрать направление для черновиков; окончательный выбор зависит от товара и макета.

Почему удобно подключать Nano Banana через BetterToken?

Формат подключения Nano Banana зависит от инструмента и сервиса: одни используют нативную структуру сообщений Gemini, другие — OpenAI Images, а третьи выполняют генерацию через Chat Completions. Различия в полях запроса, загрузке референсов и расположении изображений в ответе заставляют разработчиков тратить время на адаптацию API.

BetterToken предоставляет три способа вызывать Nano Banana: OpenAI Images, нативную генерацию Gemini и OpenAI Chat Completions. Если в проекте уже используется OpenAI SDK, выбирайте Images или Chat по задаче. Если у вас есть Google SDK или рабочий процесс Gemini, оставьте нативный формат. Во всех трёх случаях используется один BetterToken API Key; параметры и область применения описаны в разделе Выбор протокола.

  • Сравнивайте модели без отдельного подключения. Nano Banana и GPT Image работают с одним Key. В рабочем процессе Images можно повторно использовать авторизацию, адрес запроса и декодирование Base64, меняя параметры с учётом поддержки конкретной модели.
  • Переходите от идеи к редактированию в привычном клиенте. Подберите направление текстом, загрузите один референс для смены цвета или два изображения для объединения сцены. Для Nano Banana не нужно строить отдельную цепочку вызовов Gemini, если у вас уже есть клиент OpenAI Images.
  • Проверяйте характеристики и стоимость результата. Вместе с изображением ответ содержит фактический формат, размер в пикселях, тарифный уровень и сведения о списании. Приложение сможет правильно сохранить изображение, разместить его в макете и учесть расходы.

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

Выберите модель под задачу

ЗадачаС чего начатьЧто проверить дальше
Быстро подобрать композицию, цвета и стиль товараnano-banana-2, 1KОцените объект, освещение и свободное пространство, затем повысьте разрешение
Сравнить передачу материала и размер объектаnano-banana-2.1Используйте одинаковые запрос и параметры, сравните результат с Nano 2
Найти изображение товара с местом для заголовкаnano-banana-proУкажите свободную область в запросе и проверьте, подходит ли макет
Перекрасить готовое изображение товара или заменить фонРедактирование Images в любой из трёх моделейНачните с реального референса и проверьте конструкцию товара, этикетки и цвета
Объединить два референса в одну сценуНачните с примера для двух изображений в ProУточните, что взять из каждого изображения и где разместить элементы

Меняйте только одну ключевую переменную за раз. При сравнении моделей фиксируйте запрос и параметры; при сравнении композиций — модель. Иначе сложно понять, что изменило изображение: модель, запрос или размер.

Как три модели Nano отображают один запрос для товарного фото?

Задача: кораллово-красная керамическая кружка на столе из светло-серого камня, бежевая льняная ткань и белая надпись BETTER DAY на кружке; свет падает сверху слева. Полные изображения имеют размер 2048 × 2048; фрагменты вырезаны из оригиналов в одинаковом масштабе.

Nano Banana 2
Полное изображение 2K
Nano Banana 2.1
Полное изображение 2K
Nano Banana Pro
Полное изображение 2K
Nano Banana 2Nano Banana 2.1Nano Banana Pro

Край кружки и глазурь

Nano Banana 2
Nano Banana 2.1
Nano Banana Pro
Nano Banana 2: фрагмент края кружки и глазури
Nano Banana 2.1: фрагмент края кружки и глазури
Nano Banana Pro: фрагмент края кружки и глазури
Глазурь у края неоднородна, на корпусе видны тёмные точки.
Цвет у края меняется плавно, на корпусе видны мелкие точки.
Поверхность корпуса ровнее, блик создаёт непрерывное отражение.

Типографика и макет

Nano Banana 2
Nano Banana 2.1
Nano Banana Pro
Nano Banana 2: фрагмент типографики и макета
Nano Banana 2.1: фрагмент типографики и макета
Nano Banana Pro: фрагмент типографики и макета
Шрифт без засечек, две строки, крупный текст.
Шрифт без засечек, одна строка с широким межбуквенным интервалом.
Шрифт без засечек, одна строка с более узкими буквами.

Лён и столешница

Nano Banana 2
Nano Banana 2.1
Nano Banana Pro
Nano Banana 2: фрагмент льна и столешницы
Nano Banana 2.1: фрагмент льна и столешницы
Nano Banana Pro: фрагмент льна и столешницы
Плетение ткани выражено сильнее; край ткани и фактура камня хорошо видны.
Складка ткани приподнята, боковой свет создаёт заметную тень.
Ткань лежит ровно и свисает; в кадре видно больше края стола.
Что сравниваемNano Banana 2Nano Banana 2.1Nano Banana Pro
МатериалЗаметны различия глазури у края, тёмные точки и глиняное основаниеВидны мягкий переход у края, мелкие точки и отраженияБолее ровная поверхность с непрерывным бликом
ТекстДве строки, крупный шрифтОдна строка, широкий межбуквенный интервалОдна строка, более узкие и мелкие буквы
КомпозицияХорошо выделены кружка, ткань и фактура каменного столаКружка занимает большую часть кадра, объект собраннееКружка меньше, край стола и свисающая ткань оставляют больше свободного места

В этом примере начните с Nano 2, если нужна фактура ручной керамики; сравните с 2.1, если хотите сильнее выделить товар; для места под заголовок посмотрите на свободное пространство в изображении Pro. Это особенности данного примера; требования к композиции всё равно указывайте в запросе.

Сравнение с GPT Image 2.5

GPT Image 2.5 Flare
Полное изображение 2K
GPT Image 2.5 Sunburst
Полное изображение 2K
GPT Image 2.5 FlareGPT Image 2.5 Sunburst

В примерах Flare и Sunburst поверхность кружки ровнее, а типографика и переносы строк различаются. Все пять моделей отобразили короткую английскую надпись «BETTER DAY», но ни одна не сохранила единый шрифт и макет. Брендовый шрифт, точный логотип и длинный текст лучше добавлять отдельно после генерации.

МодельВремя для квадратного изображения 1KВремя для квадратного изображения 2K
Nano Banana 216.2 секунды27.1 секунды
Nano Banana 2.168.6 секунды73.5 секунды
Nano Banana Pro23.3 секунды31.0 секунды
GPT Image 2.5 Flare41.6 секунды62.3 секунды
GPT Image 2.5 Sunburst37.4 секунды38.5 секунды

Время получено по одному запросу на целевой уровень с одинаковым заданием для товара; оно включает ожидание обработки и сети. Квадратные изображения Nano 1K имеют размер 1024 × 1024, а примеры двух моделей GPT на этом уровне — 1254 × 1254. Все изображения 2K имеют размер 2048 × 2048. В этой задаче Nano 2 отвечала быстрее и подходит для итеративных черновиков; эти значения не являются долгосрочными средними.

Превратите задачу в описание изображения и параметры результата

В повторно используемом запросе для товарной фотосъёмки укажите как минимум объект, материал, освещение, фон и то, что нужно сохранить. Например:

Create a realistic studio product photograph of one coral-red ceramic mug on a pale grey stone table, a folded beige linen cloth beside it. Print the exact white text BETTER DAY on the mug. Soft upper-left light, natural shadows, detailed ceramic glaze and linen fibres. Show the entire mug, simple background, no watermark, no additional objects or text.

Замените объект, цвет и материал на характеристики своего товара. Если нужен заголовок, укажите, с какой стороны оставить свободное место; если нужна гладкая глазурь, опишите поверхность. Фотография реального товара в качестве референса лучше ограничивает его внешний вид, чем один текст. Перед публикацией всё равно проверьте, не изменилась ли конструкция товара.

Управляйте разрешением через параметры. Во всех трёх сравнительных изображениях, где «2K» или «4K» были указаны только в тексте запроса, результат всё равно имел размер 1024 × 1024. Начните с 1K, а затем задайте image_size: "2K" или "4K". Повышение уровня создаёт новое изображение; чтобы продолжить существующую композицию, используйте понравившееся изображение как референс и проверяйте изменения деталей.

Создайте первое изображение через OpenAI Images

Начните новое подключение с HTTP-примера ниже. Если вы уже используете OpenAI Python-клиент, перейдите к примеру SDK. Для генерации по тексту и редактирования по референсу используются одинаковые авторизация и логика сохранения изображения.

ПараметрЗначение
OpenAI SDK Base URLhttps://bettertoken.ai/v1
Генерация по текстуPOST https://bettertoken.ai/v1/images/generations, JSON
Редактирование по референсуPOST https://bettertoken.ai/v1/images/edits, multipart-форма
АвторизацияAuthorization: Bearer YOUR_API_KEY
Model IDnano-banana-2, nano-banana-2.1, nano-banana-pro
Изображение в ответеdata[].b64_json содержит изображение, data[].mime_type — фактический формат

Получить API Key · Модели и цены

curl: одно горизонтальное товарное изображение 2K

Задайте BETTERTOKEN_API_KEY в терминале macOS или Linux и выполните запрос. Храните Key в переменной среды на сервере, не встраивайте его в общедоступную веб-страницу. Запрос возвращает результат синхронно; --max-time 650 даёт время на генерацию.

Окно терминала
export BETTERTOKEN_API_KEY="YOUR_API_KEY"
curl --fail-with-body --max-time 650 \
"https://bettertoken.ai/v1/images/generations" \
-H "Authorization: Bearer $BETTERTOKEN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "nano-banana-2",
"prompt": "A product photo of a green ceramic mug on a studio table",
"image_size": "2K",
"aspect_ratio": "16:9",
"n": 1,
"response_format": "b64_json"
}' -o response.json

Изображение ниже создано с этими параметрами: 2752 × 1536, JPEG, около 35.7 секунды на запрос. Горизонтальная композиция подходит для обложки или иллюстрации к материалу. При сохранении выбирайте расширение по фактическому формату в ответе.

Nano Banana 2 · горизонтальное изображение 2K

16:9, фактический размер 2752 × 1536, JPEG

Nano Banana 2 · горизонтальное изображение 2K: 16:9, фактический размер 2752 × 1536, JPEG

Сохраняйте изображение с расширением по фактическому формату

Успешный ответ имеет следующую структуру; данные Base64 заменены заполнителем:

{
"data": [{
"b64_json": "BASE64_IMAGE_DATA",
"mime_type": "image/jpeg"
}]
}

Сохраните следующий код как save_images.py и выполните python save_images.py, чтобы прочитать response.json из предыдущего примера. Для генерации и редактирования используется одна и та же логика сохранения.

import base64
import json
from pathlib import Path
result = json.loads(Path("response.json").read_text(encoding="utf-8"))
images = result.get("data") or []
if not images:
raise RuntimeError("No image returned; inspect response.json.")
suffixes = {"image/png": ".png", "image/jpeg": ".jpg"}
for index, item in enumerate(images, 1):
mime = item.get("mime_type")
if mime not in suffixes:
raise ValueError(f"Unexpected image MIME type: {mime}")
path = Path(f"generated-{index}{suffixes[mime]}")
path.write_bytes(base64.b64decode(item["b64_json"], validate=True))
print(path)

Не сохраняйте все файлы с расширением .png. Параметр output_format для Nano можно опустить; даже при значении "png" фактический ответ может быть JPEG. В тестах такое происходило с Pro. Если нужен WebP, определённый уровень сжатия или единый формат файлов, сначала получите изображение, затем преобразуйте его в своём приложении.

Размеры, пропорции и число изображений: что задавать?

Предпочтительно использовать image_size + aspect_ratio

ПолеДопустимые значения и назначение
promptОбязательно, не может быть пустым; опишите изображение или правки
image_size1K, 2K или 4K; по умолчанию 1K
aspect_ratioЗадаёт пропорции; если поле не передано, их выбирает модель
nПринимает целое число 1–4, но изображений может вернуться меньше. Во всех примерах руководства используется 1
response_formatИспользуйте b64_json; url не поддерживается
output_formatЛучше не передавать; принимается только png, фактический формат всё равно определяется по mime_type

1K подходит для подбора композиции, 2K — для проверки материала и деталей, а 4K оставляет пиксели для последующего кадрирования и крупных макетов. K обозначает уровень качества, а ширина или высота прямоугольного изображения не обязана равняться 1024, 2048 или 4096. Например, изображение 2K с пропорциями 16:9 в этом руководстве имеет размер 2752 × 1536, а образец Nano 2.1 уровня 4K с пропорциями 1:1 — 4096 × 4096.

МодельДоступные пропорции
Поддерживаются всеми тремя1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9
Дополнительно в Nano 2 и 2.11:4, 4:1, 1:8, 8:1

Для квадратной карточки товара выберите 1:1, для вертикального контента — 3:4 или 9:16, для горизонтальной обложки — 16:9. В таблице указаны допустимые пропорции API; примеры не охватывают все сочетания.

Подключение возможно и тогда, когда клиент принимает только size

size — краткая запись пропорций и уровня разрешения. Принимаются auto, строка с пропорциями (например, 16:9) и фиксированные размеры из таблицы. Строка пропорций задаёт только формат кадра; если image_size не передан, используется уровень 1K.

sizeСоответствующие пропорцииУровень
1024x10241:11K
1536x1024 / 1024x15363:2 / 2:31K
1536x1152 / 1152x15364:3 / 3:41K
2048x20481:12K
2048x115216:92K
3840x2160 / 2160x384016:9 / 9:164K

size не гарантирует точного числа пикселей. В одном тесте Pro приняла 1536x1024 и вернула изображение 1264 × 848. Если материал должен поместиться на холст фиксированного размера, выберите близкие пропорции, а затем масштабируйте, добавьте поля или обрежьте его в приложении с учётом фактического размера; если товар должен быть виден целиком, предпочтительнее добавить поля.

Не отправляйте одновременно конфликтующие настройки, например size: "1024x1024" вместе с image_size: "2K" или aspect_ratio: "16:9". Проще выбрать один способ: использовать сокращённый size либо только image_size + aspect_ratio.

При переходе с GPT Image удалите эти параметры

Текущая конечная точка Nano отклоняет quality, background, moderation, output_compression и неуказанные дополнительные поля с ошибкой 400 unsupported_parameter. Нельзя просто заменить имя модели в полном запросе GPT Image: удалите эти поля и задайте размер и пропорции Nano.

Поле mask также не поддерживается конечной точкой редактирования Nano Images. Если нужен прозрачный фон, точное редактирование по маске или конкретный формат сжатия, предусмотрите отдельную постобработку или другой рабочий процесс.

Меняйте цвет, объединяйте и продолжайте редактирование по референсам

Редактирование одного изображения: сохраните объект и измените нужный атрибут

Загрузите имеющийся PNG- или JPEG-файл в поле image, а в запросе укажите, что нужно изменить и сохранить. В примере синяя кружка перекрашивается в красный цвет; замените reference.png на путь к локальному PNG-файлу. Для JPEG укажите соответствующий путь и type=image/jpeg.

Окно терминала
curl --fail-with-body --max-time 650 \
"https://bettertoken.ai/v1/images/edits" \
-H "Authorization: Bearer $BETTERTOKEN_API_KEY" \
-F 'model=nano-banana-2' \
-F 'prompt=Change the mug to red. Preserve its shape and the background.' \
-F 'image=@reference.png;type=image/png' \
-F 'image_size=1K' \
-F 'aspect_ratio=1:1' \
-F 'n=1' \
-F 'response_format=b64_json' \
-o response.json

Пусть curl автоматически задаст Content-Type и boundary для multipart; не добавляйте Content-Type: application/json. Сохраните ответ с помощью скрипта save_images.py выше.

Референс
Синяя кружка, белый стол
Nano Banana 2
Красный цвет, 1024 × 1024, JPEG
Nano Banana 2.1
Красный цвет, 1024 × 1024, PNG
Референс: синяя кружка на белом столеNano Banana 2: перекрашено в красный, 1024 × 1024, JPEGNano Banana 2.1: перекрашено в красный, 1024 × 1024, PNG

Nano 2 и Nano 2.1 перекрасили синюю кружку в красный, используя PNG- и JPEG-референсы одной сцены. Оба результата имеют размер 1024 × 1024; запросы заняли около 15.5 и 57.8 секунды. Основная форма кружки, стол и фон сохранились. Перед использованием изображения для демонстрации товара проверьте глазурь, края и этикетку.

Объедините два референса в одно изображение

Загрузите файлы через повторяющиеся поля image[] и опишите назначение каждого изображения в порядке загрузки. В примере синяя кружка с первого изображения располагается слева, красная со второго — справа. n=1 задаёт количество выходных изображений, а не число загруженных референсов.

Окно терминала
curl --fail-with-body --max-time 650 \
"https://bettertoken.ai/v1/images/edits" \
-H "Authorization: Bearer $BETTERTOKEN_API_KEY" \
-F 'model=nano-banana-pro' \
-F 'prompt=Create one photograph with the blue mug from the first image on the left and the red mug from the second image on the right, on the same white table. Preserve both mug shapes. No extra mugs.' \
-F 'image[]=@blue-mug.png;type=image/png' \
-F 'image[]=@red-mug.jpg;type=image/jpeg' \
-F 'image_size=1K' \
-F 'aspect_ratio=3:4' \
-F 'n=1' \
-F 'response_format=b64_json' \
-o response.json
Первый референс
Синяя кружка слева
Второй референс
Красная кружка справа
Результат объединения в Nano Banana Pro
Синяя слева, красная справа, 896 × 1200, JPEG
Первый референс: синяя кружка слеваВторой референс: красная кружка справаРезультат Nano Banana Pro: синяя кружка слева, красная справа, 896 × 1200, JPEG

В результате Pro обе формы кружек остались различимыми и расположились на заданных сторонах. Размер изображения — 896 × 1200, время — около 36.6 секунды. Для составного изображения укажите, какие элементы использовать, где их разместить и чего не добавлять: такой результат проще проверить, чем просьбу просто «объединить два изображения».

В одном запросе используйте либо image, либо image[], но не смешивайте их. Загружайте настоящие файлы PNG/JPEG; строка локального пути и URL изображения не являются содержимым файла.

Продолжайте редактирование, используя предыдущий результат как новый референс

API Images не хранит историю диалога. Сначала сохраните результат перекраски, затем передайте его в поле image следующего запроса /images/edits и укажите новую задачу, например: «Измените только существующую ручку кружки на золотую; сохраните красный корпус и белый стол». Каждый шаг — новый запрос на генерацию; проверяйте результат перед продолжением.

Если нужно без изменений сохранить логотипы, мелкий текст, штрихкоды или фактуру товара, оставьте исходный материал и восстановите его на финальном слое композиции. Следующее сравнение перекраски показывает причину: все три модели Nano поменяли цвет кругов и часть мелкого текста. В двух примерах GPT мелкий текст читается лучше, но эти модели также перерисовали часть фона или краёв.

Исходный референс
Два красных круга, мелкий чёрный текст и бирюзовая метка.
Nano Banana 2
Более тёмный синий; по краям кругов остались следы красного.
Nano Banana 2.1
Более яркий синий; форма мелкого текста изменилась.
Исходный референсNano Banana 2Nano Banana 2.1
Nano Banana Pro
Сине-зелёный; края кругов стали чёрными.
GPT Image 2.5 Flare
Яркий синий, мелкий текст читается, фон слегка текстурирован.
GPT Image 2.5 Sunburst
Яркий синий, мелкий текст читается; фактический размер 1254 × 1254.
Nano Banana ProGPT Image 2.5 FlareGPT Image 2.5 Sunburst

Один и тот же референс с двумя красными кругами и запрос на их перекраску в синий дали разные оттенки и разную сохранность мелкого текста. После смены цвета проверьте и нетронутые области; если отдельные части должны остаться точными, надёжнее скомпоновать результат с оригинальным материалом.

Используйте Images в уже подключённом OpenAI Python-клиенте

Установите openai в виртуальную среду проекта. В примере используется images.generate; параметры Nano передаются через extra_body и попадают в корень JSON HTTP-запроса. Автоматические повторы SDK отключены; все полученные изображения сохраняются с расширением по MIME-типу.

Окно терминала
python -m pip install openai
import base64
import os
from pathlib import Path
from openai import OpenAI
client = OpenAI(
api_key=os.environ["BETTERTOKEN_API_KEY"],
base_url="https://bettertoken.ai/v1",
timeout=650,
max_retries=0,
)
def save_response(response, prefix):
images = response.data or []
if not images:
raise RuntimeError("No image returned.")
suffixes = {"image/png": ".png", "image/jpeg": ".jpg"}
for index, item in enumerate(images, 1):
mime = getattr(item, "mime_type", None)
if mime not in suffixes:
raise ValueError(f"Unexpected image MIME type: {mime}")
path = Path(f"{prefix}-{index}{suffixes[mime]}")
path.write_bytes(base64.b64decode(item.b64_json, validate=True))
print(path)
billing = getattr(response, "bettertoken_image_billing", None)
if billing is not None:
print("Billing:", billing)
response = client.images.generate(
model="nano-banana-2",
prompt="A product photo of a green ceramic mug on a studio table",
n=1,
response_format="b64_json",
extra_body={"image_size": "2K", "aspect_ratio": "16:9"},
)
save_response(response, "generated")

Для редактирования одного изображения используйте те же client и save_response, открыв файл в двоичном режиме:

with open("reference.png", "rb") as source:
response = client.images.edit(
model="nano-banana-2",
image=source,
prompt="Change the mug to red. Preserve its shape and the background.",
n=1,
response_format="b64_json",
extra_body={"image_size": "1K", "aspect_ratio": "1:1"},
)
save_response(response, "edited")

mime_type и bettertoken_image_billing — расширения BetterToken в ответе; не рассчитывайте на наличие revised_prompt. О том, как обращаться с дополнительными полями запроса и ответа, см. документацию OpenAI Python SDK.

У вас уже есть проект Gemini или Chat — нужно ли его переносить?

Можно оставить протокол, к которому привык ваш проект. BetterToken предоставляет отдельные точки входа для самостоятельных задач с изображениями, нативных сообщений Gemini и клиентов Chat. У них общий Key, но параметры и структура ответа соответствуют каждому протоколу.

Точка входаГде задаются параметры размераГде находится изображениеКогда использовать
OpenAI ImagesВ корне: image_size, aspect_ratiodata[].b64_json и mime_typeОтдельная генерация по тексту или редактирование с файлами-референсами; основной сценарий этого руководства
Нативный Gemini generateContentgenerationConfig.imageConfig.imageSize, aspectRatiocandidates[].content.parts[].inlineDataВ проекте уже используется Google SDK или структура сообщений Gemini
OpenAI Chat CompletionsВ корне: google.image_config.image_size, aspect_ratioData URL изображения в choices[0].message.contentУже есть интеграция генерации по тексту через Chat

Адрес нативного Gemini: https://bettertoken.ai/v1beta/models/{model}:generateContent; адрес Chat: https://bettertoken.ai/v1/chat/completions. В Google SDK задайте корневой домен как Base URL, а версию API v1beta укажите отдельно. Для OpenAI SDK используйте Base URL с /v1.

При многошаговом редактировании через нативный Gemini сохраняйте полный ответ модели и порядок сообщений, включая возвращённые поля подписи. Для Nano 2.1 есть ограничения на последовательное редактирование и совместимость редактирования с Google SDK. Если нужны пошаговые контролируемые правки, используйте описанный здесь однократный сценарий Images: каждый раз загружайте утверждённое изображение и проверяйте новый результат.

Генерация изображений через Gemini · Редактирование изображений Gemini по референсу

После генерации проверьте фактические размеры и стоимость

Сначала проверьте цену для валюты и уровня изображения в вашем аккаунте, затем сверьте результат по ответу. n — запрошенное количество; фактическое число результатов определяется количеством элементов в возвращённом массиве. API принимает n=1–4, но может вернуть меньше изображений. В руководстве показан сценарий для одного изображения; если требуется фиксированное количество, отправляйте запросы по одному и записывайте каждый результат.

После успешного вызова /v1/images/generations или /v1/images/edits данные изображения и bettertoken_image_billing приходят вместе в одном JSON-ответе. Это расширение BetterToken содержит фактические размеры и сведения о списании. Его можно прочитать с собственным API Key; права администратора и отдельный запрос стоимости не нужны.

Сохраняйте изображения из data[], а фактические пиксели, тарифный уровень, сумму и валюту считывайте из bettertoken_image_billing, чтобы сопоставить каждый материал с его стоимостью. Ориентируйтесь на фактическое списание в своём аккаунте.

ПолеИспользование в приложении
currency, settled_amountПоказать валюту и общую сумму списания за запрос
outputs[].width, outputs[].heightПроверить фактические пиксели и выбрать масштабирование, поля или кадрирование
outputs[].billing_resolutionПроверить фактический тарифный уровень
outputs[].amount, outputs[].currencyЗаписать стоимость и валюту отдельного изображения

Суммы возвращаются десятичными строками. Для подсчётов используйте десятичный денежный тип и суммируйте отдельно по каждой валюте. Если расширение оплаты отсутствует, отметьте сумму как ожидающую проверки, а не как бесплатную. Актуальные цены смотрите в каталоге моделей BetterToken.

Images — синхронный API. После успешного ответа сразу сохраните изображение в собственный файл или объектное хранилище, прежде чем показывать его пользователю. API не возвращает task_id для последующей проверки статуса. Если приложение показывает ожидание, поддерживайте запрос на своём сервере и сохраните там результат.

Устранение ошибок: что изменить в первую очередь?

Сначала проверьте в ответе error.message, error.code и error.param. Повторная отправка того же запроса не исправит ошибку параметра.

Ошибка или симптомЧто делать
unsupported_parameterПроверьте error.param; удалите неподдерживаемые поля, например quality, background или mask
conflicting_image_parametersПроверьте конфликт size с размером или пропорциями; при редактировании не смешивайте image и image[]
unsupported_image_sizeИспользуйте допустимый size или image_size + aspect_ratio; произвольные размеры, например 2080x2080, не принимаются
invalid_image_size / invalid_aspect_ratioИспользуйте прописные 1K/2K/4K и проверьте диапазон пропорций выбранной модели
unsupported_output_format / unsupported_response_formatНе передавайте output_format, задайте response_format равным b64_json
missing_reference_imageЗагрузите файл изображения в точку входа редактирования; если есть только текст, используйте генерацию
invalid_image_count / missing_promptНачните с n=1 и задайте непустой запрос
401Проверьте BetterToken API Key, переменную среды и заголовок Bearer
no_eligible_image_serviceНет доступного сервиса для сочетания модели, параметров или редактирования; сохраните данные запроса и обратитесь в поддержку
Файл не открывается после сохраненияПроверьте декодирование Base64 и выберите .jpg или .png по mime_type
Тайм-аут или разрыв соединенияСначала проверьте журнал вызовов и оплату, сохраните ID запроса, затем решите, отправлять ли его повторно

Тайм-аут клиента не означает, что генерация на стороне сервиса отменена. Настройте согласованное время ожидания для SDK, обратного прокси и сервера приложения, чтобы браузер не завершил ожидание раньше. Если неизвестно, чем закончился предыдущий запрос, не включайте автоматический повтор: он может запустить и оплатить дубликат.

Справка по API