Nano Banana
Генерация и редактирование изображений через единый OpenAI Images API.
Генерация и редактирование изображений через единый OpenAI Images API.
Nano Banana использует единый OpenAI Images API: стандартные пути, Bearer-авторизацию и формат ответа data. Доступ зависит от подключения и прав API-ключа.
| Модель | ID |
|---|---|
| Nano Banana Pro | nano-banana-pro |
| Nano Banana 2 | nano-banana-2 |
Задайте BASE_URL как корневой HTTPS-адрес API без завершающего / и без /v1, а API_KEY передайте из хранилища секретов. Путь: POST /v1/images/generations.
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 | Непустое текстовое описание |
n | 1; по умолчанию 1 |
size | auto, 1024x1024, 2048x2048, 4096x4096; по умолчанию auto |
response_format | url либо b64_json; по умолчанию url |
auto использует стандартное разрешение модели и автоматический выбор соотношения сторон. Произвольные размеры не поддерживаются.
Используйте официальный SDK с вашим адресом и ключом. Задайте формат результата явно:
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[]:
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:
{
"model": "nano-banana-2",
"prompt": "Сохрани предмет, замени фон на зелёный",
"images": [{ "image_url": "REFERENCE_URL" }],
"n": 1,
"size": "1024x1024",
"response_format": "url"
}
Ссылка должна скачиваться без дополнительных заголовков авторизации. Референсы Nano Banana Pro в этом подключении пока не поддерживаются.
Запрос ожидает завершения генерации. При response_format=url изображение возвращается в стандартном массиве data:
{ "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 позволяет отличить ошибку параметров, ключа, доступа, лимита и временную недоступность.
После разрыва соединения или таймаута исход генерации может быть неизвестен. Отключите автоматические повторы платных запросов и проверьте журнал задач в кабинете перед новым запросом: повторная генерация может создать отдельную платную задачу.