> ## Documentation Index
> Fetch the complete documentation index at: https://docs.laozhang.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Nano Banana API: модели, цены и способы вызова

> Сравнение пяти моделей Nano Banana в LaoZhang API по цене, размеру вывода и соотношениям сторон, а также вызов через OpenAI-совместимые и нативные запросы Gemini.

LaoZhang API предоставляет пять моделей Nano Banana — актуальных моделей изображений Gemini от Google — по фиксированной цене за вызов, аккаунт Google не нужен. Здесь можно выбрать модель и формат запроса и взять общий код, на который опираются руководства по отдельным моделям.

## Сравнение моделей

| | Standard | Nano Banana 2 Lite | Nano Banana 2.1 | Nano Banana 2 | Nano Banana Pro |
| - | - | - | - | - | - |
| ID модели | `gemini-2.5-flash-image` | `gemini-3.1-flash-lite-image` | `gemini-nano-banana-2.1` | `gemini-3.1-flash-image` | `gemini-3-pro-image` |
| Цена за вызов | \$0.02 | \$0.025 | \$0.045 | \$0.055 | \$0.09 |
| Размер вывода | 1K | 1K | 1K, 2K, 4K | 512px, 1K, 2K, 4K | 1K, 2K, 4K |
| Соотношения сторон | 10 (только нативный Gemini) | 10 | 14 | 14 | 10 |
| Референсные изображения | Лучше всего до 3 | До 14 объектов | До 14 | До 14 | До 14 |
| Рассуждение (thinking) | — | Minimal или high | Minimal, medium (по умолчанию) или high | Minimal или high | Всегда включено |
| Привязка к поиску Google | — | Нет | Веб-поиск и поиск изображений | Веб-поиск и поиск изображений | Веб-поиск |
| Для чего подходит | Только существующие интеграции; срок отключения у Google прошёл, пока ещё доступна | Большие объёмы изображений 1K | Большинство новых задач, от 1K до 4K | Вывод 512px, существующие интеграции | Сложные макеты и ассеты, критичные для бренда |
| Руководство | Генерация — на этой странице, [редактирование](https://docs.laozhang.ai/ru/api-capabilities/nano-banana-image-edit.md) | [Nano Banana 2 Lite](https://docs.laozhang.ai/ru/api-capabilities/nano-banana-2-lite-api.md) | [Nano Banana 2.1](https://docs.laozhang.ai/ru/api-capabilities/nano-banana-2-1-image.md) | [Nano Banana 2](https://docs.laozhang.ai/ru/api-capabilities/nano-banana2-image.md) | [Генерация](https://docs.laozhang.ai/ru/api-capabilities/nano-banana-pro-image.md), [редактирование](https://docs.laozhang.ai/ru/api-capabilities/nano-banana-pro-image-edit.md) |

* Исходную модель `gemini-2.5-flash-image` на этом сайте называют **Standard**, чтобы не путать её с названием семейства. Руководство по генерации находится ниже на этой странице, а руководство по редактированию — [Редактирование в Nano Banana (Standard)](https://docs.laozhang.ai/ru/api-capabilities/nano-banana-image-edit.md). У каждой из четырёх новых моделей есть собственное руководство.
* Каждая модель принимает два формата запроса на `https://api.laozhang.ai`: OpenAI-совместимый chat completions, который возвращает изображение в Base64 внутри текста ответа, и нативный Gemini `generateContent`, который дополнительно позволяет задать соотношение сторон и размер вывода. См. раздел «Выбор протокола» ниже.
* Цены — публичные цены LaoZhang API на 7 октября 2026 года; актуальный список — в разделе [Модели и цены](https://docs.laozhang.ai/ru/models.md).
* Одиночные запросы 2K, 16:9 с одним промптом 14 октября 2026 года заняли 25 с на Nano Banana 2.1, 21 с на Nano Banana 2 и 69 с на Nano Banana Pro; сравнение изображений — в [руководстве по Nano Banana 2.1](https://docs.laozhang.ai/ru/api-capabilities/nano-banana-2-1-image.md).
* Таблица после этого списка содержит 10 соотношений сторон и четыре дополнительных, которые есть у Nano Banana 2.1 и Nano Banana 2.
* В OpenAI-совместимом маршруте настройки соотношения и размера нет. По текстовому промпту Standard возвращает изображения 1024×1024, Nano Banana 2.1 — изображение 1K в кадре, который выбирает модель, а остальные модели — изображения 1:1 в 1K.
* Прочерк (—) означает, что Google не указывает эту возможность для Standard. Возможности взяты из [руководства Google по генерации изображений Nano Banana](https://ai.google.dev/gemini-api/docs/image-generation).

| Форма | 10 соотношений сторон | Добавляют Nano Banana 2.1 и 2 |
| - | - | - |
| Квадрат | `1:1` | — |
| Портретная | `2:3`, `3:4`, `4:5`, `9:16` | `1:4`, `1:8` |
| Альбомная | `3:2`, `4:3`, `5:4`, `16:9`, `21:9` | `4:1`, `8:1` |

Для большинства новых задач начинайте с Nano Banana 2.1 — октябрьского обновления Nano Banana 2; Nano Banana 2 оставьте для вывода 512px. Выбирайте 2 Lite, если стоимость и скорость важнее разрешения, а Pro — когда компоновка, текст или детали бренда должны быть точными. Сравнить Nano Banana с другими моделями изображений поможет [сравнение API изображений](https://docs.laozhang.ai/ru/api-capabilities/image-generation-guide.md).

Что общего у всех пяти моделей:

* Они приходят по официальному каналу Google, а вам нужен только API-ключ LaoZhang API, аккаунт Google не требуется.
* Маршрут с оплатой за вызов берёт одну фиксированную цену: размер вывода, уровень рассуждения, число референсов и режим (генерация или правка) на неё не влияют, поэтому изображения 2K и 4K дешевле, чем при оплате по токенам у Google.
* Одно изображение за запрос; для нескольких изображений отправьте несколько запросов.
* На платформе нет лимита параллельности и троттлинга; `429` возникает из-за ёмкости апстрима, см. [Параллельность и 429](https://docs.laozhang.ai/ru/faq/api-concurrency.md).
* Ответы апстрима не 200 (400, 429, 5xx) не тарифицируются, а HTTP 200 без изображения тарифицируется как один вызов; три семейства моделей сравнивает страница [Оплата и ошибки](https://docs.laozhang.ai/ru/api-capabilities/image-billing-and-failures.md).

Фактические результаты примеров генерации из руководств по моделям:

![Угловое кафе после дождя с вывеской BANANA CAFE, сгенерировано Nano Banana 2.1](https://mintcdn.com/laozhangai-edd05f2c/YuJHjB7ivlJQODe0/images/samples/nb21-en-generate.jpg?fit=max\&auto=format\&n=YuJHjB7ivlJQODe0\&q=85\&s=776b4b2c0679826afe7f53c233cadd2b)

Nano Banana 2.1, 2K

![Лапшичная лавка на ночном рынке, сгенерировано Nano Banana 2](https://mintcdn.com/laozhangai-edd05f2c/YuJHjB7ivlJQODe0/images/samples/nb2-en-generate.jpg?fit=max\&auto=format\&n=YuJHjB7ivlJQODe0\&q=85\&s=7d354f14a97893f8b3386acd4203cf74)

Nano Banana 2, 2K

![Футуристический городской горизонт с рекламным щитом NEO TOKYO, сгенерировано Nano Banana Pro](https://mintcdn.com/laozhangai-edd05f2c/YuJHjB7ivlJQODe0/images/samples/pro-en-generate.jpg?fit=max\&auto=format\&n=YuJHjB7ivlJQODe0\&q=85\&s=e4562d316f14e9d20a749e36a4b5e742)

Nano Banana Pro, 4K

![Логистическая панель с бирюзовыми акцентами, сгенерировано Nano Banana 2 Lite](https://mintcdn.com/laozhangai-edd05f2c/YuJHjB7ivlJQODe0/images/samples/lite-en-generate.jpg?fit=max\&auto=format\&n=YuJHjB7ivlJQODe0\&q=85\&s=1a0b918a99dd6f11e7339d4c487c9cdd)

Nano Banana 2 Lite, 1K

## Выбор протокола

Оба эндпоинта принимают один и тот же API-ключ и одни и те же ID моделей:

```text theme={null}
OpenAI-совместимый:  POST https://api.laozhang.ai/v1/chat/completions
Нативный Gemini:     POST https://api.laozhang.ai/v1beta/models/{model}:generateContent
```

| | OpenAI-совместимый | Нативный Gemini |
| - | - | - |
| Тело запроса | `model` и `messages` | `contents` и `generationConfig` |
| Входные изображения | Части `image_url` | Части `inlineData` |
| Выходное изображение | Data URL в `message.content` | `inlineData` в `content.parts` |
| Соотношение и размер | Не настраиваются | `aspectRatio`, `imageSize` |
| Авторизация | `Authorization: Bearer` | `Authorization: Bearer` или `x-goog-api-key` |

**OpenAI-совместимый** маршрут подходит приложениям, которые уже используют OpenAI SDK. Изображение приходит в Base64 в `choices[0].message.content`, обычно как Markdown-изображение вида `![image](data:image/png;base64,iVBORw0...)`. Формат определяйте по data URL, а не предполагайте PNG. Входное `image_url` может быть data URL из локального файла или публичным HTTPS URL.

**Нативный Gemini** открывает все параметры изображения. Задавайте их в `generationConfig.imageConfig`:

* `aspectRatio` принимает значение из списка модели.
* `imageSize` принимает размер с заглавной K. Значения, которые принимает каждая модель, приведены в таблице ниже.

| Модель | `imageSize` |
| - | - |
| Standard | Не указывайте |
| Nano Banana 2 Lite | Только `1K` |
| Nano Banana 2.1 | `1K`, `2K` или `4K` |
| Nano Banana 2 | `512`, `1K`, `2K` или `4K` |
| Nano Banana Pro | `1K`, `2K` или `4K` |

В ответе каждое изображение приходит частью `inlineData` с `mimeType` и данными `data` в Base64. Чтобы вызвать этот эндпоинт через Google Gen AI SDK, базовый URL смотрите в разделе [Протокол Gemini](https://docs.laozhang.ai/ru/api-reference/gemini.md).

## Оплата

LaoZhang API предлагает Nano Banana только с оплатой за вызов: у каждой модели одна цена независимо от размера вывода, уровня рассуждения, числа референсов и от того, генерация это или правка. Единственная дополнительная плата — за привязку к поиску Google, она взимается за каждый поиск, как описано ниже.

Google тарифицирует по токенам, поэтому крупные изображения и больше токенов рассуждения стоят дороже. В таблице сравниваются публичные цены LaoZhang API на 7 октября 2026 года и [цены Google](https://ai.google.dev/gemini-api/docs/pricing):

| Модель | LaoZhang API (за вызов) | Google (за выходное изображение) |
| - | -: | - |
| `gemini-3-pro-image` (Pro) | \$0.09 | 1K/2K \$0.134, 4K \$0.24 |
| `gemini-nano-banana-2.1` (Nano Banana 2.1) | \$0.045 | 2K \$0.0504, 4K \$0.113 |
| `gemini-3.1-flash-image` (Nano Banana 2) | \$0.055 | 1K \$0.067, 2K \$0.101, 4K \$0.151 |
| `gemini-3.1-flash-lite-image` (2 Lite) | \$0.025 | 1K \$0.0336 |
| `gemini-2.5-flash-image` (Standard) | \$0.02 | \$0.039 |

Цифры Google — его стандартные платные тарифы, пересчитанные на одно выходное изображение, проверены 13 октября 2026 года; Google также тарифицирует входные токены и токены рассуждения.

При тарификации Google вывод 4K и уровень рассуждения `high` повышают стоимость вызова; в LaoZhang API цена за вызов остаётся прежней, поэтому экономия растёт вместе с разрешением. Например, изображение 4K от Nano Banana 2 обходится примерно на 64% дешевле стандартной цены Google.

У моделей Nano Banana есть только цена за вызов, поэтому задайте для API-ключа режим оплаты **«сначала по использованию»** (按量优先, рекомендуется) или **«оплата за вызов»** (按次计费). Ключ с режимом «сначала по использованию» вызывает и модели с оплатой за вызов, и модели с оплатой по использованию; ключ с режимом **«оплата по использованию»** (按量计费) вызывает только модели с оплатой по использованию, поэтому Nano Banana ему недоступна. Чем отличаются режимы, описано в разделе [Тарификация и цены](https://docs.laozhang.ai/ru/pricing.md).

Запись о статусе и списании по каждому запросу хранится в [журнале вызовов](https://api.laozhang.ai/log):

* **HTTP 200 без изображения: тарифицируется как один вызов.** HTTP 200 от апстрима считается завершённым вызовом, одинаково для генерации и редактирования. LaoZhang API не проверяет промпты и результаты, поэтому не тарифицирует в зависимости от того, пришло ли изображение. См. подраздел «Как не платить за пустые ответы» ниже.
* **Таймаут на клиенте**: сервер всё равно может завершить изображение и списать оплату. Перед повторной отправкой проверьте журнал вызовов, чтобы не оплатить дважды.
* **Ответ апстрима не 200**: ответ 400, 429, 503 и подобный, не дошедший до генерации, не тарифицируется.
* **Привязка к поиску Google: \$0.014 за поиск сверх цены за вызов.** Это соответствует \$14 за 1000 поисков у Google и относится к Nano Banana 2.1, Nano Banana 2 и Nano Banana Pro.
  * Сколько поисков выполнить, решает модель, и для одного и того же промпта число может отличаться. Журнал вызовов показывает число поисков и их стоимость для каждого запроса.
  * Например, запрос Nano Banana 2.1 с 2 поисками стоит \$0.045 + 2 × \$0.014 = \$0.073.

### Как не платить за пустые ответы

HTTP 200 без изображения обычно объясняется одной из двух причин:

* **Промпт не просит изображение.** Если он только описывает желаемое, не говоря «сгенерируй изображение» или «верни отредактированное изображение», модель может порассуждать и ответить текстом или ничем.
* **Фильтры безопасности апстрима блокируют содержимое.** Если промпт или референсное изображение связаны с персонажами под авторским правом, чувствительными персонами или чувствительным содержимым, Google возвращает ответ без изображения и без кода ошибки. Повторная отправка того же содержимого обычно снова блокируется, и каждая попытка тарифицируется.

Содержимое, которое часто срабатывает на фильтры безопасности Google:

* сексуальное, жестокое, натуралистичное или враждебное содержимое, включая намёки на пограничное
* удаление водяного знака с изображения
* известные персонажи под авторским правом, например Disney, Marvel или Nintendo
* неприемлемое содержимое с участием несовершеннолетних
* публичные персоны: знаменитости, политики
* правка финансовых данных: скриншотов заказов, чеков, ценников
* смена одежды реальному человеку или подмена лица

Фильтрация Google отчасти случайна: один и тот же промпт может один раз дать изображение, а в следующий раз быть заблокирован, а правила меняются по мере обновлений Google. Заблокированный запрос обычно возвращает короткий текстовый отказ, а не код ошибки.

Перед пакетной обработкой учтите эти случаи в клиенте:

1. Явно просите изображение в каждом промпте.
2. Сами проверяйте промпты и референсные изображения до отправки и убирайте содержимое, которое может сработать на фильтры безопасности.
3. Считайте ответ без `candidates` или без части `inlineData` ответом «без изображения». Если `candidates` есть, прочитайте `finishReason` и возвращённый текст, чтобы понять причину.
4. Не повторяйте пустой ответ автоматически. Сначала измените промпт или референсы. Повторы с нарастающей задержкой оставьте для ошибок 429 и 5xx.

## Подготовка

**1. Создайте API-ключ**

В разделе [Управление токенами](https://api.laozhang.ai/token) откройте диалог создания токена (创建令牌), в поле **Режим оплаты** (计费模式) выберите **«сначала по использованию»** (按量优先, рекомендуется) или **«оплата за вызов»** (按次计费) и нажмите **Создать** (创建). Группа `default` включает все пять моделей Nano Banana.

![Диалог создания токена в консоли LaoZhang API с режимом оплаты «оплата за вызов» (按次计费)](https://mintcdn.com/laozhangai-edd05f2c/_loZ0Jy0ZI__xJ9z/images/token-create-per-request.png?fit=max\&auto=format\&n=_loZ0Jy0ZI__xJ9z\&q=85\&s=1fdceb804bb3ad50f83a21ec65b4d807)

**2. Сохраните ключ в переменной окружения**

```bash theme={null}
export LAOZHANG_API_KEY="sk-..."  # замените на свой API-ключ LaoZhang API
```

**3. Установите зависимости**

```bash theme={null}
python -m pip install openai requests
```

Для примеров с cURL также нужен `jq`, например `brew install jq` или `sudo apt-get install jq`.

## Вспомогательный модуль на Python

Сохраните этот модуль как `nano_banana.py`. Он авторизуется в обоих маршрутах, превращает локальные файлы во входные изображения и сохраняет каждое возвращённое изображение с расширением, соответствующим его байтам (PNG, JPEG или WebP):

```python theme={null}
"""Общие функции для моделей изображений Nano Banana в LaoZhang API."""
import base64
import json
import os
import re
import sys
from pathlib import Path

import requests
from openai import OpenAI

BASE_URL = "https://api.laozhang.ai"
INPUT_TYPES = {".png": "image/png", ".jpg": "image/jpeg", ".jpeg": "image/jpeg", ".webp": "image/webp"}
DATA_URL = re.compile(r"data:image/[\w.+-]+;base64,([A-Za-z0-9+/=]+)")


def openai_client():
    """OpenAI-совместимый клиент; SDK отправляет ключ как Authorization: Bearer."""
    # max_retries=0: автоповтор после таймаута мог бы сгенерировать и оплатить изображение дважды
    return OpenAI(api_key=os.environ["LAOZHANG_API_KEY"], base_url=f"{BASE_URL}/v1", timeout=300, max_retries=0)


def generate_content(model, parts, image_config=None):
    """Отправляет нативный запрос Gemini generateContent и возвращает JSON-ответ."""
    generation_config = {"responseModalities": ["IMAGE"]}
    if image_config:
        generation_config["imageConfig"] = image_config
    response = requests.post(
        f"{BASE_URL}/v1beta/models/{model}:generateContent",
        headers={"Authorization": f"Bearer {os.environ['LAOZHANG_API_KEY']}"},
        json={"contents": [{"role": "user", "parts": parts}], "generationConfig": generation_config},
        timeout=300,
    )
    if response.status_code != 200:
        raise RuntimeError(f"HTTP {response.status_code}: {response.text[:500]}")
    return response.json()


def _extension(raw):
    if raw.startswith(b"\x89PNG"):
        return "png"
    if raw.startswith(b"\xff\xd8\xff"):
        return "jpg"
    if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP":
        return "webp"
    return "bin"


def _write(encoded, stem, number):
    encoded = "".join(encoded.split())
    raw = base64.b64decode(encoded + "=" * (-len(encoded) % 4))  # допускаем отсутствие padding
    suffix = "" if number == 1 else f"-{number}"
    path = Path(f"{stem}{suffix}.{_extension(raw)}")
    path.write_bytes(raw)
    return str(path)


def save_chat_images(content, stem):
    """OpenAI-совместимый маршрут: сохраняет каждый data URL в Base64 из message.content."""
    found = DATA_URL.findall(content or "")
    if not found:
        raise RuntimeError(f"В message.content нет изображения: {(content or '')[:300]!r}")
    return [_write(data, stem, number) for number, data in enumerate(found, start=1)]


def save_native_images(result, stem):
    """Нативный Gemini: сохраняет каждое изображение inlineData из candidates[].content.parts[]."""
    blobs = []
    for candidate in result.get("candidates") or []:
        for part in (candidate.get("content") or {}).get("parts") or []:
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and not part.get("thought"):
                blobs.append(blob)
    if not blobs:
        reasons = [candidate.get("finishReason") for candidate in result.get("candidates") or []]
        raise RuntimeError(f"Изображение не получено: {result.get('promptFeedback') or reasons}")
    return [_write(blob["data"], stem, number) for number, blob in enumerate(blobs, start=1)]


def _encode(path):
    mime = INPUT_TYPES.get(Path(path).suffix.lower())
    if mime is None:
        raise ValueError(f"Нужен файл PNG, JPEG или WebP: {path}")
    return mime, base64.b64encode(Path(path).read_bytes()).decode("ascii")


def to_data_url(path):
    """Локальный файл в data URL для части image_url в OpenAI-совместимом запросе."""
    mime, data = _encode(path)
    return f"data:{mime};base64,{data}"


def to_inline_part(path):
    """Локальный файл в часть inlineData нативного запроса Gemini."""
    mime, data = _encode(path)
    return {"inlineData": {"mimeType": mime, "data": data}}


if __name__ == "__main__":
    # Сохранить изображения из файла ответа: python nano_banana.py response.json output-name
    body = json.loads(Path(sys.argv[1]).read_text(encoding="utf-8"))
    if "error" in body:
        sys.exit(f"Ошибка API: {body['error']}")
    if "choices" in body:
        saved = save_chat_images(body["choices"][0]["message"].get("content"), sys.argv[2])
    else:
        saved = save_native_images(body, sys.argv[2])
    for path in saved:
        print("Сохранено:", path)
```

В Python импортируйте нужные функции. После запроса через cURL выполните `python nano_banana.py response.json output-name`, чтобы сохранить изображения из файла ответа:

* Первое изображение записывается как `output-name.png` (или `.jpg`, `.webp`).
* Остальные записываются как `output-name-2`, `output-name-3` и так далее.

## Nano Banana Standard

`gemini-2.5-flash-image` — исходная модель Nano Banana. Она создаёт изображения примерно в 1K: по текстовому промпту в OpenAI-совместимом маршруте приходит 1024×1024, а нативный маршрут Gemini принимает 10 соотношений сторон из списка выше (например, 16:9 возвращается как 1344×768). Для редактирования Google рекомендует не больше 3 входных изображений.

> [!WARNING]
>
> **У `gemini-2.5-flash-image` срок отключения у Google прошёл, и она может перестать работать в любой момент. Переходите на другую модель сейчас.**
>
> * Страницы Google расходятся в дате отключения: на 8 октября 2026 года [страница устаревших моделей](https://ai.google.dev/gemini-api/docs/deprecations) называет 15 марта 2027 года, а [страница цен](https://ai.google.dev/gemini-api/docs/pricing) всё ещё содержит прежнее предупреждение о 2 октября 2026 года. На 5 октября 2026 года LaoZhang API по-прежнему обслуживает её по той же цене.
> * Перейдите на Nano Banana 2.1 (`gemini-nano-banana-2.1`) или Nano Banana 2 (`gemini-3.1-flash-image`); Nano Banana 2 Lite (`gemini-3.1-flash-lite-image`) — недорогой вариант для изображений 1K.

### Генерация изображения

В этих примерах используется вспомогательный модуль `nano_banana.py` из раздела выше.

> [tab] Python
>
> ```python theme={null}
> from nano_banana import openai_client, save_chat_images
>
> response = openai_client().chat.completions.create(
>     model="gemini-2.5-flash-image",
>     messages=[{
>         "role": "user",
>         "content": "Сгенерируй изображение: рыжая лиса сидит на свежем снегу на рассвете, мягкий золотистый свет.",
>     }],
> )
> for path in save_chat_images(response.choices[0].message.content, "standard-fox"):
>     print("Сохранено:", path)
> ```

> [tab] cURL
>
> ```bash theme={null}
> curl --fail-with-body --max-time 300 \
>   "https://api.laozhang.ai/v1/chat/completions" \
>   -H "Authorization: Bearer $LAOZHANG_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{
>     "model": "gemini-2.5-flash-image",
>     "stream": false,
>     "messages": [{
>       "role": "user",
>       "content": "Сгенерируй изображение: рыжая лиса сидит на свежем снегу на рассвете, мягкий золотистый свет."
>     }]
>   }' \
>   -o standard-response.json
>
> python nano_banana.py standard-response.json standard-fox
> ```

Результат сохраняется как `standard-fox.png`, `.jpg` или `.webp` в зависимости от возвращённого формата. Явно просите изображение: промпт, похожий на вопрос, может получить ответ одним текстом.

Для соотношения, отличного от 1:1, вызовите нативный эндпоинт Gemini с `aspectRatio` и без `imageSize`:

```python theme={null}
from nano_banana import generate_content, save_native_images

result = generate_content(
    "gemini-2.5-flash-image",
    [{"text": "Сгенерируй изображение: маяк на скалистом берегу в сумерках, широкий кинематографичный кадр."}],
    image_config={"aspectRatio": "16:9"},
)
for path in save_native_images(result, "standard-lighthouse"):
    print("Сохранено:", path)
```

### Редактирование изображения

Отправьте инструкцию и изображение в одном пользовательском сообщении; `to_data_url` превращает локальный файл в data URL с подходящим типом MIME:

```python theme={null}
from nano_banana import openai_client, save_chat_images, to_data_url

response = openai_client().chat.completions.create(
    model="gemini-2.5-flash-image",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "Замени фон на однотонную светло-серую студийную стену. Изделие не меняй."},
            {"type": "image_url", "image_url": {"url": to_data_url("product.jpg")}},
        ],
    }],
)
for path in save_chat_images(response.choices[0].message.content, "standard-edit"):
    print("Сохранено:", path)
```

Запросы через cURL, объединение до трёх изображений, соотношение сторон при правке и формулировки инструкций описаны в разделе [Редактирование в Nano Banana (Standard)](https://docs.laozhang.ai/ru/api-capabilities/nano-banana-image-edit.md).

### Переход на новую модель

Формат запроса одинаков у всех моделей Nano Banana, поэтому для перехода в основном нужно сменить `model`:

* `gemini-3.1-flash-lite-image` (Nano Banana 2 Lite) сохраняет вывод 1K и те же 10 соотношений сторон.
* `gemini-nano-banana-2.1` (Nano Banana 2.1) добавляет вывод от 1K до 4K, 14 соотношений сторон и до 14 референсных изображений по цене ниже, чем у Nano Banana 2.
* `gemini-3.1-flash-image` (Nano Banana 2) добавляет вывод от 512px до 4K, 14 соотношений сторон и до 14 референсных изображений.

С вспомогательным модулем запрос про маяк выше работает на Nano Banana 2 с новым ID модели, и теперь можно задать и `imageSize`:

```python theme={null}
from nano_banana import generate_content, save_native_images

result = generate_content(
    "gemini-3.1-flash-image",
    [{"text": "Сгенерируй изображение: маяк на скалистом берегу в сумерках, широкий кинематографичный кадр."}],
    image_config={"aspectRatio": "16:9", "imageSize": "2K"},
)
for path in save_native_images(result, "lighthouse-2k"):
    print("Сохранено:", path)
```

После перехода заново прогоните привычные промпты: новая модель может иначе трактовать тот же промпт. Как перевести запросы на правку, описано в разделе о переходе на Nano Banana 2 в [руководстве по редактированию](https://docs.laozhang.ai/ru/api-capabilities/nano-banana-image-edit.md).

## Большие изображения и URL

**Весь запрос, включая изображения в Base64, должен занимать меньше 20 МБ; более крупные референсы передавайте по URL через `fileData`.** Base64 увеличивает размер файла примерно на треть, поэтому изображения, отправляемые как `inlineData`, должны в сумме занимать около 15 МБ или меньше.

В нативном маршруте Gemini части `fileData` и `inlineData` могут находиться в одном массиве `parts`. Они считаются первым, вторым и следующими референсами в том порядке, в котором вы их перечислили. В этом теле запроса фотография человека передаётся по URL, а куртка — в Base64:

```json theme={null}
{
  "contents": [{
    "role": "user",
    "parts": [
      {"text": "Одень человека с первого изображения в куртку со второго изображения."},
      {"fileData": {"mimeType": "image/jpeg", "fileUri": "https://cdn.example.com/person.jpg"}},
      {"inlineData": {"mimeType": "image/png", "data": "<данные изображения куртки в Base64>"}}
    ]
  }],
  "generationConfig": {"responseModalities": ["IMAGE"]}
}
```

URL сокращает тело запроса до нескольких сотен байт, поэтому так можно передавать и фотографии высокого разрешения размером в десятки мегабайт. Изображение скачивает сервер, поэтому URL должен удовлетворять следующим условиям:

* Это прямая ссылка по HTTPS, не требующая входа, cookie или Referer и не закрытая CAPTCHA, проверкой Cloudflare или фильтром по User-Agent.
* `robots.txt` сайта не запрещает краулерам путь к изображению.
* Подписанный URL остаётся действительным достаточно долго для очереди и повторов; закладывайте не меньше 30 минут.
* `mimeType` соответствует реальному формату: `image/jpeg` для JPEG, `image/png` для PNG, `image/webp` для WebP.

Если изображение скачать не удаётся, запрос возвращает 400 с `Cannot fetch content from the provided URL` и не тарифицируется. OpenAI-совместимый маршрут тоже принимает публичный URL изображения в `image_url.url` при тех же условиях.

## Устранение неполадок

* **HTTP 400 с `Cannot fetch content from the provided URL`.** Серверу не удалось скачать изображение из `fileData`. Пройдитесь по условиям из раздела «Большие изображения и URL».
* **HTTP 413.** Тело запроса слишком большое. Передавайте крупные изображения по URL через `fileData` или уменьшите их, чтобы весь запрос занимал меньше 20 МБ.
* **HTTP 200, но без изображения.** Ответ OpenAI-совместимого маршрута содержит только текст или в нативном ответе нет части `inlineData`. Вызов уже тарифицирован, поэтому не отправляйте тот же запрос повторно: явно попросите изображение или уберите ограниченное содержимое, как описано в подразделе «Как не платить за пустые ответы».
  * В нативных ответах проверьте `finishReason` и `promptFeedback`, если он есть в ответе.
  * Примеры значений: `IMAGE_SAFETY`, `IMAGE_PROHIBITED_CONTENT` и `NO_IMAGE`.
* **HTTP 401.** Проверьте API-ключ и заголовок `Authorization: Bearer`. Используйте API-ключ модели из раздела «Управление токенами», а не AccessToken аккаунта.
* **HTTP 400.** Проверьте ID модели, тело JSON и то, что `aspectRatio` и `imageSize` есть в списке модели. Пишите K заглавной: некоторые модели отклоняют размеры со строчной буквой, например `2k`.
* **HTTP 429, 5xx или таймаут.** Повторяйте с экспоненциальной задержкой. После таймаута найдите запрос в журнале вызовов, прежде чем отправлять его снова, чтобы не заплатить дважды за одно изображение.

## Частые вопросы

### Как получить API-ключ для Nano Banana?

[Зарегистрируйтесь](https://api.laozhang.ai/register) в LaoZhang API и создайте токен в разделе [Управление токенами](https://api.laozhang.ai/token): выберите группу `default` и режим оплаты **«сначала по использованию»** (рекомендуется) или **«оплата за вызов»**. Полученная строка `sk-` — API-ключ для всех пяти моделей Nano Banana; аккаунт Google и ключ Gemini API не нужны. После пополнения баланса отправьте первый запрос с помощью вспомогательного модуля `nano_banana.py` и проверяйте каждое списание в [журнале вызовов](https://docs.laozhang.ai/en/faq/call-logs.md).

### Можно ли вызывать Nano Banana без аккаунта Google?

Да. Нужен только API-ключ LaoZhang API, проект Google Cloud, ключ Gemini API и аккаунт Google не требуются. Все пять моделей приходят по официальному каналу Google, принимают тот же формат запросов, что и нативный API Google, и тарифицируются за вызов.

### С какой модели Nano Banana начать?

Начните с Nano Banana 2.1 (`gemini-nano-banana-2.1`). Она обновляет Nano Banana 2: лучше текст и компоновка, вывод от 1K до 4K и до 14 референсов сохранены, а за вызов она стоит дешевле. Берите Nano Banana 2, если нужен вывод 512px, Nano Banana 2 Lite — для больших объёмов изображений 1K, а Nano Banana Pro — для сложных макетов и ассетов, критичных для бренда.

Не начинайте новую работу на Standard: Google объявил её устаревшей, сроки отключения расходятся (15 марта 2027 года на странице устаревших моделей, 2 октября 2026 года на странице цен), и она может перестать работать в любой момент.

Если вы уже её используете, переведите правки одного изображения 1K на Nano Banana 2 Lite, а композиции из нескольких изображений — на Nano Banana 2.1 или Nano Banana 2: они принимают тот же запрос, как описано в разделе о переходе на Nano Banana 2 в [руководстве по редактированию](https://docs.laozhang.ai/ru/api-capabilities/nano-banana-image-edit.md).

### Вернёт ли OpenAI-совместимый маршрут 16:9 или 4K?

Нет. В запросах chat completions нет полей соотношения сторон и размера, поэтому запросить их нельзя. Отправьте тот же промпт на нативный эндпоинт Gemini с `aspectRatio` и `imageSize`.

### Влияют ли размер вывода, референсы и правка на цену?

Нет. У каждой модели одна цена за вызов: изображение 512px или 4K, уровень рассуждения по умолчанию или `high`, один референс или четырнадцать, генерация или правка стоят одинаково. Дополнительно взимается только привязка к поиску Google, \$0.014 за поиск. Сравнение цен с Google приведено в разделе «Оплата».

### Списывается ли оплата при ошибке, таймауте или пустом ответе?

HTTP 200 без изображения тарифицируется как один вызов, в том числе если промпт не просил изображение или его заблокировали фильтры безопасности апстрима. Таймаут на клиенте тоже может быть тарифицирован, а ответ апстрима не 200, например 429 или 503, — нет.

Статус и списание по каждому запросу видны в [журнале вызовов](https://api.laozhang.ai/log). Как действовать в каждом случае, объясняет раздел «Оплата».

### Может ли один запрос вернуть несколько изображений?

Не рассчитывайте на это. Google отмечает, что модель не всегда возвращает столько изображений, сколько просит промпт. Чтобы получить несколько изображений, отправьте несколько запросов; каждый тарифицируется как один вызов.

В одном ответе всё же может быть больше одного изображения: модели изображений Gemini 3 создают промежуточные изображения во время рассуждения, чтобы проверить композицию, и они могут прийти вместе с результатом. Финальное изображение — последнее. Вспомогательный модуль `nano_banana.py` сохраняет все изображения по порядку, поэтому файл с наибольшим номером — последний.

### На каких языках промпты работают лучше всего?

Google называет английский и 14 других языковых локалей, в которых промпты работают лучше всего, включая китайский (zh-CN), японский, корейский, испанский, немецкий и французский. Промпты на других языках могут работать, но результаты могут быть менее стабильными.

### Есть ли на сгенерированных изображениях водяной знак?

Да. Google сообщает, что каждое изображение, сгенерированное моделью Nano Banana, содержит водяной знак SynthID. SynthID встроен в изображение, незаметен для человека и позволяет инструментам определить, что изображение создано ИИ.

### Какие форматы входных изображений можно отправлять?

Google называет поддерживаемыми форматами PNG, JPEG, WebP, HEIC и HEIF. Примеры на этом сайте и вспомогательный модуль `nano_banana.py` работают с PNG, JPEG и WebP, поэтому фотографии HEIC и HEIF сначала конвертируйте в JPEG. Какой бы ни был формат, `mimeType` или префикс data URL должен соответствовать реальному формату файла.

Base64 увеличивает файл примерно на треть, поэтому очень крупные фотографии уменьшайте перед отправкой. Если тело запроса превысит 20 МБ, передайте изображение по URL; см. раздел «Большие изображения и URL».

### Почему на чисто белом фоне появляются тёмные пятна или разводы?

Nano Banana работает через маршрут Google AI Studio, и крупные участки чисто белого цвета иногда приходят с тёмными пятнами, разводами, серой дымкой или цветовым оттенком, чаще в часы пик. Вместо этого попросите другой светлый фон:

* светло-серый: `light gray background, #F5F5F5`
* бежевый: `beige background, #F5F0E5`
* светло-голубой: `light blue background, #E8F0F8`

Если изменить только описание фона, цвета объекта не затронутся. Если нужен чисто белый фон, замените его в собственной постобработке. Изображения с дефектами тарифицируются как любой другой вызов, поэтому перед большим пакетом проверьте несколько образцов.

## Источники и связанные материалы

* [Google: Nano Banana image generation](https://ai.google.dev/gemini-api/docs/image-generation) — названия моделей, размеры вывода, соотношения сторон, лимиты референсов, рассуждение, привязка к поиску, поддерживаемые языки и SynthID
* [Google: image understanding](https://ai.google.dev/gemini-api/docs/image-understanding) — поддерживаемые форматы входных изображений
* [Google: Gemini API pricing](https://ai.google.dev/gemini-api/docs/pricing) — цены Google на модели изображений и плата за привязку к поиску
* [Google: справочник generateContent](https://ai.google.dev/api/generate-content) — поля `imageConfig` и значения `imageSize`
* [Google: устаревание моделей Gemini API](https://ai.google.dev/gemini-api/docs/deprecations) — сроки отключения моделей у вендора
* [Редактирование в Nano Banana (Standard)](https://docs.laozhang.ai/ru/api-capabilities/nano-banana-image-edit.md) и [Редактирование в Nano Banana Pro](https://docs.laozhang.ai/ru/api-capabilities/nano-banana-pro-image-edit.md) — полные руководства по редактированию
* [Модели и цены](https://docs.laozhang.ai/ru/models.md) — актуальные цены и группы LaoZhang API
* [Журнал вызовов](https://docs.laozhang.ai/en/faq/call-logs.md) — статус и списание по запросу
* [Протокол Gemini](https://docs.laozhang.ai/ru/api-reference/gemini.md) и [Протокол OpenAI](https://docs.laozhang.ai/ru/api-reference/chat-completions.md) — настройка клиента для каждого маршрута
* [Сравнение API изображений](https://docs.laozhang.ai/ru/api-capabilities/image-generation-guide.md) — Nano Banana и [GPT Image 2.5](https://docs.laozhang.ai/ru/api-capabilities/gpt-image-2-5.md), [FLUX.2](https://docs.laozhang.ai/ru/api-capabilities/flux-image-generation.md), [Seedream](https://docs.laozhang.ai/ru/api-capabilities/seedream-image.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.