Nano Banana 2 против GPT Image: что выбрать для генерации изображений

У обеих линеек один эндпоинт и разная механика. Разбираем, чем reference-to-image у Nano Banana отличается от edit у GPT Image и когда какая модель окупается.

4 мин · · Обновлено · изображения

Обновление, октябрь 2026. Генерация изображений через Zukko временно недоступна (Nano Banana 2 и GPT Image сейчас выключены). Актуальный список моделей — страница «Модели» или GET https://api.zukko.pro/v1/models. Ближайшей замены среди текущих моделей нет: в каталоге сейчас только текстовые модели (Claude, GPT, GLM).

Провайдер эндпоинта один и тот же — /v1/images/generations, разница только в имени модели. Это осложняет сравнение: чтобы понять, какая линейка вам подходит, нужно смотреть не на общий адрес, а на то, что каждая модель реально умеет.

Что есть у каждой линейки

Nano Banana 2:

  • nano-banana-2-text-to-image (и -developer, -lite-* варианты) — текст в картинку
  • nano-banana-2-edit-developer — редактирование существующего изображения
  • nano-banana-2-reference-to-image-developer — генерация по образцу: отдельная картинка задаёт стиль или композицию, промпт — что на ней должно быть

GPT Image:

  • openai-gpt-image-2-text-to-image, openai-gpt-image-2-edit — актуальное поколение
  • openai-gpt-image-1.5-text-to-image, openai-gpt-image-1.5-edit — предыдущее, тоже было в каталоге

Разница, которая реально влияет на выбор

У Nano Banana есть третий режим, которого нет у GPT Image, — reference-to-image. Если нужно «нарисуй в этом стиле» или «сохрани композицию, поменяй объект», в линейке GPT Image для этого нет отдельной модели: там только text-to-image и edit. Edit хорошо работает, когда правишь конкретную картинку по инструкции («замени фон на белый», «убери человека слева»), а не когда переносишь стиль с одного изображения на другое.

Если задача — перенос стиля или композиции, тестировать стоит с nano-banana-2-reference-to-image-developer в первую очередь.

Формат запроса одинаковый

Оба семейства принимают запрос одинаковой структуры:

bash
curl https://api.zukko.pro/v1/images/generations \
  -H "Authorization: Bearer fetch_ваш_ключ" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nano-banana-2-text-to-image",
    "prompt": "Постер к техническому докладу, минимализм, синий и белый"
  }'

Для GPT Image меняется только model:

bash
curl https://api.zukko.pro/v1/images/generations \
  -H "Authorization: Bearer fetch_ваш_ключ" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai-gpt-image-2-text-to-image",
    "prompt": "Постер к техническому докладу, минимализм, синий и белый"
  }'

Редактирование в обеих линейках требует поля images с исходной картинкой:

bash
curl https://api.zukko.pro/v1/images/generations \
  -H "Authorization: Bearer fetch_ваш_ключ" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai-gpt-image-2-edit",
    "prompt": "Замени фон на однотонный светло-серый",
    "images": ["https://example.com/source.png"]
  }'

Цена и биллинг

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

bash
curl https://api.zukko.pro/v1/models/info

Этот запрос не требует ключа и отдаёт актуальные лимиты и цены. Дополнительно каждый ответ генерации содержит заголовок X-Zukko-Cost-Micros — точную стоимость именно этого запроса в микродолларах, так что можно логировать реальный расход по каждой модели в своём пайплайне, а не полагаться на приблизительные цифры.

Что делать, если модель не найдена

Имена в обеих линейках длинные, и легко опечатать один суффикс — вместо -developer написать -dev, например. В ответ придёт:

bash
{"error": {"message": "The model 'openai-gpt-image-2-edit-dev' does not exist", "code": "model_not_found"}}

Актуальный список моделей без опечаток — в /v1/models. Если модель есть в каталоге, но выключена, ответ будет другим: 503 с кодом model_disabled (не 404 и не model_retired) — замену в этом случае смотрите в актуальном списке GET https://api.zukko.pro/v1/models.

Баланс при генерации партиями

Если генерируете картинки пачками — например, десять вариантов подряд для одного макета — удобно следить за остатком без отдельного похода к /v1/balance. В ответе каждого запроса на генерацию приходит заголовок X-Fetch-Balance-Cents — остаток баланса после списания за это изображение; несмотря на название, он в микродолларах (1 000 000 = $1), а точный баланс в центах отдаёт GET /v1/balance (поле balance_cents). Скрипту, который гоняет генерацию в цикле, достаточно проверять этот заголовок после каждого вызова и останавливаться заранее, а не ловить 402 на середине партии.

Ретраи без двойного списания

Сетевые обрывы при генерации изображений случаются чаще, чем при коротких текстовых запросах — сама генерация занимает больше времени, и клиентский таймаут может сработать раньше, чем придёт ответ. Учтите, что Idempotency-Key на шлюзе работает только для POST /v1/chat/completions, /v1/messages и /v1/responses — на /v1/images/generations он не распространяется, поэтому автоматические ретраи генерации стоит ограничивать на стороне клиента и перед повтором сверяться с историей расходов, чтобы случайно не оплатить одну и ту же картинку дважды.

Обе линейки можно держать в проекте одновременно

Раз обе модели идут через один и тот же эндпоинт и различаются только полем model, нет причины жёстко привязываться к одной линейке в коде. Практичный вариант — вынести имя модели в конфиг или параметр запроса к своему бэкенду и переключаться между Nano Banana и GPT Image без изменений в остальном пайплайне, если понадобится сравнить качество на новой партии задач или отреагировать на 503 model_disabled, если конкретную версию выключат.

Как выбирать на практике

Гонять оба семейства на одном и том же промпте и сравнивать результат глазами — самый быстрый способ понять, что подходит именно вашей задаче. Тестируйте на дешёвых lite/developer-вариантах, финальный прогон делайте на полной версии, а решение «какая линейка вообще нужна» принимайте по наличию reference-режима: он есть только у Nano Banana.

zukko

Платите в 25×
меньше

за Claude Code & ChatGPT

Один ключ fetch_* и base URL api.zukko.pro — в Cursor, Claude Code, Codex и любом SDK.