# FLUX.2 pro LoRA 제품 사진 n8n 자동화: pro엔 LoRA 입력이 없다

> FLUX.2 [pro]는 BFL과 fal 어느 API에도 LoRA 입력이 없습니다. 제품 일관성은 참조 이미지로 잡고, LoRA는 klein 파인튜닝 엔드포인트나 fal의 dev에서 씁니다.

- Source: https://www.aifreeapi.com/ko/posts/flux-2-pro-lora-product-photography-n8n
- Language: ko
- Published: 2026-10-02
- Updated: 2026-10-02
- Publisher: AI Free API (https://www.aifreeapi.com)

FLUX.2 [pro]에는 LoRA를 붙일 수 없습니다. 2026년 10월 2일 기준 [BFL의 FLUX.2 [pro] API 레퍼런스](https://docs.bfl.ai/api-reference/models/generate-or-edit-an-image-with-flux2-%5Bpro%5D)에는 LoRA나 `finetune_id`를 받는 필드가 없고, [fal의 `fal-ai/flux-2-pro`](https://fal.ai/models/fal-ai/flux-2-pro/api)에도 `loras` 파라미터가 없습니다. 같은 제품을 여러 장면에서 똑같이 보이게 하려는 목적이라면 선택지는 세 가지입니다.

| 경로 | 제품을 고정하는 방법 | 호출하는 곳 | 1MP 한 장 정가 |
|---|---|---|---|
| A. FLUX.2 [pro] + 참조 이미지 | 제품 사진을 `input_image`로 전달(API 최대 8장) | BFL `/v1/flux-2-pro` | $0.045(참조 1장 포함) |
| B. FLUX.2 [klein] + LoRA | 직접 학습한 LoRA를 대시보드에 올리고 `finetune_id`로 호출 | BFL `/v1/flux-2-klein-9b-finetuned` 등 | $0.015 |
| C. FLUX.2 [dev] + LoRA | fal에서 학습하고 `loras` 배열로 호출(최대 3개) | fal `fal-ai/flux-2/lora` | $0.021 + 학습 $6.40 |

SKU가 많고 제품당 몇 장만 필요하면 A, 주력 제품 몇 개나 브랜드 톤 하나로 수백 장을 뽑는다면 B나 C가 맞습니다. 세 경로 모두 비동기 API라서 n8n 워크플로의 뼈대는 같고, 바뀌는 것은 URL, 인증 헤더, 요청 본문 세 가지입니다.

아래 n8n 설정은 BFL, fal, n8n 공식 문서의 필드와 응답 형식을 맞춰 구성한 것이며 실제 계정에서 실행한 결과가 아닙니다. 처음에는 한 건만 넣어 응답 필드를 확인한 뒤 배치로 늘리십시오.

## FLUX.2 [pro]에 LoRA를 붙일 수 있나: 요청 스키마에 LoRA 필드가 없다

붙일 수 없습니다. BFL API의 `POST https://api.bfl.ai/v1/flux-2-pro`가 받는 필드는 `prompt`, `input_image`부터 `input_image_8`까지, `width`, `height`, `seed`, `safety_tolerance`, `output_format`, `webhook_url`, `webhook_secret`, `disable_pup`입니다. BFL이 "[pro]는 LoRA를 지원하지 않는다"고 문장으로 밝힌 것은 아니고, 스키마에 해당 필드가 없으며 LoRA용 엔드포인트 목록에 [pro]가 없다는 뜻입니다.

"FLUX.2가 LoRA를 지원한다"는 말이 틀린 것은 아닙니다. 다만 대상 모델이 다릅니다.

- **BFL API**: [FLUX.2 LoRA Inference](https://docs.bfl.ai/flux_2/flux2_lora_inference) 문서에 나오는 `-finetuned` 엔드포인트 여섯 개는 모두 FLUX.2 [klein] 계열입니다. [pro], [max], [flex]용은 없습니다. Public Beta라서 BFL은 가격, 파라미터, 엔드포인트 이름이 정식 출시 전에 바뀔 수 있다고 적어 두었습니다.
- **fal**: [`fal-ai/flux-2/lora`](https://fal.ai/models/fal-ai/flux-2/lora/api)는 FLUX.2 [dev]에 LoRA를 얹는 엔드포인트입니다.

"FLUX.2 Pro가 LoRA 파인튜닝을 지원한다"는 식의 소개가 돌아다니는 까닭은 [pro], [klein], [dev]가 모두 FLUX.2라는 이름을 쓰기 때문입니다. 요청을 보낼 때는 모델과 플랫폼을 함께 확인해야 합니다. [pro]가 제품 일관성에 쓰라고 내놓은 수단은 참조 이미지이며, [FLUX.2 이미지 편집 가이드](https://docs.bfl.ai/flux_2/flux2_image_editing)에 따르면 API에서 최대 8장, 플레이그라운드에서 최대 10장을 한 번에 참조하고 출력은 최대 4MP입니다.

BFL은 2026년 10월 1일 FLUX 3 Image를 내놓았지만 FLUX.2 엔드포인트와 가격은 그대로 올라 있습니다.

## 어느 경로를 고를까: SKU 수와 제품당 장수로 정한다

LoRA는 제품 하나(또는 스타일 하나)마다 학습 비용과 준비 시간이 따로 듭니다. 참조 이미지는 준비 비용이 없는 대신 매 요청마다 참조 요금이 붙습니다. 그래서 기준은 카탈로그 모양입니다.

| 상황 | 맞는 경로 | 이유 | 감수할 점 |
|---|---|---|---|
| SKU 수십~수백 개, 제품당 3~10장 | A. [pro] + 참조 이미지 | SKU마다 학습할 필요가 없고 제품 사진 URL만 있으면 됨 | 장당 요금이 가장 높음 |
| 주력 제품 몇 개로 수백 장, GPU가 있고 결제를 BFL 한 곳으로 모으고 싶음 | B. [klein] + LoRA | 장당 요금이 가장 낮고 학습 비용이 API 요금에 없음 | 학습을 직접 해야 함, 요청당 LoRA 1개, Public Beta |
| 주력 제품이나 브랜드 톤으로 수백 장, 학습 환경이 없음 | C. fal [dev] + LoRA | 학습과 추론을 모두 호스팅으로 처리, LoRA 3개까지 조합 | LoRA 하나당 학습비, 결제처가 fal로 나뉨 |

B를 고를 때 확인할 것이 두 가지 더 있습니다. [BFL의 klein 학습 가이드](https://docs.bfl.ai/flux_2/flux2_klein_training)는 최소 사양으로 klein 4B Base에 VRAM 12GB와 RAM 32GB, 9B Base에 VRAM 22GB와 RAM 64GB를 적고 있습니다. 그리고 오픈 웨이트의 라이선스가 4B는 Apache 2.0, 9B는 FLUX Non-Commercial License입니다. 9B 기반 LoRA를 BFL API로 상업 서비스에 쓸 때의 조건은 공개 문서에 구체적으로 적혀 있지 않으므로 9B를 쓸 계획이면 BFL에 라이선스를 먼저 확인하십시오.

C에도 라이선스 메모가 하나 있습니다. BFL은 [dev] 웨이트를 로컬 전용, 비상업용으로 안내하지만 fal의 해당 모델 페이지에는 상업 이용 표시가 붙어 있습니다. 같은 모델이라도 어디에서 실행하느냐에 따라 조건이 달라집니다.

경로 사이의 화질 차이는 요금표로는 알 수 없습니다. [pro], [klein], [dev]는 서로 다른 모델이므로 자기 제품 3~5개로 같은 장면을 뽑아 직접 비교한 뒤 정하는 편이 안전합니다. FLUX.2 외의 모델까지 후보에 넣는다면 [2026 이미지 생성 모델 비교: GPT Image 2, Nano Banana, Midjourney, FLUX.2 선택법](/ko/posts/nano-banana-2-vs-midjourney-vs-gpt-image-vs-flux2)에서 용도별 기준을 볼 수 있습니다.

## 장당 비용: [pro] + 참조 1장 $0.045, klein LoRA $0.015, dev LoRA $0.021

2026년 10월 2일 기준 정가이며 모두 미국 달러입니다. BFL 요금은 [BFL 가격표](https://bfl.ai/pricing?category=flux.2), fal 요금은 각 모델 페이지에서 가져왔습니다.

| 요청 | 계산 | 장당 |
|---|---|---|
| [pro], 텍스트만, 1MP | 첫 1MP $0.03 | $0.03 |
| [pro], 참조 1장, 1MP | $0.03 + 참조 $0.015 | $0.045 |
| [pro], 참조 2장, 1MP | $0.03 + $0.015 × 2 | $0.06 |
| [pro], 참조 1장, 2MP 출력 | $0.03 + 추가 1MP $0.015 + 참조 $0.015 | $0.06 |
| [klein] 9B LoRA, 텍스트만, 1MP | 첫 1MP $0.015 | $0.015 |
| [klein] 9B LoRA, 참조 1장, 1MP | $0.015 + 참조 $0.002 | $0.017 |
| fal [dev] LoRA, 텍스트만, 1MP | MP당 $0.021 | $0.021 |
| fal [dev] LoRA 편집, 참조 1장, 1MP | 입력 1MP + 출력 1MP, 각 $0.021 | $0.042 |

계산 전제는 세 가지입니다. BFL은 1MP를 1024×1024로 보고, 출력과 참조 이미지 각각의 해상도를 다음 MP로 올림합니다. 그래서 1024×1024보다 큰 참조 이미지를 넣으면 위 금액보다 비싸집니다. `-finetuned` 엔드포인트는 Public Beta 동안 기반 엔드포인트와 같은 요금이고, 정식 출시 때 바뀔 수 있습니다. fal의 [dev] LoRA는 LoRA 파일 합계가 2GB를 넘으면 GB당 50%씩 할증됩니다.

### 500장 배치와 LoRA 분기점 267장

1MP로 500장을 만든다고 하면 다음과 같습니다.

- A. [pro] + 참조 1장: 500 × $0.045 = $22.50
- B. [klein] 9B LoRA: 500 × $0.015 = $7.50(자체 GPU 학습 비용 제외)
- C. fal [dev] LoRA: 500 × $0.021 = $10.50, 여기에 LoRA 하나당 학습비 $6.40. LoRA 하나로 500장을 모두 뽑으면 합계 $16.90

![1MP 500장 예시에서 세 경로의 비용 계산: pro와 참조 1장 $22.50, klein 9B LoRA $7.50, fal dev LoRA는 학습비 $6.40 포함 $16.90](https://www.aifreeapi.com/posts/ko/flux-2-pro-lora-product-photography-n8n/img/route-cost-500.webp)

C의 학습비는 [`fal-ai/flux-2-trainer`](https://fal.ai/models/fal-ai/flux-2-trainer/api)의 공식인 0.0064 × steps에서 나옵니다. 기본값 1,000 steps면 $6.40입니다.

제품 하나를 기준으로 A와 C가 갈리는 지점은 이렇게 구합니다. 한 제품으로 n장을 만들 때 C가 더 싸려면 6.40 + 0.021n < 0.045n이어야 하고, 풀면 n > 266.7입니다. 266장이면 C가 $11.986, A가 $11.97로 A가 쌉니다. 267장이면 C가 $12.007, A가 $12.015로 C가 쌉니다. 즉 **LoRA 하나로 267장 이상** 뽑을 때부터 C가 유리합니다.

이 분기점은 전제에 따라 크게 움직입니다.

- C에서도 참조 이미지를 한 장 넣으면 장당 $0.042가 되어 A와의 차이가 $0.003으로 줄어듭니다. 6.40 + 0.042n < 0.045n을 풀면 n > 2,133.3이므로 2,134장부터 C가 쌉니다.
- SKU 100개에 5장씩이면 총 500장으로 같지만 C는 LoRA가 100개 필요합니다. 학습비만 100 × $6.40 = $640이고 추론 $10.50을 더하면 $650.50입니다. A는 $22.50입니다.
- 학습 steps를 늘리거나 출력 해상도를 올리면 양쪽 금액이 모두 바뀝니다.

위 계산은 정가만 놓고 본 예산 산수입니다. 버리는 컷, 재시도, 모델 간 품질 차이, 학습용 사진을 준비하는 사람의 시간은 들어 있지 않습니다.

## n8n 워크플로 뼈대: 제출, Wait, 폴링, If, 다운로드 순서

BFL과 fal 모두 요청을 보내면 이미지 대신 작업 ID와 조회용 URL을 돌려줍니다. 그래서 HTTP Request 노드 하나로는 끝나지 않고 다음 순서가 필요합니다.

1. **입력**: Google Sheets나 Airtable 등에서 행을 읽습니다. 열은 `sku`, `reference_url`(제품 사진 URL), `scene_prompt`(장면 설명) 정도면 됩니다.
2. **Loop Over Items**: Batch Size를 1로 두고 한 행씩 처리합니다.
3. **제출(HTTP Request, POST)**: 경로별 URL과 본문으로 생성 요청을 보냅니다.
4. **Wait**: Resume를 After Time Interval로 두고 몇 초 기다립니다.
5. **폴링(HTTP Request, GET)**: 제출 응답에 들어 있던 조회 URL을 호출합니다.
6. **If**: 상태가 완료면 다음으로, 실패면 오류 기록으로, 그 외에는 4번 Wait로 되돌립니다.
7. **다운로드(HTTP Request, GET)**: 결과 URL을 Response Format `File`로 받아 바이너리 필드에 담습니다.
8. **저장**: Google Drive, S3 같은 자체 저장소에 올리고 시트에 최종 URL과 상태를 기록한 뒤 Loop Over Items로 돌아갑니다.

호출은 [HTTP Request 노드](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/)로 하고, 인증은 Generic Credential Type의 Header Auth로 넣습니다. 자격 증명은 플랫폼별로 하나씩 만듭니다.

| 항목 | BFL(경로 A, B) | fal(경로 C) |
|---|---|---|
| Header Auth의 Name | `x-key` | `Authorization` |
| Header Auth의 Value | BFL API 키 | `Key ` 뒤에 fal 키 |
| 제출 응답에서 쓸 값 | `polling_url` | `status_url`, `response_url` |
| 완료 상태 | `status`가 `Ready` | `status`가 `COMPLETED` |
| 실패 판별 | `status`가 `Error` 또는 `Failed` | `COMPLETED`인데 `error` 필드가 있음 |
| 결과 이미지 URL | `result.sample` | `response_url` 응답의 `images[0].url` |

![n8n 비동기 워크플로의 네 단계인 제출, 대기와 폴링, 상태 판별, 다운로드와 저장, 그리고 BFL과 fal에서 달라지는 헤더와 응답 필드](https://www.aifreeapi.com/posts/ko/flux-2-pro-lora-product-photography-n8n/img/n8n-async-skeleton.webp)

Wait 간격은 3~5초 정도로 시작하면 됩니다. BFL 공식 예제는 0.5~1초마다 조회하지만 문서에 최소 간격 규정은 없고, [n8n의 Wait 노드](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.wait/)는 65초 미만 대기를 실행 데이터를 데이터베이스로 넘기지 않고 처리합니다. If에서 Wait로 되돌아가는 반복에는 횟수 상한을 두십시오. 상한이 없으면 상태가 바뀌지 않는 작업 하나가 워크플로 전체를 붙잡습니다.

### 경로 A: FLUX.2 [pro]에 제품 사진을 참조 이미지로 넣기

제출 노드의 URL은 `https://api.bfl.ai/v1/flux-2-pro`입니다. `flux-2-pro`는 고정 스냅숏이고 `flux-2-pro-preview`는 최신 버전을 가리킵니다. 카탈로그 전체의 톤이 중간에 달라지면 곤란한 배치 작업에는 고정 스냅숏이 맞습니다.

본문은 JSON으로 보냅니다. 프롬프트에 따옴표나 줄바꿈이 들어가도 JSON이 깨지지 않도록 `JSON.stringify`로 감쌉니다.

```json
{
  "prompt": {{ JSON.stringify($json.scene_prompt) }},
  "input_image": {{ JSON.stringify($json.reference_url) }},
  "width": 1024,
  "height": 1024,
  "output_format": "jpeg"
}
```

`input_image`에는 URL이나 base64를 넣을 수 있고, 다른 각도의 사진을 더 주려면 `input_image_2`부터 `input_image_8`까지 이어서 씁니다. 참조 이미지가 한 장 늘 때마다 1MP 기준 $0.015가 더해집니다.

제출 응답에는 `id`, `polling_url`과 함께 `cost`, `input_mp`, `output_mp`가 들어 있습니다. `cost`를 시트에 같이 기록해 두면 배치가 끝난 뒤 예상 금액과 대조할 수 있습니다.

폴링 노드의 URL에는 제출 노드의 응답을 참조하는 식을 넣습니다. 제출 노드 이름이 `BFL 제출`이라면 다음과 같습니다.

```text
{{ $('BFL 제출').item.json.polling_url }}
```

[BFL 통합 가이드](https://docs.bfl.ai/api_integration/integration_guidelines)는 `api.bfl.ai`를 쓸 때 반드시 응답으로 받은 `polling_url`을 쓰라고 안내합니다. 조회 주소를 직접 조립하지 마십시오. 폴링에도 같은 `x-key` 자격 증명이 필요합니다.

If 노드는 `{{ $json.status }}`가 `Ready`와 같은지 봅니다. 참이면 다운로드 노드에서 `{{ $json.result.sample }}`을 GET으로 받고 Response Format을 `File`로 지정합니다.

### 경로 B: klein `-finetuned` 엔드포인트에 `finetune_id` 넣기

n8n에서 바뀌는 것은 URL과 본문의 두 필드뿐입니다. 인증, 폴링, 다운로드는 경로 A와 같습니다. 그 전에 n8n 밖에서 할 일이 있습니다.

1. AI-Toolkit이나 Diffusers로 FLUX.2 [klein] Base 모델에 맞춰 LoRA를 학습합니다. BFL API는 학습을 대신해 주지 않습니다.
2. BFL 대시보드의 Customization → Finetunes에서 `.safetensors` 파일을 올리고 기반 모델을 고릅니다. 이때 정한 이름이 `finetune_id`가 됩니다. 이름에는 영문 소문자, 숫자, 하이픈, 밑줄만 쓸 수 있습니다.
3. 트리거 문구를 설정했다면 프롬프트에 그 문구를 반드시 넣습니다.

```json
{
  "prompt": {{ JSON.stringify($json.scene_prompt) }},
  "finetune_id": "my-product-lora",
  "finetune_strength": 1.0,
  "width": 1024,
  "height": 1024,
  "output_format": "jpeg"
}
```

URL은 LoRA의 기반 모델과 일치해야 합니다. 9B로 올린 LoRA는 `https://api.bfl.ai/v1/flux-2-klein-9b-finetuned`로, 4B로 올린 LoRA는 `/v1/flux-2-klein-4b-finetuned`로 호출합니다. 어긋나면 요청이 실패합니다.

`finetune_strength`의 기본값은 1.0입니다. 어떤 장면을 요청해도 학습 사진과 비슷한 결과만 나온다면 같은 `seed`로 0.7~0.9 사이를 바꿔 가며 맞추라는 것이 BFL 문서의 안내입니다. 요청 하나에는 LoRA를 하나만 쓸 수 있으므로 제품 LoRA와 스타일 LoRA를 겹치는 스태킹은 이 경로에서 되지 않습니다. 대신 `-finetuned` 엔드포인트도 `input_image` 계열 필드를 받으므로 LoRA와 참조 이미지를 함께 쓸 수는 있습니다.

### 경로 C: fal에서 LoRA를 학습하고 `fal-ai/flux-2/lora` 호출하기

학습은 제품마다 한 번이므로 별도 워크플로로 떼어 두는 편이 깔끔합니다. `fal-ai/flux-2-trainer`에 제품 사진을 zip으로 묶은 URL을 `image_data_url`로 보냅니다. fal은 최소 10장을 권하고 많을수록 좋다고 적고 있습니다. 이미지마다 같은 이름의 `.txt` 캡션을 넣지 않을 경우 `default_caption`을 지정해야 하며, 둘 다 없으면 학습이 실패합니다. 결과로 받는 `diffusers_lora_file`의 URL이 추론 요청의 `path`가 됩니다.

추론 워크플로의 제출 노드 URL은 `https://queue.fal.run/fal-ai/flux-2/lora`입니다.

```json
{
  "prompt": {{ JSON.stringify($json.scene_prompt) }},
  "loras": [
    { "path": {{ JSON.stringify($json.lora_url) }}, "scale": 1 }
  ],
  "image_size": { "width": 1024, "height": 1024 },
  "num_images": 1,
  "output_format": "jpeg"
}
```

`loras`에는 최대 3개까지 넣을 수 있고 `scale`의 범위는 0~4, 기본값은 1입니다. `image_size`의 가로와 세로는 512~2,048px 사이여야 합니다.

[fal의 큐 API](https://docs.fal.ai/model-apis/model-endpoints/queue)는 제출 응답으로 `request_id`, `status_url`, `response_url`, `cancel_url`을 돌려줍니다. 폴링 노드는 `status_url`을 호출하고, 상태는 `IN_QUEUE`, `IN_PROGRESS`, `COMPLETED` 순으로 바뀝니다. BFL과 다른 점은 두 가지입니다.

- 실패한 요청도 `COMPLETED`로 끝납니다. If 노드에서 `status`만 보지 말고 `error` 필드가 비어 있는지도 함께 확인해야 합니다.
- `COMPLETED` 뒤에 `response_url`을 한 번 더 GET으로 호출해야 결과가 나옵니다. 이미지 주소는 그 응답의 `images[0].url`입니다.

제품 사진을 참조로 함께 넣으려면 `fal-ai/flux-2/lora/edit`를 쓰고 `image_urls`에 최대 4장을 넣습니다. 이 경우 입력과 출력 MP가 모두 과금되어 1MP 기준 장당 $0.042입니다.

## 배치를 돌릴 때 걸리는 제한: 서명 URL 10분, 동시 작업 24개

BFL의 `result.sample`은 **10분 동안만 유효한 서명 URL**입니다. `delivery.*.bfl.ai`에서 제공되고 CORS가 꺼져 있으며, BFL은 이 주소를 최종 사용자에게 직접 내보내지 말고 내려받아 자체 인프라에서 제공하라고 안내합니다. 워크플로에 미치는 영향은 분명합니다.

- 시트에 `result.sample`을 그대로 저장하지 마십시오. 10분 뒤에는 열리지 않습니다. 다운로드와 저장소 업로드까지 끝낸 뒤 자체 URL을 기록합니다.
- 다운로드 노드를 사람이 승인하는 단계 뒤에 두지 마십시오. 검수는 자체 저장소에 올린 파일을 대상으로 합니다.
- 방화벽으로 나가는 주소를 제한하는 환경이라면 개별 리전 호스트가 아니라 `delivery.*.bfl.ai` 와일드카드를 허용합니다.

BFL API는 동시에 진행 중인 작업을 24개까지 허용하고, 넘으면 `429`를 돌려줍니다. Loop Over Items의 Batch Size가 1이면 한 번에 한 작업만 돌기 때문에 이 제한에 닿지 않습니다. 속도를 올리려고 묶음 크기를 키우거나 워크플로를 여러 개 동시에 돌린다면 합계가 24를 넘지 않게 잡아야 합니다. HTTP Request 노드의 Options → Batching에 있는 Items per Batch와 Batch Interval(밀리초)로 제출 속도를 늦출 수 있습니다.

`402`는 크레딧이 떨어졌다는 뜻입니다. 재시도해도 해결되지 않으므로 `429`와 구분해서 처리하고, `402`가 나오면 루프를 멈추고 알림을 보내는 쪽이 낫습니다. 배치를 시작하기 전에 장수 × 장당 요금으로 필요한 크레딧을 먼저 계산해 두십시오. BFL 크레딧은 1크레딧이 $0.01입니다.

## 생성 결과에서 사람이 확인할 것: 로고, 라벨 문구, 작은 글씨

참조 이미지든 LoRA든 제품이 원본과 똑같이 나온다는 보장은 없습니다. BFL 문서는 다중 참조로 일관성을 유지할 수 있다고 설명하지만 로고, 라벨, 작은 글씨가 정확히 재현된다고 약속하지는 않습니다. 상세페이지 이미지로 쓰기 전에 다음을 원본과 나란히 놓고 확인하십시오.

- 로고의 형태와 철자
- 라벨에 적힌 문구, 용량, 성분, 인증 마크
- 제품의 색, 비율, 뚜껑이나 버튼 같은 부품의 개수와 위치
- 패키지의 작은 글씨가 읽을 수 있는 실제 문구인지

표시 사항이 정확해야 하는 대표 이미지는 실제 촬영본을 쓰고, 생성 이미지는 연출 컷과 배너 배경에 쓰는 식으로 역할을 나누면 위험이 줄어듭니다. n8n에서는 저장 단계 뒤에 시트의 상태 열을 `검수 대기`로 기록해 두고, 사람이 승인한 행만 쇼핑몰에 올리는 두 번째 워크플로로 넘기면 됩니다.

## 자주 묻는 질문

### FLUX.2 [pro]에서 LoRA 스태킹을 할 수 있나요?

할 수 없습니다. [pro]는 LoRA 입력 자체가 없습니다. 여러 LoRA를 겹치려면 fal의 `fal-ai/flux-2/lora`(FLUX.2 [dev])에서 `loras` 배열에 최대 3개를 넣습니다. BFL의 klein `-finetuned` 엔드포인트는 요청당 LoRA 1개만 받습니다.

### BFL API만으로 LoRA 학습까지 할 수 있나요?

추론만 됩니다. BFL의 LoRA 기능은 직접 학습한 `.safetensors` 파일을 대시보드에 올린 뒤 `-finetuned` 엔드포인트로 호출하는 방식입니다. 학습까지 API로 처리하려면 fal의 `fal-ai/flux-2-trainer`를 쓰고, 그 결과물은 FLUX.2 [dev]용 LoRA이므로 fal에서 추론합니다.

### n8n에서 폴링 대신 웹훅을 써도 되나요?

됩니다. BFL은 요청 본문의 `webhook_url`로, fal은 큐 API의 웹훅으로 완료 알림을 보낼 수 있고, n8n의 Wait 노드에는 On Webhook Call로 재개하는 옵션이 있습니다. 다만 BFL의 서명 URL은 웹훅으로 받아도 10분 안에 내려받아야 한다는 점은 같습니다. 처음 연결할 때는 폴링 쪽이 응답을 눈으로 확인하기 쉽습니다.
