Nano Banana

Генерация и редактирование изображений через единый OpenAI Images API.

Nano Banana использует единый OpenAI Images API: стандартные пути, Bearer-авторизацию и формат ответа data. Доступ зависит от подключения и прав API-ключа.

Модели

МодельID
Nano Banana Pronano-banana-pro
Nano Banana 2nano-banana-2

Генерация

Задайте BASE_URL как корневой HTTPS-адрес API без завершающего / и без /v1, а API_KEY передайте из хранилища секретов. Путь: POST /v1/images/generations.

bash
curl --fail-with-body "${BASE_URL}/v1/images/generations" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"nano-banana-2","prompt":"Белый чайник на зелёном фоне","n":1,"size":"1024x1024","response_format":"url"}'
ПолеЗначение
modelОдин из ID выше
promptНепустое текстовое описание
n1; по умолчанию 1
sizeauto, 1024x1024, 2048x2048, 4096x4096; по умолчанию auto
response_formaturl либо b64_json; по умолчанию url

auto использует стандартное разрешение модели и автоматический выбор соотношения сторон. Произвольные размеры не поддерживаются.

OpenAI SDK

Используйте официальный SDK с вашим адресом и ключом. Задайте формат результата явно:

python
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["API_KEY"],
    base_url=os.environ["BASE_URL"].rstrip("/") + "/v1",
    max_retries=0,
    timeout=600.0,
)
result = client.images.generate(
    model="nano-banana-2",
    prompt="Белый чайник на зелёном фоне",
    n=1,
    size="1024x1024",
    response_format="url",
)
print(result.data[0].url)

Референсы И Редактирование

Путь: POST /v1/images/edits. Nano Banana 2 принимает от 1 до 14 изображений JPEG, PNG или WebP, каждое до 10 MiB. Файл передаётся стандартным multipart-полем image; для нескольких файлов используйте image[]:

bash
curl --fail-with-body "${BASE_URL}/v1/images/edits" \
  -H "Authorization: Bearer $API_KEY" \
  -F "model=nano-banana-2" \
  -F "prompt=Сохрани предмет, замени фон на зелёный" \
  -F "image=@reference.png" \
  -F "n=1" \
  -F "size=1024x1024" \
  -F "response_format=url"

Для HTTPS-ссылок отправьте JSON в тот же /v1/images/edits:

json
{
  "model": "nano-banana-2",
  "prompt": "Сохрани предмет, замени фон на зелёный",
  "images": [{ "image_url": "REFERENCE_URL" }],
  "n": 1,
  "size": "1024x1024",
  "response_format": "url"
}

Ссылка должна скачиваться без дополнительных заголовков авторизации. Референсы Nano Banana Pro в этом подключении пока не поддерживаются.

Результат

Запрос ожидает завершения генерации. При response_format=url изображение возвращается в стандартном массиве data:

json
{ "data": [{ "url": "RESULT_URL" }] }

При b64_json читайте data[0].b64_json и декодируйте Base64. Если поле отсутствует, проверьте data[0].url: при недоступности загрузки ответ может содержать ссылку. Сохраните результат до истечения срока действия ссылки. Настройте таймаут клиента с учётом ожидания генерации.

Ограничения И Ошибки

Для этих моделей поддерживается один результат за запрос. Маска (mask), Files API file_id, изменение quality/output_format и streaming в этом подключении не поддерживаются; неподдерживаемые параметры отклоняются до генерации.

Ошибки используют OpenAI-совместимый объект error с безопасным описанием. Код HTTP позволяет отличить ошибку параметров, ключа, доступа, лимита и временную недоступность.

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