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

FLUX.2 pro и LoRA в n8n: автоматизация фото товара, 3 маршрута

Подключить LoRA к FLUX.2 [pro] нельзя. Один и тот же товар в десятках сцен дают референсы [pro] либо LoRA на [klein] и [dev]; каркас воркфлоу n8n общий.

A
••11 мин чтения•Генерация изображений ИИ
Три маршрута для FLUX.2 pro и LoRA в n8n: столбцы цены кадра 1 Мп — [pro] с референсом $0,045, [klein] с LoRA $0,015, fal с LoRA $0,021

Подключить LoRA к FLUX.2 [pro] нельзя: в запросе к этой модели нет поля для LoRA ни в API Black Forest Labs (BFL), ни на fal. Один и тот же товар в десятках сцен [pro] удерживает по опорным изображениям — референсам, до 8 штук на запрос. Сама LoRA работает на соседних моделях: на FLUX.2 [klein] через эндпоинты -finetuned у BFL и на FLUX.2 [dev] у fal. По состоянию на 2 октября 2026 года для воркфлоу в n8n есть три рабочих маршрута:

МаршрутЧто удерживает товарЭндпоинтЦена кадра 1 МпКогда брать
A. FLUX.2 [pro] с референсами1–8 фото товара в каждом запросеapi.bfl.ai/v1/flux-2-pro$0,045 с одним референсоммного SKU, по несколько кадров на товар
B. LoRA на FLUX.2 [klein] у BFLLoRA, которую вы обучили сами и загрузилиapi.bfl.ai/v1/flux-2-klein-9b-finetuned$0,015есть GPU и опыт обучения, большой объём
C. LoRA на FLUX.2 [dev] у falLoRA, обученная на стороне falqueue.fal.run/fal-ai/flux-2/lora$0,021 плюс $6,40 за обучение одной LoRAсвоего GPU нет, сотни кадров на один товар или стиль

Каркас в n8n у всех трёх одинаковый: HTTP Request отправляет задачу, Wait делает паузу, второй HTTP Request опрашивает статус, If проверяет готовность, третий HTTP Request скачивает файл. Меняются адрес, заголовок авторизации и тело запроса.

Схема ниже собрана по документации BFL, fal и n8n и на реальных ключах не запускалась. Прежде чем отдавать ей каталог, прогоните один товар и сравните списание с расчётом.

Можно ли подключить LoRA к FLUX.2 [pro]: такого поля в запросе нет

Нет. Запрос к /v1/flux-2-pro принимает prompt, input_image и input_image_2…input_image_8, width, height, seed, safety_tolerance, output_format, webhook_url, webhook_secret и disable_pup. Полей finetune_id, finetune_strength или массива loras среди них нет. На fal картина та же: у fal-ai/flux-2-pro и его варианта /edit параметра loras нет.

Прямой фразы «[pro] не поддерживает LoRA» в документации BFL нет. Вывод следует из двух вещей: поля нет в схеме запроса, а в списке эндпоинтов для дообученных моделей перечислены только варианты [klein]. Эндпоинтов -finetuned для [pro], [max] и [flex] в нём нет.

Путаница возникает из-за названий. «FLUX.2 LoRA» действительно существует, но это [klein] у BFL и [dev] у fal. На сторонних страницах эти возможности нередко приписывают всему семейству, в том числе [pro]. Поэтому проверяйте не обзор модели, а схему конкретного эндпоинта на той площадке, где собираетесь платить.

То же правило относится к FLUX 3 Image, которую BFL выпустила 1 октября 2026 года: принимает ли она LoRA, решает схема её эндпоинта, а не описание модели.

Какой маршрут выбрать: референсы [pro], LoRA на [klein] или на fal

Решают три вещи: сколько у вас разных товаров, сколько кадров нужно на каждый и готовы ли вы обучать LoRA сами.

Много SKU и по 3–10 кадров на товар — маршрут A. Обучать LoRA на каждый артикул ради нескольких сцен невыгодно: на fal одно обучение стоит $6,40, а десять кадров [pro] с одним референсом — $0,45. Референс подставляется в запрос прямо из таблицы каталога, новый товар не требует подготовки. Через API [pro] принимает до 8 опорных изображений, на выходе до 4 Мп. BFL описывает [pro] как модель для производственных объёмов.

Несколько ключевых товаров или единый стиль бренда и сотни кадров — маршруты B или C. LoRA окупается, когда одна обученная модель обслуживает длинную серию: сезонные сцены одного флагманского товара или общая манера съёмки для всей линейки. Учтите, что LoRA стиля закрепляет свет, фон и подачу, но не конкретный товар. Если вместе с ней нужен ещё и референс товара, расчёт меняется (см. следующий раздел).

Маршрут B, если у вас есть видеокарта и вы умеете обучать. BFL сама ничего не обучает: вы готовите LoRA в AI-Toolkit или Diffusers на базе FLUX.2 [klein] Base, загружаете файл .safetensors в Dashboard и вызываете эндпоинт -finetuned. По руководству BFL по обучению минимум для klein 4B Base — 12 ГБ VRAM и 32 ГБ оперативной памяти, для 9B Base — 22 ГБ VRAM и 64 ГБ. Взамен вы получаете самый дешёвый кадр и один счёт у BFL. Ограничения: Public Beta (цены, параметры и имена эндпоинтов могут измениться до общего релиза) и одна LoRA на запрос.

Маршрут C, если GPU нет. fal обучает LoRA на FLUX.2 [dev] по архиву фотографий и сразу отдаёт ссылку на веса. В одном запросе можно совместить до 3 LoRA, например товар и стиль бренда. Цена — отдельный счёт у второй площадки и $6,40 за каждое обучение на 1 000 шагов.

Разницу в качестве между [pro], [klein] и [dev] цифры из прайса не показывают. Её выясняет только пробная партия на ваших товарах.

Сколько стоит один кадр: от $0,015 до $0,045 при 1 Мп

При выходном кадре 1 Мп (1024×1024) и референсах не больше 1 Мп каждая цена за изображение получается такой:

ЗапросФормулаЦена кадра
[pro], только текст$0,03$0,030
[pro] + 1 референс$0,03 + $0,015$0,045
[pro] + 2 референса$0,03 + 2 × $0,015$0,060
[pro], выход 2 Мп + 1 референс$0,03 + $0,015 + $0,015$0,060
[klein] 9B -finetuned, только текст$0,015$0,015
[klein] 9B -finetuned + 1 референс$0,015 + $0,002$0,017
fal [dev] + LoRA, только текст$0,021 за Мп$0,021
fal [dev] + LoRA + 1 референс (/lora/edit)$0,021 + $0,021$0,042

Цены BFL взяты из её прайса: первый мегапиксель выхода, каждый следующий и каждый референс считаются отдельно, разрешение округляется вверх до целого мегапикселя, 1 Мп = 1024×1024. Эндпоинты -finetuned на время Public Beta тарифицируются как базовые. Цены fal указаны на страницах fal-ai/flux-2/lora и fal-ai/flux-2-trainer: обучение стоит 0,0064 × число шагов, то есть $6,40 при 1 000 шагов. Всё в долларах США по состоянию на 2 октября 2026 года.

С какого кадра LoRA на fal дешевле референса [pro]: с 267-го

Для одного товара сравниваются [pro] с одним референсом и LoRA на fal без референса:

6,40 + 0,021 × n < 0,045 × n, откуда n > 266,7.

Расчёт границы окупаемости: pro с референсом стоит $0,045 за кадр, LoRA на fal — $6,40 за обучение и $0,021 за кадр; при 266 кадрах дешевле pro, при 267 — LoRA

Проверка по обе стороны границы: при n = 266 LoRA обходится в $11,986, [pro] — в $11,97, дешевле [pro]. При n = 267 LoRA стоит $12,007, [pro] — $12,015, дешевле LoRA. Значит, одна обученная LoRA окупается с 267-го кадра.

Если LoRA закрепляет стиль, а товар всё равно подаётся референсом через /lora/edit, граница уходит далеко: 6,40 + 0,042 × n < 0,045 × n даёт n > 2 133,3, то есть LoRA выгоднее только с 2 134-го кадра.

Пример: 500 кадров на один товар и на сто товаров

Сценарий (пример)[pro] + 1 референс[klein] 9B + LoRAfal [dev] + LoRA
500 кадров одного товара500 × $0,045 = $22,50500 × $0,015 = $7,50500 × $0,021 + $6,40 = $16,90
100 товаров по 5 кадров$22,50$7,50 и 100 обучений на своём GPU$10,50 + 100 × $6,40 = $650,50

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

Это арифметика по прайсу. В неё не входят брак и повторные генерации, работа по подготовке датасета, собственный GPU и электричество в маршруте B. Граница в 267 кадров сдвигается при другом числе шагов обучения и другом разрешении.

Каркас воркфлоу в n8n: отправка, Wait, опрос, скачивание

API BFL и очередь fal асинхронные: запрос на генерацию возвращает не картинку, а адрес, по которому нужно спрашивать о готовности. Отдельная нода для BFL в n8n не понадобится, хватит базовых:

  1. Источник товаров — таблица или база со строками: название, ссылка на фото товара, описание сцены.
  2. Loop Over Items — делит каталог на партии.
  3. HTTP Request Submit — метод POST, тело JSON, авторизация через учётные данные Header Auth (Authentication → Generic Credential Type → Header Auth).
  4. Wait — режим After Time Interval, несколько секунд.
  5. HTTP Request Poll — GET по адресу из ответа Submit, с тем же заголовком.
  6. If — готово, ошибка или ещё ждём. В последнем случае ветка возвращается в Wait.
  7. HTTP Request Download — GET по ссылке на результат, Response Format: File, чтобы картинка попала в бинарное поле.
  8. Хранилище — нода вашего диска или объектного хранилища и запись ссылки обратно в таблицу.
Каркас воркфлоу n8n: HTTP Request Submit, Wait, HTTP Request Poll, If и HTTP Request Download с возвратом в Wait, отличия заголовков и полей у BFL и fal, лимит 24 активных задач

Ключ храните в учётных данных, а не в поле URL и не в теле запроса. У BFL заголовок называется x-key, у fal — Authorization со значением Key <ваш ключ>.

Интервал в Wait выбирайте сами: в официальном примере BFL опрос идёт каждые 0,5–1 секунду, минимальный интервал документация не задаёт. По документации n8n при паузе короче 65 секунд данные выполнения остаются в памяти и не выгружаются в базу. Добавьте счётчик попыток, чтобы цикл не крутился бесконечно, если задача зависла.

Маршрут A: FLUX.2 [pro] с референсами товара

Submit: POST на https://api.bfl.ai/v1/flux-2-pro. Это зафиксированный снимок модели; /v1/flux-2-pro-preview указывает на самую свежую версию. Для каталога, где кадры должны быть воспроизводимы от запуска к запуску, логичнее снимок.

json
{
  "prompt": "Флакон из первого изображения стоит на мраморной столешнице, мягкий дневной свет слева, фон размыт",
  "input_image": "{{ $json.product_photo_url }}",
  "input_image_2": "{{ $json.second_angle_url }}",
  "width": 1024,
  "height": 1024,
  "output_format": "jpeg"
}

Референсы передаются ссылкой или в base64. Каждый стоит $0,015, поэтому второй ракурс добавляйте там, где он действительно нужен.

Ответ содержит id, polling_url, а также cost, input_mp и output_mp — по ним удобно сверить расчёт с первым же запросом.

Poll: GET по адресу

text
{{ $('Submit').item.json.polling_url }}

Ссылаться нужно именно на ноду Submit: после первого круга в $json лежит уже ответ опроса, а polling_url в нём нет. Собирать адрес опроса вручную нельзя — для api.bfl.ai и региональных api.eu.bfl.ai, api.us.bfl.ai BFL требует использовать тот, что вернулся в ответе.

If: {{ $json.status }} равен Ready — идём скачивать {{ $json.result.sample }}. Равен Error или Failed — пишем строку в журнал ошибок и переходим к следующему товару. Любое другое значение — обратно в Wait.

Маршрут B: эндпоинт -finetuned для LoRA на FLUX.2 [klein]

Подготовка вне n8n: обучить LoRA на базе FLUX.2 [klein] Base, в Dashboard открыть Customization → Finetunes, нажать Add Finetune, выбрать ту же базовую модель и загрузить .safetensors. Имя, которое вы зададите, и есть finetune_id. Там же можно указать триггерную фразу.

В n8n меняются только адрес и два поля тела:

json
{
  "prompt": "ohwx флакон на мраморной столешнице, мягкий дневной свет слева",
  "finetune_id": "my-product-lora",
  "finetune_strength": 1.0,
  "width": 1024,
  "height": 1024
}

Адрес — https://api.bfl.ai/v1/flux-2-klein-9b-finetuned или другой из шести эндпоинтов -finetuned. Он обязан совпадать с базовой моделью, для которой загружена LoRA: запрос к flux-2-klein-4b-finetuned с LoRA от 9B завершится ошибкой.

Три детали из документации BFL:

  • Триггерную фразу (в примере ohwx) нужно вставлять в промпт, иначе LoRA с фразой не сработает.
  • finetune_strength по умолчанию 1,0. Если каждый кадр похож на обучающую выборку независимо от промпта, пройдите диапазон 0,7–0,9 с одним и тем же seed.
  • Остальные параметры, включая input_image, работают как у базового эндпоинта, так что LoRA можно сочетать с референсом.

Опрос, проверка статуса и скачивание — те же ноды, что в маршруте A.

Маршрут C: обучение и генерация с LoRA на fal

Здесь два воркфлоу. Первый запускается один раз на товар или стиль и обучает LoRA. Submit: POST на https://queue.fal.run/fal-ai/flux-2-trainer.

json
{
  "image_data_url": "https://example.com/product-dataset.zip",
  "steps": 1000,
  "default_caption": "ohwx флакон духов"
}

image_data_url — ссылка на zip-архив с фотографиями; fal советует не меньше 10 изображений. Подписи можно положить в архив текстовыми файлами с теми же именами. Если подписей нет и default_caption не задан, обучение завершится ошибкой. Рекомендаций именно для товарных датасетов у fal нет. В результате придёт diffusers_lora_file.url — сохраните эту ссылку в таблице рядом с товаром.

Второй воркфлоу генерирует кадры. Submit: POST на https://queue.fal.run/fal-ai/flux-2/lora.

json
{
  "prompt": "ohwx флакон духов на мраморной столешнице, мягкий дневной свет слева",
  "loras": [
    { "path": "{{ $json.lora_url }}", "scale": 1 }
  ],
  "image_size": { "width": 1024, "height": 1024 },
  "output_format": "jpeg"
}

Массив loras принимает до 3 элементов, scale меняется от 0 до 4. Суммарный размер LoRA больше 2 ГБ увеличивает цену на 50 % за каждый следующий гигабайт. Чтобы добавить референс товара, используйте fal-ai/flux-2/lora/edit с массивом image_urls (до 4 изображений).

Очередь fal отвечает иначе, чем BFL, поэтому ветка опроса на шаг длиннее:

  1. Ответ Submit содержит request_id, status_url и response_url.
  2. Poll — GET по status_url. Статус идёт от IN_QUEUE через IN_PROGRESS к COMPLETED.
  3. If проверяет два условия: status равен COMPLETED и поле error пустое. Неудачный запрос тоже заканчивается статусом COMPLETED, только с заполненным error.
  4. Ещё один HTTP Request — GET по response_url. Ссылка на картинку лежит в images[0].url.
  5. Download скачивает файл.

Лимит в 24 задачи и ссылка на 10 минут: что это меняет в схеме

Оба ограничения BFL требуют отдельных решений в схеме, иначе воркфлоу начнёт падать на первом же большом каталоге.

24 активные задачи одновременно. Двадцать пятый запрос получит код 429 и будет отклонён, пока не завершится одна из предыдущих задач. В Loop Over Items задайте размер партии не больше 24 и замкните цикл так, чтобы следующая партия уходила только после скачивания предыдущей. В самой ноде HTTP Request есть Options → Batching с полями Items per Batch и Batch Interval в миллисекундах. Они разносят отправку по времени, но не знают, завершились ли прошлые задачи, поэтому одной этой настройки мало. На случай 429 включите повтор с растущей паузой.

Ссылка result.sample живёт 10 минут. Она подписана, отдаётся с адресов delivery.*.bfl.ai, без CORS, и BFL прямо пишет, что показывать её конечным пользователям нельзя. Скачивайте файл в той же ветке сразу после статуса Ready и кладите в своё хранилище. Схема «сохранить ссылку в таблицу и скачать ночным заданием» не сработает. Если n8n стоит за сетевым экраном, BFL советует разрешить весь шаблон delivery.*.bfl.ai, а не отдельные региональные адреса.

Код 402 означает, что закончились кредиты. Кредиты у BFL покупаются заранее, 1 кредит равен $0,01. Повторять запрос бессмысленно — остановите воркфлоу и отправьте себе уведомление.

Вместо опроса обе площадки умеют присылать результат вебхуком: у BFL это поле webhook_url, в n8n ему соответствует Wait в режиме On Webhook Call. Схема получается короче, но вашему n8n нужен адрес, доступный извне.

Что проверять вручную: логотип, текст на этикетке, мелкие надписи

Ни один из трёх маршрутов не гарантирует, что товар будет воспроизведён с точностью до буквы. Документация BFL описывает сохранение объекта между сценами, но не обещает точной передачи логотипа, текста на этикетке и мелкого шрифта. Для LoRA таких обещаний нет ни у BFL, ни у fal.

Для карточки товара это критично: искажённое название или неверный объём на этикетке — уже неверная информация о товаре. Поэтому перед сохранением стоит добавить в воркфлоу шаг проверки:

  • логотип и название бренда — сверить с оригиналом по буквам;
  • состав, объём, вес и другие цифры на упаковке;
  • цвет товара, особенно если он входит в название варианта;
  • форму и пропорции: число кнопок, расположение ручек, крышки, швов;
  • лишние детали, которых у товара нет.

Практичная схема: готовые кадры уходят в папку «на проверку», а в таблицу публикации попадают только после отметки человека. Если точный текст на упаковке обязателен, этикетку можно накладывать из исходного макета уже после генерации сцены.

Короткие ответы о LoRA, FLUX.2 и n8n

Можно ли применить несколько LoRA в одном запросе?

У BFL — нет: эндпоинты -finetuned принимают один finetune_id. На fal — да, массив loras вмещает до 3 элементов.

Можно ли использовать LoRA на FLUX.2 [klein] 9B в коммерческих проектах?

Однозначного ответа в документации BFL нет. Веса [klein] 4B распространяются по лицензии Apache 2.0, веса 9B — по FLUX Non-Commercial License. Условия коммерческого использования LoRA на базе 9B через API BFL на страницах документации не расписаны, поэтому уточните их в лицензионных материалах BFL до запуска. Страница модели на fal отмечает fal-ai/flux-2/lora как пригодный для коммерческого использования, а веса [dev] для собственного развёртывания BFL выдаёт по некоммерческой лицензии: условия зависят от того, где работает модель.

Доступны ли BFL и fal из России и как их оплатить?

Ни доступность сервисов, ни способы оплаты для пользователей из России в их документации не описаны. До сборки воркфлоу убедитесь, что можете зарегистрироваться, получить ключ и пополнить баланс на обеих площадках, которые собираетесь использовать.

Нужна ли вообще FLUX.2, если задача — просто картинки для карточек?

Не обязательно. Если единообразие товара между сценами для вас не главное требование, сначала сравните модели по своей задаче: в этом поможет материал о том, как выбрать GPT Image 2, Nano Banana, Midjourney или FLUX.2.