# n8n에서 Nodaro 사용

> n8n의 HTTP Request 노드 하나로 Nodaro 워크플로를 시작하고, 완성된 이미지나 동영상을 n8n Webhook 노드로 받으세요. API 키는 필요 없습니다.

Source: https://nodaro.ai/ko/docs/guides/n8n-integration

**n8n**은 HTTP 요청 하나로 어떤 Nodaro 워크플로든 시작하고, 완성된 이미지, 동영상 또는 오디오를 n8n Webhook 노드로 받을 수 있습니다. 생성은 Nodaro가 맡습니다. 언제 실행하고 결과를 어디로 보낼지는 n8n이 정합니다. 워크플로 자체의 Webhook 주소로 실행을 시작하므로 어느 방향이든 Nodaro API 키가 필요 없습니다.

## 두 서비스의 연결 방식
1. n8n의 **HTTP Request** 노드가 프롬프트 같은 JSON 본문을 Nodaro 워크플로의 Webhook 주소로 보냅니다.
2. Nodaro 워크플로는 [Webhook 트리거](https://nodaro.ai/docs/nodes/automate/webhook-trigger)로 시작해 노드를 실행하고 [Webhook 출력](https://nodaro.ai/docs/nodes/publish/webhook-output)으로 끝납니다.
3. Webhook 출력이 결과를 n8n의 **Webhook** 노드로 보내고, n8n 워크플로의 나머지 부분이 거기서 이어집니다.

Workflow: Nodaro 쪽 구성입니다. n8n이 Webhook 트리거를 시작하고, Webhook 출력이 이미지 주소를 n8n으로 돌려보냅니다.

- Webhook 트리거 → 이미지 생성 (프롬프트)
- 이미지 생성 → Webhook 출력 (image_url)

## 1단계: n8n에서 결과 받기
Nodaro 워크플로에 받는 쪽의 주소가 필요하므로 받는 쪽을 먼저 만드세요.

1. n8n에서 **Webhook** 노드를 추가하세요.
2. **HTTP Method**를 **POST**로 설정하고, 노드에 `nodaro-result` 같은 **Path**를 지정하세요.
3. n8n이 Nodaro에 바로 응답하도록 **Respond**를 **Immediately**로 유지하세요.
4. **Production URL**을 복사하세요.

n8n은 n8n 워크플로를 게시할 때 Production URL을 등록합니다. **Test URL**은 **Listen for test event**를 선택한 뒤 120초 동안만 수신 대기하므로 워크플로를 만드는 동안에만 사용하세요.

## 2단계: Nodaro 워크플로 만들기
1. **Webhook 트리거** 노드를 추가하세요. **출력 파라미터**에서 이름이 `prompt`이고 유형이 **텍스트**인 파라미터를 추가하세요.
2. `prompt` 출력을 [이미지 생성](https://nodaro.ai/docs/nodes/image/generate-image) 노드나 결과를 만드는 다른 노드의 프롬프트 입력에 연결하세요.
3. **Webhook 출력** 노드를 추가하세요. n8n의 Production URL을 **Webhook URL**에 붙여 넣으세요. **입력 파라미터**에서 유형이 **이미지 URL**인 `image_url`을 추가하고 이미지를 연결하세요.
4. 워크플로를 저장하세요. Webhook 트리거를 선택하고 **Webhook URL** 아래에 있는 주소를 복사하세요.

주소는 `https://app.nodaro.ai/v1/webhooks/<token>` 형식입니다. 토큰은 비밀번호처럼 작동합니다. 주소를 가진 사람은 누구나 워크플로를 시작할 수 있습니다.

## 3단계: n8n에서 실행 시작
1. n8n에서 실행을 시작할 위치에 **HTTP Request** 노드를 추가하세요.
2. **Method**를 **POST**로 설정하고 Nodaro 주소를 **URL**에 붙여 넣으세요.
3. **Send Body**를 켜고, **Body Content Type**을 **JSON**으로 설정한 다음 **Specify Body**에서 **Using JSON**을 선택하세요.
4. 본문을 입력하세요. 키는 출력 파라미터의 이름입니다.

```json
{ "prompt": "{{ $json.prompt }}" }
```

더 빠른 방법도 있습니다. HTTP Request 노드에서 **Import cURL**을 선택하고, 내 토큰을 넣은 아래 명령을 붙여 넣으세요.

```bash
curl -X POST "https://app.nodaro.ai/v1/webhooks/<token>" \
  -H "Content-Type: application/json" \
  -d '{"prompt": "A red kite over a green hill, morning light"}'
```

## 돌아오는 응답
Nodaro는 아무것도 생성하기 전에 바로 HTTP Request 노드에 응답합니다. 응답은 실행 ID가 담긴 `202`입니다.

```json
{ "executionId": "3f9e2b1a-7c6d-4e5f-8a9b-0c1d2e3f4a5b", "status": "pending" }
```

실행이 끝나면 Webhook 출력이 결과를 n8n Webhook 노드로 보냅니다. 본문에는 입력 파라미터마다 키가 하나씩 있고, 미디어 값은 Nodaro에 있는 파일의 주소입니다.

```json
{ "image_url": "https://cdn.nodaro.ai/images/2538b658-d2e1-42ee-890a-72ce06089feb.png" }
```

n8n에서는 들어온 본문이 `body` 아래에 있으므로, 다음 노드는 주소를 `{{ $json.body.image_url }}`로 읽습니다.

## Webhook 대신 폴링
n8n이 인터넷에서 오는 요청을 받을 수 없을 때는 [개인 API 토큰](https://nodaro.ai/docs/developers/api/authentication)으로 결과를 폴링하세요. 폴링은 개인 프로젝트에 있는 워크플로에서 작동합니다.

1. 3단계의 HTTP Request 노드를 그대로 두세요. 이 노드가 `executionId`를 반환합니다.
2. **Resume**을 **After Time Interval**로 설정한 **Wait** 노드를 추가하세요. 예를 들어 10초로 설정합니다.
3. **Method**가 **GET**이고 URL이 `https://app.nodaro.ai/v1/api/status/{{ $json.executionId }}`인 **HTTP Request** 노드를 추가하세요. `Authorization` 헤더에 `Bearer <your API token>` 값을 담아 보내고, 이 값은 n8n 자격 증명으로 저장하세요.
4. **If** 노드를 추가하세요. `status`가 `pending`이나 `running`인 동안에는 그 분기를 Wait 노드로 다시 연결하세요.
5. 상태가 `completed`가 되면 같은 방법으로 `https://app.nodaro.ai/v1/api/result/<executionId>`를 호출하세요. 응답에는 실행의 출력과 그 주소가 나열됩니다.

상태 응답과 결과 응답은 [새 입력값으로 워크플로 실행](https://nodaro.ai/docs/developers/api/workflows#run-a-workflow-with-new-input-values)에서 설명합니다.

## 미리 고려할 제한
| 제한 | 발생하는 일 | 대처 방법 |
| --- | --- | --- |
| 워크플로당 한 번에 실행 하나 | 실행 중에 보낸 요청은 진행 중인 실행의 `executionId`와 함께 `409`로 응답합니다. | 이전 결과가 도착한 뒤 다음 요청을 보내거나 워크플로를 복사하세요. |
| 주소당 분당 요청 10개 | 그보다 많은 요청은 `429`로 응답합니다. | 요청 간격을 두세요. |
| 전송 시도 1회 | Webhook 출력은 응답을 30초 동안 기다리며 재시도하지 않습니다. 전송에 실패하면 노드가 실패합니다. | **Respond**를 **Immediately**로 유지하고 n8n 워크플로를 게시하세요. |
| 공개 https:// 주소만 가능 | Webhook 출력은 localhost나 사설 주소로 보내지 않습니다. | n8n Cloud를 사용하거나, 셀프 호스팅한 n8n에 공개 주소를 부여하세요. |

## 비용
Webhook 트리거와 Webhook 출력은 비용이 들지 않습니다. 그 사이에 있는 노드의 크레딧만 에디터와 같은 가격으로 지불합니다. 위 예시에서는 실행마다 Nano Banana 2 이미지 한 장의 가격인 22크레딧이 듭니다. 실패한 노드에 예약된 크레딧은 자동으로 환불됩니다.

같은 방식은 [Make](https://nodaro.ai/docs/guides/make-integration)와 [Zapier](https://nodaro.ai/docs/guides/zapier-integration)에서도 작동합니다. 일정과 워크플로를 시작하는 다른 방법은 [자동화](https://nodaro.ai/docs/guides/automations)에서 다룹니다.

## 자주 묻는 질문

### n8n에서 Nodaro를 사용하려면 Nodaro API 키가 필요한가요?

아니요. n8n의 HTTP Request 노드가 Nodaro 워크플로의 Webhook 주소로 실행을 시작하고, Webhook 출력 노드가 결과를 n8n으로 돌려보냅니다. API 키는 결과를 폴링하는 방식을 쓸 때만 필요합니다.

### n8n은 완성된 이미지나 동영상을 어떻게 받나요?

Nodaro 워크플로 끝에 Webhook 출력 노드를 두고, n8n Webhook 노드의 Production URL을 그 노드에 붙여 넣으세요. 실행이 끝나면 Nodaro가 결과의 주소가 담긴 JSON 본문을 n8n으로 보냅니다.

### Nodaro가 409로 응답하는 이유는 무엇인가요?

Nodaro 워크플로가 이미 실행 중이고, 워크플로는 한 번에 요청 하나만 실행하기 때문입니다. 이전 결과가 도착한 뒤 다음 요청을 보내거나, 병렬로 실행하려면 워크플로의 사본을 만드세요.

### 셀프 호스팅한 n8n도 결과를 받을 수 있나요?

네, Nodaro가 그 n8n에 접근할 수 있다면 가능합니다. Webhook 출력 노드는 공개된 https:// 주소로만 보내므로, localhost에서만 실행되는 n8n에는 터널 같은 방법으로 먼저 공개 주소를 마련해야 합니다.

### 비용은 얼마인가요?

Webhook 트리거와 Webhook 출력은 무료입니다. 그 사이에 있는 노드의 크레딧만 에디터와 같은 가격으로 지불합니다.
