Руководство по использованию
Создание изображений товаров для электронной коммерции с помощью Nano-Banana через API hiapi
Продуктовая съёмка — самая рутинная работа с изображениями в электронной коммерции: один и тот же товар снимают снова и снова — на белом фоне, в интерьере, в упаковке, на модели, в сезонных вариациях. Сложность никогда не в том, чтобы сгенерировать одно красивое изображение. Сложность в том, чтобы на каждом изображении получался один и тот же товар, чтобы страница товара не выглядела так, будто вы продаёте пять слегка разных флаконов.
Это руководство показывает рабочий способ добиться этого на Nano Banana API от hiapi с использованием двух моделей одной линейки:
nano-banana— быстрое и дешёвое преобразование текста в изображение, $0.021 за изображение. Используйте её для создания опорного изображения.Nano-Banana-2— принимает референсные изображения через массивimage_input($0.036 за изображение 1K). Используйте её, чтобы поместить опорное изображение во все остальные сцены, сохраняя товар — и даже живую модель — полностью неизменными.
Каждое изображение ниже было сгенерировано во время написания статьи, рядом напечатан точный промпт. Товар принадлежит вымышленному для этой статьи бренду («LUMA»).
Кратко
- Сгенерируйте чистое опорное изображение на белом фоне с помощью
nano-banana($0.021). - Разместите его по публичному URL (ваш S3/R2/CDN — где угодно).
- Передайте этот URL как
image_inputвNano-Banana-2и опишите каждую новую сцену. Форма флакона, этикетка и типографика сохранятся безупречно. - Для изображений с моделью используйте тот же приём с человеком: сгенерируйте изображение модели, а затем ссылайтесь на него, чтобы сохранить одно и то же лицо во всей кампании.
- Пакетно обработайте весь процесс через асинхронный эндпоинт
/v1/tasks— код внизу.
Шаг 1 — Опорное изображение (nano-banana, $0.021)
Начните с карточки товара для маркетплейса: товар по центру, чистый белый фон. Это изображение, которое унаследуют все последующие, поэтому сделайте его хорошо, прежде чем масштабировать.
Professional e-commerce product photograph of a 30ml amber glass serum bottle
with a matte black dropper cap, minimalist off-white label with the word LUMA
in small black sans-serif letters and a thin gold accent line, centered on a
pure white seamless background, soft even studio lighting, gentle shadow under
the bottle, crisp focus, high-end skincare catalog style

Одна деталь схемы, которая поможет избежать ошибок 400: nano-banana поддерживает только преобразование текста в изображение. Её вход принимает только три поля — prompt, aspect_ratio и output_format. Если вы отправите resolution или любое поле изображения, API отклонит запрос с additional properties not allowed. Референсные изображения — задача следующей модели.
Шаг 2 — Тот же флакон, новая сцена (Nano-Banana-2 + image_input)
Загрузите опорное изображение в публичное место, затем передайте его URL в Nano-Banana-2. Поле image_input принимает массив URL изображений (не содержимое файлов), а промпт описывает новую сцену. Ключевая фраза, которая работает: «этот точный флакон, без изменений».
Place this exact serum bottle, unchanged — same amber glass, same black
dropper cap, same off-white LUMA label with the thin gold line — on a
white marble bathroom counter next to a folded beige linen towel and a
small eucalyptus sprig, soft warm morning window light from the left,
shallow depth of field, premium skincare lifestyle photography

Сравните этикетку с опорным изображением: тот же логотип, та же золотая линия, та же текстура крышки. В этом разница между «AI-изображением товара», которое заметит клиент, и изображением, которое выглядит как настоящая съёмка.
С упаковкой всё так же — опишите коробку как продолжение референса:
Product family shot: this exact serum bottle — same amber glass, black dropper
cap, off-white LUMA label with thin gold line — standing next to its matching
retail packaging, a matte off-white rectangular box with the same LUMA wordmark
and thin gold accent line, both centered on a pale warm-grey studio background
with soft shadows, symmetrical composition, premium skincare packaging photography

Шаг 3 — Изображения с моделью с согласованным лицом
Команды электронной коммерции переснимают с одной и той же моделью не просто так: кампания, где на каждом фото разный человек, читается как стоковые изображения. Приём с референсом работает и для людей. Сначала сгенерируйте изображение модели с вашим товаром (это создано с опорным флаконом в качестве референса):
A young woman with shoulder-length dark hair, wearing a plain sand-colored knit
sweater, holding this exact serum bottle — same amber glass, same black dropper
cap, same off-white LUMA label with the thin gold line — up near her cheek at a
slight angle, looking at the camera with a soft natural smile, clean warm beige
studio background, soft diffused beauty lighting, e-commerce model shot for a
skincare brand

Затем используйте это изображение как референс для следующей сцены и попросите «ту же женщину»:
The same woman from the reference image — identical face, same shoulder-length
dark hair, same sand-colored knit sweater — now standing at a bright bathroom
mirror, applying one drop of serum from the same amber LUMA dropper bottle onto
the back of her hand, seen in a relaxed three-quarter view, soft morning light,
candid lifestyle e-commerce campaign photo

То же лицо, та же причёска, тот же свитер, новая сцена. Связывайте столько раз, сколько нужно для вашей кампании: каждый принятый результат становится референсом для следующего кадра.
API от начала до конца
Всё работает через единый асинхронный эндпоинт задач hiapi. Создайте задачу, опрашивайте её, скачайте результат. Опорное изображение через curl:
curl -X POST "https://api.hiapi.ai/v1/tasks" \
-H "Authorization: Bearer $HIAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "nano-banana",
"input": {
"prompt": "Professional e-commerce product photograph of ...",
"aspect_ratio": "1:1",
"output_format": "png"
}
}'
# -> {"code": 200, "data": {"taskId": "tk-hiapi-01KWK4E5WG..."}, "message": "success"}
Вызов для переноса отличается только именем модели и массивом image_input:
curl -X POST "https://api.hiapi.ai/v1/tasks" \
-H "Authorization: Bearer $HIAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "Nano-Banana-2",
"input": {
"prompt": "Place this exact serum bottle, unchanged — ... on a white marble bathroom counter ...",
"image_input": ["https://your-cdn.example.com/luma/anchor.jpg"],
"aspect_ratio": "4:3",
"resolution": "1K",
"output_format": "png"
}
}'
Опрашивайте GET /v1/tasks/{taskId}, пока data.status не станет success (или fail), затем скачайте data.output[0].url. Два замечания для продакшена:
- URL результатов временные — ответ содержит временную метку
expireAt. Немедленно скачайте байты и разместите их в собственном хранилище; не используйте горячие ссылки. (Подробнее об этом режиме отказа: URL результатов hiapi истекает: скачайте до истечения срока.) - Для реального конвейера вместо опроса передайте
callback.urlверхнего уровня в запросе на создание — hiapi вызовет ваш эндпоинт, когда задача достигнет финального состояния.
Каждый запуск, лежащий в основе этой статьи, завершился заметно быстрее двух минут.
Скрипт пакетной обработки: одно опорное изображение, целый каталог
Схема линейно масштабируется: для каждого SKU одно опорное изображение + N переносов. Ниже компактная рабочая версия:
import requests, time, pathlib
API = "https://api.hiapi.ai/v1/tasks"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY", "Content-Type": "application/json"}
SCENES = {
"lifestyle": ("Place this exact product, unchanged — same bottle, same label — on a "
"white marble bathroom counter, soft morning window light, shallow depth "
"of field, premium lifestyle photography", "4:3"),
"packaging": ("Product family shot: this exact product next to its matching retail box "
"with the same wordmark, pale warm-grey studio background, symmetrical "
"composition, premium packaging photography", "3:2"),
"hand": ("A hand with neutral manicure holding this exact product, unchanged, "
"against a clean warm beige background, soft diffused light", "3:4"),
}
def create(model, inp):
r = requests.post(API, headers=HEADERS, json={"model": model, "input": inp}, timeout=60)
r.raise_for_status()
return r.json()["data"]["taskId"]
def wait(task_id, timeout=600):
deadline = time.time() + timeout
while time.time() < deadline:
d = requests.get(f"{API}/{task_id}", headers=HEADERS, timeout=30).json()["data"]
if d["status"] == "success":
return d["output"][0]["url"]
if d["status"] == "fail":
raise RuntimeError(f"{task_id}: {d.get('error')}")
time.sleep(5)
raise TimeoutError(task_id)
def shoot_sku(sku: str, anchor_url: str, outdir="shots"):
"""anchor_url: your hosted white-background shot for this SKU."""
tasks = {name: create("Nano-Banana-2", {
"prompt": prompt, "image_input": [anchor_url],
"aspect_ratio": ar, "resolution": "1K", "output_format": "png"})
for name, (prompt, ar) in SCENES.items()}
pathlib.Path(outdir).mkdir(exist_ok=True)
for name, tid in tasks.items(): # tasks run server-side in parallel
url = wait(tid) # download before the URL expires
img = requests.get(url, timeout=120).content
pathlib.Path(f"{outdir}/{sku}-{name}.png").write_bytes(img)
print(f"{sku}/{name}: {len(img)} bytes")
shoot_sku("luma-serum-30ml", "https://your-cdn.example.com/luma/anchor.jpg")
Задачи создаются заранее и генерируются параллельно на стороне hiapi; затем цикл собирает их последовательно. Добавьте callback.url в нагрузку создания и полностью удалите wait(), как только у вас появится приёмник webhook.
Расчёт стоимости для реального каталога
Цены ниже взяты с актуальной на момент написания страницы цен hiapi — считайте эту страницу источником истины:
| Модель | Роль в этом рабочем процессе | Цена |
|---|---|---|
nano-banana |
Опорное изображение, быстрые черновики (только текст в изображение) | $0.021 / изображение |
Nano-Banana-2 |
Перенос на основе референса (image_input) |
1K — $0.036 за изображение, 4K — $0.086 за изображение |
Nano-Banana-Pro |
Редактирование с максимальной точностью, до 8 референсных изображений | 1K — $0.057 за изображение |
Каталог из 40 SKU, одно опорное изображение и четыре перенесённых кадра на каждый SKU:
- 40 опорных изображений × $0.021 = $0.84
- 160 переносов × $0.036 = $5.76
- Итого: $6.60 за каталог из 200 визуально согласованных изображений — без съёмочного дня и без пересъёмки при изменении сцен.
Два практических совета для магазина. Во-первых, на выходе вы получаете обычные файлы изображений — вы размещаете их на своём CDN, поэтому ничто в вашем стеке не привязывает карточки товаров к стороннему просмотрщику. Во-вторых, сгенерированные изображения «моделей» синтетические: женщины на фото выше не существует, что обходит логистику модельных релизов — но прежде чем выводить сгенерированные изображения в живой интернет-магазин, ознакомьтесь с действующими условиями базового провайдера (Google) и политикой в отношении AI-изображений на вашем рынке.
Итог
Рабочий процесс, который делает Nano Banana полезной для электронной коммерции, — не один волшебный промпт, а цикл «опора и перенос»: за $0.021 получить хорошее изображение товара от nano-banana, а затем позволить Nano-Banana-2 провести этот точный товар (и это точное лицо) через каждую сцену, которая нужна вашему магазину. Мы прогнали тот же цикл с другой моделью в статье Изображения товаров для электронной коммерции с gpt-image-2: пакетный рабочий процесс на hiapi, если хотите сравнить результаты перед тем, как остановиться на чём-то.
Чтобы попробовать цикл самостоятельно, получите API-ключ, начните с одного SKU, запустите скрипт пакетной обработки выше — на странице модели Nano Banana есть живая песочница и примеры для копирования и вставки, которые выдают первое опорное изображение меньше чем за минуту.
Похожие статьи
Все статьи →-
Руководство по использованию
Руководство по началу работы с seedream-5.0-pro/image-to-image: возможности, цены и ключевые моменты интеграции
Границы возможностей модели редактирования изображений ByteDance, принципы тарификации и практика инженерной интеграции
-
Руководство по использованию
Руководство по использованию seedream-5.0-pro text-to-image: границы возможностей, интеграция API и контроль затрат
Практический взгляд для разработчиков: от ключевых параметров до оценки стоимости $0.05 за изображение
-
Руководство по использованию
Руководство по началу работы с Hailuo 2.3 Fast для генерации видео из изображений: границы возможностей, цены и практика интеграции
Ключевые моменты выбора и интеграции модели MiniMax для генерации видео из изображений для разработчиков