HiAPI
Блог

Руководство по использованию

flux-2 для карточек товаров в электронной коммерции: практическое руководство по API hiapi

Создавайте готовые к публикации изображения товаров с помощью API flux-2/text-to-image на hiapi — чистые снимки на белом фоне, соблюдение ограничений промпта и пакетные циклы для всего каталога.

Jul 1, 2026
flux-2 для карточек товаров в электронной коммерции: практическое руководство по API hiapi

Кратко

  • Что это: практическое руководство по созданию изображений товаров для электронной коммерции с помощью flux-2/text-to-image на hiapi. Каждое изображение на этой странице создано по точному промпту, напечатанному непосредственно над ним — никаких заимствованных демо — так что вы можете воспроизвести каждое.
  • Почему flux-2 подходит для товарных снимков: он опирается на соблюдение промпта и высокую точность, а именно это и нужно для работы с каталогом — точное количество предметов, определённые цвета, чистый бесшовный фон и пустые (без текста) этикетки строго соблюдаются.
  • Факты о модели (проверены в API): flux-2 работает на асинхронной конечной точке задач (/v1/tasks). input.resolution принимает значение в мегапикселях — 0.5 MP, 1 MP, 2 MP или 4 MP — а не 1K/2K. aspect_ratio необязателен и принимает 1:1, 3:2, 16:9 и другие значения.
  • Цены (за изображение): 0.5 MP — $0.0375, 1 MP — $0.05, 2 MP — $0.075, 4 MP — $0.125. Актуальные цены см. в разделе Цены.
  • Как запустить: отправьте POST-запрос к API задач, опрашивайте до статуса success, затем скачайте изображение из output[0].url (этот URL истекает — сразу сохраните байты). Полный скрипт для копирования и вставки приведён в конце, включая пакетный цикл.

Почему flux-2 подходит для товарной фотографии

Большинство моделей текст-в-изображение могут нарисовать красивую кружку. Проблема в электронной коммерции не в «красоте», а в точности. Товарным листингам нужен правильный цвет, правильное количество предметов, чистый фон с местом для вашего собственного текста и этикетки, остающиеся пустыми, чтобы вы могли позже добавить настоящий текст. Когда модель импровизирует — рисует лишнюю бутылку, придумывает текст на этикетке, тонирует белый фон — изображение нельзя публиковать.

flux-2 отмечен как соблюдающий промпт и высокоточный, что на практике означает склонность строго следовать формулировке промпта. Именно это и важно для изображений каталога: вы записываете ограничения, а модель им следует, а не «творчески интерпретирует» их. Приведённые ниже рецепты построены на этом — каждый опирается на конкретное ограничение (количество, цвет, компоновка), чтобы вы сами увидели соблюдение.

Как читать эти рецепты

Каждый рецепт состоит из трёх частей: строка цели, точный промпт (скопируйте как есть) и изображение, которое он создаёт. Каждый промпт написан мной и прогнан на flux-2 через реальный API задач. Несколько привычек, которые стабильно работают с этой моделью:

  • Явно указывайте фон. «Бесшовный светло-серый студийный фон» лучше, чем полагаться на случай, и делает изображение сразу пригодным для страницы товара (PDP).
  • Пишите «без текста, без логотипов», когда нужны пустые этикетки. flux-2 это соблюдает, а значит настоящий бренд можно добавить на следующем этапе.
  • Давайте исчисляемые и проверяемые ограничения. «Ровно три бутылки», «слева янтарная, в центре прозрачная, справа бирюзовая» — конкретные указания как раз и раскрывают соблюдение.
  • Оставляйте отрицательное пространство в промпте («достаточно пустого места сверху для заголовка»), особенно когда изображение будет под наложенным текстом.

Рецепт 1 — чистое изображение на белом фоне

Цель: базовое изображение для листинга — один товар, бесшовный фон, равномерные поля, готовое к размещению на странице товара.

A single matte-white ceramic coffee mug centered on a seamless light-grey studio background, three-quarter front angle, empty and unbranded. Soft even top-light with one subtle rim highlight down the left edge, a soft grounded contact shadow beneath. Studio e-commerce packshot, perfectly centered, wide even margins on all sides, photoreal, high detail, no text, no logo.

Поля и центрирование напрямую следуют из промпта — явно требуя их, вы получаете обрезку, пригодную для сетки листингов.

Рецепт 2 — тест на соблюдение промпта

Цель: доказать, что модель следует точным, исчисляемым указаниям — именно поэтому для товарной работы в первую очередь выбирают flux-2.

Product photo of exactly three glass spray bottles standing in a row on a white acrylic surface: the left bottle filled with pale amber liquid, the middle bottle filled with clear liquid, the right bottle filled with soft teal liquid. All three have matte-black fine-mist pump tops and blank labels with no writing. Even frontal studio light, soft reflections on the acrylic, seamless white background. Photoreal commercial product photography, sharp focus, no text anywhere in the image.

Посчитайте: три бутылки, а не четыре. Жидкости слева направо — янтарная, прозрачная, бирюзовая — в правильном порядке. Распылители матово-чёрные. Этикетки пустые, поэтому позже можно добавить настоящий текст. Вот и отдача — вы задаёте, модель соблюдает, изображение готово к использованию.

Рецепт 3 — образ жизни / сюжетное изображение

Цель: поместить товар в сцену, не потеряв его — изображение «в использовании», которое идёт рядом с белым снимком в листинге.

Lifestyle e-commerce shot of a tan leather crossbody bag resting on a pale oak cafe table beside a folded newspaper and a cup of espresso, soft morning window light from the left, warm out-of-focus cafe interior in the background with creamy bokeh. The bag is the clear hero, sharp and well-lit, staged naturally but uncluttered. Photoreal, editorial product-in-use photography, warm neutral palette, shallow depth of field, no visible brand marks or text.

Указание героя («сумка — явный герой, резкая») и размытие всего остального делает товар хорошо различимым, но при этом рассказывает историю — именно тот баланс, который нужен сюжетному изображению.

Рецепт 4 — набор снимков PDP под разными углами

Цель: набор ракурсов для страницы товара — несколько согласованных видов одного предмета, совпадающих по освещению и масштабу.

A clean product-detail-page angle set of one pair of low-top canvas sneakers in off-white, shown as three separate views arranged left to right on a seamless light-grey background: a straight side profile, a three-quarter front angle, and a top-down overhead view. Consistent soft studio lighting and identical scale across all three, even spacing, soft contact shadows. Catalog-grade e-commerce photography, photoreal, crisp, unbranded, no text or labels.

Требование «согласованное освещение и одинаковый масштаб во всех трёх видах» заставляет набор выглядеть как один товар, а не три разрозненных рендера. Это не замена настоящей установке для 360-градусной съёмки, но быстрый способ набросать макет PDP перед официальной фотосессией.

Запуск flux-2 через API задач

flux-2 использует асинхронный протокол задач hiapi — вы создаёте задачу, опрашиваете её, затем скачиваете результат. Единственное, что нужно сделать правильно: resolution задаётся в мегапикселях. Отправляйте "1 MP", а не "1K", иначе API вернёт 400 с сообщением, что значение должно быть одним из 0.5 MP / 1 MP / 2 MP / 4 MP.

1. Создание задачи

curl -s https://api.hiapi.ai/v1/tasks \
  -H "Authorization: Bearer $HIAPI_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "flux-2/text-to-image",
    "input": {
      "prompt": "A single matte-white ceramic coffee mug centered on a seamless light-grey studio background, three-quarter front angle, soft even top-light, photoreal e-commerce packshot, no text, no logo",
      "aspect_ratio": "1:1",
      "resolution": "1 MP"
    }
  }'
# -> {"code":200,"data":{"taskId":"tk-hiapi-..."},"message":"success"}

2. Опрос до завершения, затем скачивание

import os, time, requests

TOKEN = os.environ["HIAPI_TOKEN"]
BASE = "https://api.hiapi.ai/v1/tasks"
HEADERS = {"Authorization": f"Bearer {TOKEN}"}


def generate(prompt, aspect_ratio="1:1", resolution="1 MP"):
    # create
    r = requests.post(BASE, headers=HEADERS, json={
        "model": "flux-2/text-to-image",
        "input": {"prompt": prompt, "aspect_ratio": aspect_ratio, "resolution": resolution},
    }).json()
    task_id = r["data"]["taskId"]

    # poll (a single image usually lands well under two minutes)
    deadline = time.time() + 600
    while time.time() < deadline:
        task = requests.get(f"{BASE}/{task_id}", headers=HEADERS).json()["data"]
        if task["status"] == "success":
            # output[0].url is a temporary link — download the bytes now
            url = task["output"][0]["url"]
            return requests.get(url, timeout=120).content
        if task["status"] == "fail":
            raise RuntimeError(task.get("error"))
        time.sleep(5)
    raise TimeoutError(task_id)


img = generate("A single matte-white ceramic coffee mug on a seamless light-grey background, photoreal e-commerce packshot, no text")
open("mug.jpg", "wb").write(img)

URL в output[0].url содержит метку времени expireAt — это кратковременная ссылка. Сразу скачайте байты и отправьте их в собственное хранилище; не встраивайте ссылку горячей ссылкой в онлайн-листинги товаров.

Пакетная генерация всего каталога

Для реального магазина вы делаете не одно изображение, а одно на каждый SKU. Ведите список промптов, переиспользуйте функцию generate() выше и сохраняйте каждый результат с именем его SKU:

catalog = {
    "SKU-1001": "A single matte-white ceramic coffee mug on a seamless light-grey studio background, three-quarter angle, soft even top-light, photoreal e-commerce packshot, no text, no logo",
    "SKU-1002": "A tan leather crossbody bag on a seamless light-grey studio background, front-on, soft studio light, grounded contact shadow, photoreal packshot, no visible brand marks",
    "SKU-1003": "A pair of off-white low-top canvas sneakers, side profile, seamless light-grey background, crisp catalog lighting, photoreal, unbranded, no text",
}

for sku, prompt in catalog.items():
    img = generate(prompt, aspect_ratio="1:1", resolution="1 MP")
    open(f"{sku}.jpg", "wb").write(img)
    print(f"{sku} done")

Прежде чем масштабироваться, стоит знать несколько вещей:

  • Разрешение определяет стоимость. При 1 MP — $0.05 за изображение; переходите на 2 MP ($0.075) или 4 MP ($0.125) только для флагманских изображений, где дополнительная детализация оправдана. Каталог на 200 SKU при 1 MP обойдётся примерно в $10. Перед составлением бюджета проверьте актуальные цифры в разделе Цены.
  • Запускайте задачи параллельно. Каждый SKU — независимая задача; создайте несколько задач и опрашивайте их параллельно, а не по одной, и большие пакеты завершатся за очень короткое астрономическое время.
  • Соблюдайте единообразную фразу «стиля». Обратите внимание на общий хвост в каждом промпте выше («бесшовный светло-серый студийный фон… фотореалистичный пакшот, без текста»). Зафиксируйте эту формулировку, чтобы пакет изображений выглядел как один каталог, а не солянка.

Ключевые выводы

  • Сильная сторона flux-2 в товарной работе — строгое выполнение ваших буквальных требований: точное количество, точные цвета, пустые этикетки — поэтому явно записывайте ограничения, чтобы модель их соблюдала.
  • Всегда указывайте фон в промпте и оставляйте отрицательное пространство; это делает рендеры сразу пригодными для листингов товаров.
  • В API задач передавайте resolution в мегапикселях (1 MP), опрашивайте /v1/tasks/{id} до success и скачивайте до истечения output[0].url.
  • Цена растёт с разрешением — для пакетной генерации каталога используйте 1 MP, а 2 MP/4 MP оставьте для флагманских изображений.

Готовы попробовать? Получите ключ, укажите в model значение flux-2/text-to-image и перед пакетной генерацией каталога ознакомьтесь с текущими тарифами на странице цен.

Похожие статьи

Все статьи →

Начните работать с постоянными артефактами ИИ

Получите API-ключ и вызывайте модели изображений, видео и аудио через один API на основе tasks.

Читать документацию API