Перейти к основному содержанию

Nano Banana API: цены и пример на Python

Вызывается одним ключом LaoZhang API через тот же эндпоинт, что и студия YingTu. Ниже — эндпоинт, параметры, цена за картинку и код, который можно скопировать. Ваш настоящий ключ в примерах не появляется. На 9 октября 2026 г. все ID моделей на этой странице оплачиваются за изображение, без подписки, и работают с одним ключом.

Цена $0.055/ изобр.Gemini native512 / 1K / 2K / 4K$0.1 новым пользователям

Главное (на 10 октября 2026 г.)

  • ID моделей на этом эндпоинте: gemini-3.1-flash-lite-image, gemini-3.1-flash-image, gemini-nano-banana-2.1, gemini-3-pro-image. Один ключ LaoZhang подходит для всех.
  • Цена за изображение: Nano Banana 2 Lite $0.025, Nano Banana 2 $0.055, Nano Banana 2.1 $0.045, Nano Banana Pro $0.09. Без подписки, каждое изображение оплачивается отдельно.
  • Base URL https://api2.laozhang.ai, формат запросов Gemini: POST /v1beta/models/{model}:generateContent.
  • Новым аккаунтам LaoZhang дают $0.1 на тест: около 4 изображений Nano Banana 2 Lite или 1 Nano Banana Pro.
  • Баланс на laozhang.ai пополняется банковской картой через Stripe или в USDT.

Запуск за 3 шага

  1. 1

    Создайте API-ключ на laozhang.ai (новым аккаунтам — $0.1).

  2. 2

    Скопируйте ID модели и код ниже, ключ положите в переменную окружения.

  3. 3

    Сгенерируйте одно изображение, проверьте ответ и масштабируйте.

Эндпоинт и авторизация

Эндпоинт генерации
POST/v1beta/models/gemini-3.1-flash-image:generateContent
Эндпоинт редактирования
POST/v1beta/models/gemini-3.1-flash-image:generateContent
Базовый URL
https://api2.laozhang.ai
Авторизация
Bearer API-ключ
Формат запроса
Gemini native
Референсы
Есть
Лимит референсов
До 5 изображений в YingTu (не максимум провайдера)
Статус проверки
Пока не подтверждено — нет доступной даты проверки.

Пример кода

Подставьте свой промпт. Для референсов используйте пример редактирования ниже.

Пример генерации

export LAOZHANG_API_KEY="replace-with-your-key"

curl --fail-with-body --max-time 500 \
  -X POST 'https://api2.laozhang.ai/v1beta/models/gemini-3.1-flash-image:generateContent' \
  -H "Authorization: Bearer ${LAOZHANG_API_KEY}" \
  -H "Content-Type: application/json" \
  --data '{"contents":[{"parts":[{"text":"A clean product photo of a matte ceramic coffee mug on a light stone table, soft window light, natural shadows, minimal styling."}]}],"generationConfig":{"responseModalities":["IMAGE"],"imageConfig":{"imageSize":"2K"}}}'

# The JSON response can contain base64 image data or an image URL.
# If this request times out, check request and billing logs before retrying.

Пример редактирования по референсу

Pythongemini-3.1-flash-image · edit
import base64
import mimetypes
import os
import sys

import requests

API_KEY = os.environ.get("LAOZHANG_API_KEY")
if not API_KEY:
    raise RuntimeError("Set the LAOZHANG_API_KEY environment variable before running this example.")

API_URL = "https://api2.laozhang.ai/v1beta/models/gemini-3.1-flash-image:generateContent"
REQUEST_TIMEOUT_SECONDS = 500

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json",
}

def encode_image(image_path):
    mime_type = mimetypes.guess_type(image_path)[0] or "image/jpeg"
    with open(image_path, "rb") as image_file:
        data = base64.b64encode(image_file.read()).decode("ascii")
    return {"mime_type": mime_type, "data": data}

reference_1 = encode_image("image_1.jpg")  # Replace with your image path

payload = {
    "contents": [{
        "parts": [
            {"text": "A clean product photo of a matte ceramic coffee mug on a light stone table, soft window light, natural shadows, minimal styling."},
            {"inline_data": reference_1}
        ]
    }],
    "generationConfig": {
        "responseModalities": ["IMAGE"],
        "imageConfig": {
            "imageSize": "2K"
        }
    }
}

try:
    response = requests.post(
        API_URL,
        headers=headers,
        json=payload,
        timeout=REQUEST_TIMEOUT_SECONDS,
    )
except requests.Timeout as error:
    print(
        "Request timed out after 500 seconds. The result status may be unknown; "
        "check call and billing logs before retrying.",
        file=sys.stderr,
    )
    raise SystemExit(1) from error

if response.status_code != 200:
    print(f"API error {response.status_code}: {response.text}", file=sys.stderr)
    raise SystemExit(1)

try:
    result = response.json()
except ValueError as error:
    print("API returned a non-JSON response.", file=sys.stderr)
    raise SystemExit(1) from error

if not isinstance(result, dict):
    print("API returned an unexpected JSON shape.", file=sys.stderr)
    raise SystemExit(1)

image_part = None
for candidate in result.get("candidates", []):
    for part in candidate.get("content", {}).get("parts", []):
        inline_data = part.get("inlineData") or part.get("inline_data")
        if inline_data and inline_data.get("data"):
            image_part = inline_data
            break
    if image_part:
        break

if not image_part:
    response_id = result.get("responseId", "not provided")
    print(f"No image data in response. responseId={response_id}", file=sys.stderr)
    raise SystemExit(1)

mime_type = image_part.get("mimeType") or image_part.get("mime_type") or "image/png"
encoded_image = image_part["data"]
if encoded_image.startswith("data:"):
    header, encoded_image = encoded_image.split(",", 1)
    mime_type = header[5:].split(";", 1)[0] or mime_type

extension_by_mime = {
    "image/jpeg": "jpg",
    "image/png": "png",
    "image/webp": "webp",
    "image/gif": "gif",
}
extension = extension_by_mime.get(mime_type, "bin")
output_path = f"output.{extension}"

with open(output_path, "wb") as output_file:
    output_file.write(base64.b64decode(encoded_image, validate=True))

print(f"Image saved: {output_path} ({mime_type})")
Цены определяются вашим аккаунтом LaoZhang. Перед массовой генерацией проверьте баланс и доступ к моделям.

Параметры запроса

Поля соответствуют текущему клиенту YingTu и примерам кода.

ПараметрПередача
modelОбязателен. Используйте точный ID модели с этой страницы.
promptОбязателен. Передайте инструкцию, но не API Key.
настройки выводаgenerationConfig.imageConfig.aspectRatio и imageSize; автоматическая пропорция не отправляется.
референсыНеобязательно. До 5 файлов в браузере YingTu передаются как contents[].parts[].inline_data.

Ответ и тайм-аут

Ответ с изображением
Клиент читает base64 из candidates[].content.parts[].inlineData или inline_data и сохраняет MIME-тип.
Ответ без изображения
Отсутствие изображения не считается успехом. При наличии показываются причина блокировки, завершения или response ID.

Тайм-аут клиента: 500 секунд

Через 500 секунд текущий клиент YingTu прекращает ожидание; результат и списание могут оставаться неизвестными.

Без автоматического повтора

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

Типичные ошибки

Аутентификация
Проверьте ключ в переменной окружения и Bearer-заголовок.
Доступ или баланс
Проверьте в LaoZhang доступ к модели, баланс, биллинг и ограничения аккаунта.
Лимит запросов
Снизьте параллелизм и изучите сообщение провайдера или аккаунта.
Нет изображения
Проверьте причины блокировки и завершения, сообщение API и response ID.
Тайм-аут
Итог может быть неизвестен; проверьте журналы вызовов и списаний до повтора.

Известные ограничения

Проверьте эти пункты перед использованием результата.

  • Проверьте реальные размеры загруженного файла.
  • Проверьте идентичность, логотипы, упаковку, цвета и мелкие детали.
  • Доступность и задержка могут меняться.
  • Цены, баланс, доступ и списания уточняйте в LaoZhang.

ID моделей Nano Banana на этом эндпоинте

Эндпоинт и формат запроса одинаковые, меняется только ID модели.

МодельID моделиЦенаРазмеры
Nano Banana 2 Litegemini-3.1-flash-lite-image$0.025/ изобр.1K
Nano Banana 2gemini-3.1-flash-image$0.055/ изобр.512 / 1K / 2K / 4K
Nano Banana 2.1gemini-nano-banana-2.1$0.045/ изобр.1K / 2K / 4K
Nano Banana Progemini-3-pro-image$0.09/ изобр.1K / 2K / 4K

Вопросы об API

Сколько стоит Nano Banana API?

Оплата за изображение, без подписки: Nano Banana 2 Lite $0.025, Nano Banana 2 $0.055, Nano Banana 2.1 $0.045 и Nano Banana Pro $0.09. Все списания видны в аккаунте LaoZhang.

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

Создайте токен на laozhang.ai (кнопка токена вверху страницы). Один ключ подходит для всех моделей из таблицы; новым аккаунтам дают $0.1 на тест. Работает из России.

Какой базовый URL?

https://api2.laozhang.ai, формат Gemini: POST /v1beta/models/{model}:generateContent.

Есть ли бесплатный доступ к Nano Banana API?

Есть сумма на тест: новые аккаунты LaoZhang получают $0.1 — примерно 4 изображения Nano Banana 2 Lite или 1 Nano Banana Pro. Дальше каждый вызов списывается с баланса за изображение; ни абонплаты, ни пакетов покупать не нужно.

Где хранить API Key?

Используйте переменную окружения из примера. Не сохраняйте ключ в коде, логах или промпте.

Тайм-аут означает ошибку?

Не всегда. После 500 секунд результат или списание могут быть неизвестны; проверьте журналы.

Лимит референсов задан провайдером?

Нет. Это ограничение браузерной версии YingTu, а не максимум модели.

Где проверить цену и доступ?

Актуальные цена, баланс, доступ и списания находятся в аккаунте LaoZhang.

Цена и оплата

Оплата за изображение. Показана текущая цена LaoZhang; фактические списания, баланс и доступ к моделям — в вашем аккаунте LaoZhang.

О модели
ID модели
gemini-3.1-flash-image
Цена
$0.055/ изобр.
Размеры
512 / 1K / 2K / 4K
Формат API
Gemini native

Сначала попробовать в студии

Все эти настройки есть в студии изображений YingTu, а новые пользователи получают $0.1 бесплатно.

YingTuLaoZhang