Saltar al contenido

Flux 2 Pro y LoRA en n8n: automatizar fotos de producto, 3 rutas

FLUX.2 [pro] no tiene entrada para LoRA. Muchos SKU con pocas tomas: [pro] con imágenes de referencia. Pocos productos y mucho volumen: LoRA en [klein] o [dev].

A
••14 min de lectura•Generación de imágenes con IA
Tres bloques sobre una base con las etiquetas [pro] referencias, [klein] LoRA en BFL y [dev] LoRA en fal, junto al título FLUX.2 + LoRA en tres rutas

FLUX.2 [pro] no acepta LoRA. A 2 de octubre de 2026, su endpoint en la API de Black Forest Labs (BFL) no tiene ningún campo para cargar uno, y la versión alojada en fal tampoco. Lo que [pro] ofrece para que un producto se vea igual en muchas escenas son imágenes de referencia: hasta 8 por petición. Los LoRA sí existen dentro de la familia FLUX.2, pero en otros modelos: FLUX.2 [klein] en los endpoints -finetuned de BFL, todavía en Public Beta, y FLUX.2 [dev] en fal.

Por eso «FLUX.2 pro con LoRA en n8n» son en realidad tres rutas. Las tres se montan sobre la misma cadena de cuatro pasos (enviar, esperar, consultar, descargar) y solo cambian la URL, la cabecera y unos pocos campos:

RutaCuándo encajaQué mantiene igual el productoCoste por imagen a 1 MP
1. FLUX.2 [pro] en BFLMuchos SKU con pocas tomas cada unoinput_image: la foto real del producto0,045 $ con una referencia
2. FLUX.2 [klein] -finetuned en BFLPocos productos o una estética de marca con mucho volumen, y puedes entrenar el LoRA por tu cuentafinetune_id: tu LoRA subido al panel de BFL0,015 $ con [klein] 9B, solo texto
3. FLUX.2 [dev] en falEl mismo caso, sin GPU propia: fal entrena y sirve el LoRAloras: hasta 3 por petición0,021 $ más 6,40 $ por cada LoRA entrenado

Los precios son los que publican BFL y fal en dólares estadounidenses; el desglose está en el apartado de costes. El flujo de n8n que aparece más abajo está montado a partir de la documentación oficial de BFL, fal y n8n: es un plano de montaje, no un workflow exportado ni ejecutado de principio a fin, así que valida cada nodo con una sola imagen antes de lanzar un lote.

¿FLUX.2 [pro] admite LoRA? No: solo imágenes de referencia

No. La referencia del endpoint POST https://api.bfl.ai/v1/flux-2-pro admite estos campos: prompt, input_image, input_image_2 … input_image_8, width, height, seed, safety_tolerance, output_format, webhook_url, webhook_secret y disable_pup. No hay finetune_id, finetune_strength ni ningún otro parámetro de LoRA. BFL no lo dice con una frase expresa; se deduce del esquema y de que su guía de inferencia con LoRA solo enumera endpoints de [klein]. En fal ocurre lo mismo: fal-ai/flux-2-pro y su variante /edit no tienen el parámetro loras.

La confusión tiene una explicación sencilla: «FLUX.2 admite LoRA» es cierto para la familia, pero no para cada modelo. Dicho con precisión:

  • FLUX.2 [pro], [max] y [flex]: sin LoRA en la API. La coherencia del producto se consigue con edición con varias referencias: hasta 8 imágenes por API (10 en el playground), enviadas como URL o en base64, con salida de hasta 4 MP.
  • FLUX.2 [klein]: LoRA en la API de BFL mediante los endpoints -finetuned. Un solo LoRA por petición, que entrenas tú y subes al panel.
  • FLUX.2 [dev]: BFL no lo sirve por API; en fal hay entrenamiento alojado e inferencia con hasta 3 LoRA.

BFL publicó FLUX 3 Image el 1 de octubre de 2026; si acepta LoRA no consta en la documentación disponible a 2 de octubre, y los endpoints de FLUX.2 siguen listados y con precio.

Qué ruta elegir: muchos SKU, referencias; pocos productos, LoRA

La decisión depende de cuántas imágenes vas a sacar de cada producto, no del tamaño total del catálogo.

Muchos SKU con pocas tomas cada uno: [pro] con referencias. No hay nada que entrenar: la foto real del producto viaja en input_image y cada SKU nuevo es solo una fila más en tu hoja de cálculo. Con un LoRA por producto pagarías el entrenamiento por cada SKU antes de generar la primera imagen. Ejemplo: 100 SKU con 5 escenas cada uno son 500 imágenes; con [pro] y una referencia cuestan 500 × 0,045 $ = 22,50 $, mientras que entrenar 100 LoRA en fal a 1.000 pasos son 100 × 6,40 $ = 640 $ solo en entrenamiento.

Pocos productos estrella o una estética de marca, con mucho volumen: LoRA. El coste fijo del entrenamiento se reparte entre cientos de imágenes y el precio por imagen baja. Con los precios de lista, un LoRA entrenado en fal empieza a salir más barato que [pro] con una referencia a partir de 267 imágenes por LoRA; el cálculo está en el apartado siguiente.

Entre las dos rutas con LoRA decide dónde se entrena:

  • [klein] -finetuned en BFL si quieres una sola factura y puedes entrenar por tu cuenta. BFL no entrena por ti: usas AI-Toolkit o Diffusers sobre un modelo [klein] Base y subes el .safetensors. Su guía de entrenamiento pide como mínimo una GPU NVIDIA con 12 GB de VRAM y 32 GB de RAM para [klein] 4B Base, y 22 GB de VRAM y 64 GB de RAM para 9B Base.
  • [dev] en fal si no tienes GPU: envías un zip de fotos, fal entrena el LoRA y lo usas en el endpoint de inferencia.
Diagrama de decisión con tres rutas: FLUX.2 pro con imágenes de referencia para muchos SKU, klein -finetuned en BFL si entrenas tu propio LoRA y dev en fal con entrenamiento alojado

Las diferencias de calidad entre [pro], [klein] y [dev] no se deducen de los precios ni de la documentación. Antes de comprometerte con una ruta, genera el mismo grupo pequeño de escenas con cada candidata y compáralas con tu producto real. Si todavía estás decidiendo entre FLUX.2 y otras familias de modelos, la comparativa sobre cómo elegir GPT Image 2, Nano Banana, Midjourney o FLUX.2 cubre ese paso previo.

Cuánto cuesta cada imagen: de 0,015 $ a 0,045 $ a 1 MP

Con salida de 1 MP (1024 × 1024) y referencias de hasta 1 MP, cada imagen cuesta entre 0,015 $ y 0,045 $ según la ruta. Son precios de lista a 2 de octubre de 2026:

Ruta y configuraciónCálculoPor imagen500 imágenes
[pro], solo texto0,03 $0,03 $15,00 $
[pro] con 1 referencia0,03 $ + 0,015 $0,045 $22,50 $
[pro] con 2 referencias0,03 $ + 2 × 0,015 $0,06 $30,00 $
[pro], salida de 2 MP con 1 referencia0,03 $ + 0,015 $ + 0,015 $0,06 $30,00 $
[klein] 9B -finetuned, solo texto0,015 $0,015 $7,50 $ (sin contar tu entrenamiento)
[klein] 9B -finetuned con 1 referencia0,015 $ + 0,002 $0,017 $8,50 $
fal [dev] con LoRA, solo texto0,021 $0,021 $10,50 $ + 6,40 $ por LoRA
fal [dev] con LoRA y 1 referencia0,021 $ + 0,021 $0,042 $21,00 $ + 6,40 $ por LoRA

Las reglas que hay detrás:

  • BFL (tabla de precios): [pro] cobra 0,03 $ por el primer megapíxel de salida, 0,015 $ por cada megapíxel adicional y 0,015 $ por megapíxel de cada imagen de referencia. La resolución se redondea al megapíxel superior por separado para la salida y para cada referencia. [klein] 9B cobra 0,015 $ por el primer megapíxel y 0,002 $ por los adicionales y por las referencias. Durante la beta, los endpoints -finetuned se facturan igual que su endpoint base.
  • fal: fal-ai/flux-2/lora cuesta 0,021 $ por megapíxel; la variante /edit cobra 0,021 $ por megapíxel de entrada y de salida, con las entradas redimensionadas a 1 MP. Un conjunto de LoRA de más de 2 GB encarece la petición. El entrenamiento cuesta 0,0064 $ por paso: 6,40 $ con los 1.000 pasos por defecto.

El punto de equilibrio entre fal con LoRA y [pro] con una referencia sale de comparar el coste total de n imágenes de un mismo producto:

text
6,40 + 0,021 × n < 0,045 × n   →   n > 6,40 / 0,024 = 266,7

Con 266 imágenes, el LoRA cuesta 6,40 + 5,586 = 11,986 $ y [pro] 11,97 $: todavía gana [pro]. Con 267, el LoRA cuesta 12,007 $ y [pro] 12,015 $: gana el LoRA. El umbral solo vale para estos datos (1 MP, 1.000 pasos, LoRA sin imagen de referencia); si entrenas con 2.000 pasos, el coste fijo sube a 12,80 $ y el umbral pasa a 534 imágenes. La cuenta tampoco incluye las imágenes que descartes, los reintentos ni las horas de preparar las fotos de entrenamiento.

Flujo en n8n paso a paso: enviar, esperar, consultar, descargar

La API de BFL es asíncrona: el POST no devuelve la imagen, sino un id y una polling_url que hay que consultar hasta que el estado sea Ready. En n8n eso se traduce en una cadena de nodos estándar; todos los pasos usan HTTP Request, Wait, If y Loop Over Items. El ejemplo sigue la ruta 1 ([pro] con una referencia); las otras dos rutas reutilizan la misma cadena con los cambios que se indican después.

Esquema del flujo en n8n: Loop Over Items, HTTP Request con POST a la API de BFL, Wait, HTTP Request con GET a polling_url, If sobre status y descarga del archivo, con los límites de 24 tareas activas y 10 minutos

Punto de partida: una hoja o tabla con una fila por imagen que quieras generar, con al menos tres columnas: sku, foto_url (la foto real del producto en una URL accesible desde internet) y prompt (la escena).

Credencial Header Auth con la cabecera x-key

Crea una credencial genérica de tipo Header Auth con nombre x-key y, como valor, tu clave de la API de BFL. La usarán los dos nodos HTTP Request que hablan con api.bfl.ai; el de descarga no la necesita.

HTTP Request de envío: POST a /v1/flux-2-pro con input_image

Configura el primer HTTP Request así:

  • Method: POST
  • URL: https://api.bfl.ai/v1/flux-2-pro (versión fijada; /v1/flux-2-pro-preview apunta siempre a la más reciente)
  • Authentication: Generic Credential Type → Header Auth → la credencial anterior
  • Body: JSON
json
{
  "prompt": "{{ $json.prompt }}",
  "input_image": "{{ $json.foto_url }}",
  "width": 1024,
  "height": 1024,
  "output_format": "jpeg"
}

Para añadir más ángulos del mismo producto usa input_image_2, input_image_3, etc.; recuerda que cada referencia suma 0,015 $. La respuesta trae id, polling_url, cost, input_mp y output_mp. Guarda cost junto al SKU: te permite cuadrar el gasto real con la estimación.

Wait, consulta de polling_url e If sobre status

Después del envío van tres nodos en bucle:

  1. Wait con «After Time Interval». BFL no documenta un intervalo mínimo de consulta (sus ejemplos consultan cada 0,5–1 segundos); en n8n, unos pocos segundos son un punto de partida razonable. Mientras la espera sea inferior a 65 segundos, n8n mantiene la ejecución en memoria en lugar de volcarla a la base de datos.
  2. HTTP Request con GET a la URL devuelta, con la misma credencial. Si el nodo de envío se llama «Enviar a BFL», la expresión es {{ $('Enviar a BFL').item.json.polling_url }}. Con api.bfl.ai y los endpoints regionales es obligatorio usar la polling_url recibida, no una URL construida a mano con el id.
  3. If sobre {{ $json.status }}: si es Ready, pasa a la descarga; si es Error o Failed, registra el fallo en la fila del SKU y sigue con el siguiente; en cualquier otro caso, vuelve al Wait.

Añade un contador de intentos para que una tarea atascada no deje el bucle girando indefinidamente. Como alternativa al bucle, BFL admite webhook_url en la petición y el nodo Wait puede reanudarse con «On Webhook Call».

Descarga del archivo antes de que caduque la URL (10 minutos)

Cuando el estado es Ready, la imagen está en result.sample. Es una URL firmada que caduca a los 10 minutos, se sirve desde delivery.*.bfl.ai, no tiene CORS y no está pensada para enseñarla a tus clientes. Por tanto:

  • Coloca justo después del If un tercer HTTP Request con GET a {{ $json.result.sample }} y Response Format: File, que deja el binario en un campo del ítem.
  • Sube ese binario a tu propio almacenamiento (el gestor de medios de la tienda, un bucket, Drive) y anota en la hoja la URL definitiva, nunca la de result.sample.
  • No pongas una aprobación manual entre el If y la descarga: si alguien tarda más de 10 minutos, la imagen se pierde y hay que pagarla otra vez.

Lotes con Loop Over Items sin pasar de 24 tareas activas

BFL limita cada cuenta a 24 tareas activas; por encima responde con 429. Como el POST vuelve al instante, enviar 200 filas de golpe supera el límite antes de que termine la primera imagen. Dos medidas lo evitan:

  • Loop Over Items al principio de la cadena, con un tamaño de lote claramente inferior a 24, y la vuelta al bucle solo después de la descarga. Con tamaño 1 el flujo es más lento pero imposible de saturar.
  • En las opciones del HTTP Request de envío, Batching con «Items per Batch» y «Batch Interval» (en milisegundos) para espaciar las peticiones dentro de cada lote.

Un 402 significa que la cuenta se ha quedado sin créditos: detén el flujo en lugar de reintentar.

LoRA en BFL: el endpoint -finetuned de [klein] con finetune_id

La cadena de n8n no cambia; cambian la URL y dos campos del cuerpo. Antes necesitas tener el LoRA en tu cuenta:

  1. Entrena el LoRA sobre un modelo FLUX.2 [klein] Base con AI-Toolkit o Diffusers.
  2. En el panel de BFL, ve a Customization → Finetunes → Add Finetune, elige el modelo base que corresponde, pon un nombre (minúsculas, dígitos, guiones y guiones bajos) y, si quieres, una frase de activación. Ese nombre es tu finetune_id.
  3. Llama al endpoint -finetuned que coincide con el modelo base elegido. Los disponibles son /v1/flux-2-klein-4b-finetuned, /v1/flux-2-klein-9b-finetuned, /v1/flux-2-klein-9b-kv-finetuned, /v1/flux-2-klein-9b-kv-bf16-finetuned, /v1/flux-2-klein-base-4b-finetuned y /v1/flux-2-klein-base-9b-finetuned. Si el endpoint no coincide con la base del LoRA, la petición falla.
json
{
  "prompt": "{{ $json.prompt }}",
  "finetune_id": "mi-producto-lora",
  "finetune_strength": 1.0,
  "width": 1024,
  "height": 1024
}

Detalles que afectan al resultado:

  • Si definiste una frase de activación, tiene que aparecer en el prompt; finetune_strength por sí solo no la activa.
  • finetune_strength vale 1.0 por defecto. Si todas las imágenes se parecen a las fotos de entrenamiento pidas lo que pidas, BFL recomienda probar entre 0,7 y 0,9 con la misma seed.
  • Solo cabe un LoRA por petición. Sí puedes combinarlo con input_image, porque el endpoint acepta los mismos parámetros que su base; en [klein] el máximo son 4 referencias.
  • Es una Public Beta: BFL avisa de que precios, parámetros y nombres de endpoint pueden cambiar antes de la versión definitiva.
  • Licencias: los pesos de [klein] 4B son Apache 2.0 y los de 9B están bajo la FLUX Non-Commercial License. Las condiciones para explotar comercialmente un LoRA basado en 9B servido por la API de BFL no figuran en esas páginas; confírmalo con BFL antes de usarlo en una tienda.

LoRA en fal: entrenar con flux-2-trainer y generar con [dev]

En fal cambian tres cosas respecto a BFL: la cabecera de autenticación, los nombres de los campos de la cola y un paso más para recoger el resultado.

Credencial: Header Auth con nombre Authorization y valor Key TU_CLAVE_DE_FAL.

Entrenamiento (una vez por producto o estilo): POST https://queue.fal.run/fal-ai/flux-2-trainer.

json
{
  "image_data_url": "https://tu-dominio.com/fotos-producto.zip",
  "steps": 1000,
  "default_caption": "foto de producto de la botella XYZ"
}

El zip debe contener las fotos; fal pide al menos 10 y dice que cuantas más, mejor, sin recomendaciones específicas para producto. Cada imagen puede llevar un .txt con su descripción; si no los incluyes, default_caption es obligatorio o el entrenamiento falla. El resultado trae diffusers_lora_file.url: guárdala, porque es lo que usarás como path.

Generación: POST https://queue.fal.run/fal-ai/flux-2/lora.

json
{
  "prompt": "{{ $json.prompt }}",
  "loras": [{ "path": "{{ $json.lora_url }}", "scale": 1 }],
  "image_size": { "width": 1024, "height": 1024 },
  "output_format": "jpeg"
}

loras admite un máximo de 3 elementos y scale va de 0 a 4. Para añadir la foto real del producto, usa fal-ai/flux-2/lora/edit con image_urls (hasta 4 imágenes); con una referencia, el coste por imagen se duplica.

Cola (documentación de fal): el POST devuelve request_id, status_url, response_url y cancel_url. El bucle queda así:

  1. Wait.
  2. GET a status_url. El estado pasa por IN_QUEUE, IN_PROGRESS y COMPLETED.
  3. If: cuando sea COMPLETED, comprueba primero si existe el campo error, porque una petición fallida también termina como COMPLETED.
  4. GET a response_url para obtener el resultado; la imagen está en images[0].url. Descárgala con Response Format: File y guárdala en tu almacenamiento, igual que en BFL.

Sobre la licencia: la página del modelo en fal lleva la etiqueta de uso comercial para este endpoint, mientras que BFL distribuye los pesos de [dev] con licencia no comercial para quien los ejecuta por su cuenta. Las condiciones dependen de dónde se ejecute el modelo; revisa las de fal antes de publicar.

Qué revisar a mano: logotipo, texto de la etiqueta y letra pequeña

Ninguna de las tres rutas garantiza que el producto salga idéntico. La documentación de BFL describe la edición con referencias como un mecanismo de coherencia, pero no promete fidelidad exacta del logotipo, del texto de la etiqueta ni de la letra pequeña; la documentación de los endpoints con LoRA tampoco la promete. Antes de publicar una imagen en una ficha de producto, comprueba:

  • Logotipo: forma, proporciones y color frente a la foto original.
  • Texto de la etiqueta: nombre, variante, gramaje o capacidad, letra por letra.
  • Letra pequeña: ingredientes, advertencias, sellos y códigos. Si se va a leer en la imagen final, lo prudente es usar la foto real o superponer la etiqueta en un paso posterior.
  • Forma y número de piezas: tapones, asas, botones, costuras.

En n8n, la revisión encaja después de la descarga, no antes. Con el archivo ya guardado en tu almacenamiento, un nodo Wait con «On Form Submitted» u «On Webhook Call» puede dejar el flujo en pausa hasta que alguien apruebe o rechace la imagen, sin la presión de los 10 minutos de la URL firmada.

Preguntas frecuentes sobre FLUX.2, LoRA y n8n

¿Qué es FLUX.2 Pro?

FLUX.2 [pro] es el modelo de la familia FLUX.2 que BFL orienta a producción a escala. Genera imágenes a partir de texto y edita con hasta 8 imágenes de referencia por API, con salida de hasta 4 MP y precios desde 0,03 $ por imagen. Tiene dos endpoints: /v1/flux-2-pro, una versión fijada para flujos que necesitan resultados reproducibles, y /v1/flux-2-pro-preview, que apunta a la más reciente. No acepta LoRA.

¿Puedo usar un LoRA y una imagen de referencia en la misma petición?

Sí, pero no con [pro]. En BFL, los endpoints -finetuned de [klein] aceptan finetune_id junto con input_image (hasta 4 referencias). En fal, fal-ai/flux-2/lora/edit combina loras con image_urls. En ambos casos la referencia se cobra aparte.

¿Hace falta un nodo específico de BFL o de fal en n8n?

No. Las dos API son HTTP con una cabecera de autenticación, así que basta con HTTP Request y una credencial Header Auth, más Wait, If y Loop Over Items para la espera y los lotes.

¿FLUX 3 Image acepta LoRA?

No consta. BFL publicó FLUX 3 Image el 1 de octubre de 2026 y, a 2 de octubre, la documentación disponible no aclara si admite LoRA. Los endpoints de FLUX.2, incluidos los -finetuned de [klein], siguen publicados y con precio.