Как склеить два изображения в одно с пониманием контекста: Nano Banana API
Большинство text-to-image моделей умеют рисовать с нуля, но плохо справляются с задачей "возьми объект с одной картинки и естественно помести его на другую". Nano Banana — сервис на базе мультимодальной модели Gemini от Google — заточен именно под это: он реально понимает содержимое переданных изображений, а не просто накладывает пиксели друг на друга. Разберём, как подключить генерацию и редактирование изображений через REST API Ace Data Cloud.
Что умеет Nano Banana
Сервис решает три типовые задачи разработчика:
- Text-to-image — генерация изображения по текстовому описанию.
- Image editing — редактирование одного изображения по инструкции (убрать водяной знак, заменить фон, дорисовать деталь).
- Multi-image composition — если передать несколько изображений одновременно, модель понимает связи между ними и может, например, "переставить телефон с первого фото на стол со второго фото, подстроив угол и освещение".
Под капотом — модель Google Gemini с сильными способностями к пониманию изображений, доступны версии nano-banana, nano-banana-2, nano-banana-2-lite и nano-banana-pro с разным качеством и ценой за изображение.
Получение API-токена
Прежде чем звать API, нужен токен Ace Data Cloud:
- Зарегистрируйтесь на платформе Ace Data Cloud — доступны GitHub, Google, e-mail или телефон. При регистрации начисляются бесплатные кредиты.
- После входа токен виден прямо на главной странице личного кабинета — скопируйте его одним кликом.
- Когда кредиты закончатся, пополнить баланс можно в разделе Console → Applications.
Один токен открывает доступ ко всем сервисам платформы — Nano Banana, Suno, Veo, Flux и другим — отдельная регистрация на каждый сервис не нужна.
Вызов API напрямую через curl
Endpoint для генерации и редактирования — один и тот же: POST /nano-banana/images. Модель и режим работы определяются телом запроса.
curl -X POST https://api.acedata.cloud/nano-banana/images \
-H "Authorization: Bearer ВАШ_ТОКЕН" \
-H "Content-Type: application/json" \
-d '{
"model": "nano-banana-pro",
"prompt": "Небольшой динозавр сидит у трещины в земле и смотрит вниз, стиль иллюстрации для страницы 404",
"n": 1
}'
Для редактирования уже существующего изображения (или композиции из нескольких) достаточно добавить массив URL исходных изображений и текстовую инструкцию:
curl -X POST https://api.acedata.cloud/nano-banana/images \
-H "Authorization: Bearer ВАШ_ТОКЕН" \
-H "Content-Type: application/json" \
-d '{
"model": "nano-banana-pro",
"prompt": "Перенеси телефон с первого изображения на стол со второго изображения, подбери угол и освещение так, чтобы выглядело естественно",
"image_urls": [
"https://example.com/phone.jpg",
"https://example.com/desk.jpg"
]
}'
Задачи обрабатываются асинхронно: ответ содержит идентификатор задачи, статус которой можно проверить через POST /nano-banana/tasks, передав туда task_id из первого ответа. Опрос бесплатный — тарифицируется только сама генерация.
Пример на Python
import requests
import time
TOKEN = "ВАШ_ТОКЕН"
HEADERS = {
"Authorization": f"Bearer {TOKEN}",
"Content-Type": "application/json",
}
def generate_image(prompt, model="nano-banana-pro", image_urls=None):
payload = {"model": model, "prompt": prompt, "n": 1}
if image_urls:
payload["image_urls"] = image_urls
resp = requests.post(
"https://api.acedata.cloud/nano-banana/images",
headers=HEADERS,
json=payload,
timeout=60,
)
resp.raise_for_status()
return resp.json()
def check_task(task_id):
resp = requests.post(
"https://api.acedata.cloud/nano-banana/tasks",
headers=HEADERS,
json={"task_id": task_id},
timeout=30,
)
resp.raise_for_status()
return resp.json()
result = generate_image(
"Убери водяной знак в правом нижнем углу изображения, заполнив фон",
image_urls=["https://example.com/screenshot.png"],
)
task_id = result.get("task_id")
if task_id:
for _ in range(20):
status = check_task(task_id)
if status.get("state") == "completed":
print("Готово:", status.get("data"))
break
time.sleep(3)
else:
print("Результат готов сразу:", result.get("data"))
Практические заметки
- Модели
:official— прямой доступ к оригинальным весам Google по официальному прайсу, тогда как базовыеnano-banana/nano-banana-2/nano-banana-proдешевле за счёт оптимизации инфраструктуры. - Разрешение (
resolution: 1k / 2k / 4k) влияет на стоимость только для:official-моделей — учитывайте это при батчевой генерации большого объёма картинок. - Для мультимодальных инструкций формулируйте промпт максимально конкретно: указывайте, какой объект с какого изображения переносится и куда, а также желаемое освещение/ракурс — это заметно улучшает результат по сравнению с общими фразами.
- Один и тот же токен работает для REST API, для MCP-серверов (если вы интегрируете модель в Claude Code, Cursor или другой агентский инструмент) и для остальных сервисов платформы — переключаться между ними можно без повторной настройки авторизации.
Оплата и масштабирование
Расход считается в кредитах за изображение и зависит от модели и разрешения. Пополнить баланс приложения можно картой, а для международных команд без банковской карты доступна оплата в USDC по протоколу X402 (сети Solana и Base) — с фиксированной скидкой 5% от суммы пополнения. Оформление пополнения и выбор способа оплаты — в разделе Console → Applications.
Полную документацию по всем параметрам запроса, доступным моделям и форматам ответа можно найти на странице Ace Data Cloud Documents.
Comments
Post a Comment