GODRICH

n8n 노코드 자동화 9가지 — 코드 없이 API 연결하기

n8n 노코드 자동화가 뭔지 몰라도 괜찮습니다 — n8n은 여러 앱과 API를 코드 없이 연결해 자동으로 실행해주는 도구이고, 개발자를 쓰지 않고도 API 호출·폼 처리 같은 반복 작업을 대신 돌릴 수 있습니다.

자동 재생 · 눌러서 해당 항목으로 · 전부 한 zip

아홉 개는 실제로 자동화를 짤 때 겪는 순서로 놓았습니다. 먼저 API를 부르는 가장 흔한 두 가지(01 쿼리 파라미터·02 페이지네이션)로 시작해, 받은 값을 다듬는 두 가지(03 변환·04 합치기)를 지나, 데이터를 밖으로 내보내는 한 가지(05 생성·수정)를 거쳐, 마지막으로 실패에 대비하는 세 가지(06 재시도·07 오류 분기·08 속도 제한)와 반대로 요청을 받는 한 가지(09 웹훅)로 끝납니다. 코드를 몰라도 이 순서만 따라가면 자동화가 왜 이렇게 생겼는지 보입니다.

01쿼리 파라미터로 GET

HTTP Request가 postId를 쿼리 파라미터로 붙여 댓글 목록을 가져오고 Set이 이름·이메일·본문 세 필드만 남깁니다. URL 끝에 물음표가 붙는 가장 흔한 요청 형태입니다. 실무에서는 특정 글의 댓글만 가져오기, 검색·필터 API 호출 같은 데 씁니다.

HTTP Request GET쿼리 파라미터V2 실행 확인
{
  "name": "Get Comments",
  "type": "n8n-nodes-base.httpRequest",
  "typeVersion": 4.5,
  "parameters": {
    "method": "GET",
    "url": "https://jsonplaceholder.typicode.com/comments",
    "sendQuery": true,
    "queryParameters": {
      "parameters": [
        { "name": "postId", "value": "1" }
      ]
    },
    "options": {}
  }
}

02페이지 넘기며 가져오기

Code가 페이지 번호 1·2·3을 만들면 Loop Over Items가 한 페이지씩 HTTP Request로 넘기고 다시 자기 자신으로 돌아가 다음 페이지를 부릅니다. HTTP가 응답을 페이지 번호로 통째로 바꿔버리기 때문에, Tag Page는 원래 노드를 이름으로 직접 가리켜 페이지 번호를 되살립니다. 실무에서는 목록 API 전체 수집, 100건 넘는 데이터 끌어오기 같은 데 씁니다.

Loop Over Items_page·_limitV2 실행 확인
{
  "name": "Tag Page",
  "type": "n8n-nodes-base.set",
  "typeVersion": 3.5,
  "parameters": {
    "mode": "manual",
    "assignments": {
      "assignments": [
        {
          "id": "1",
          "name": "page",
          "value": "={{ $('Make Pages').item.json.page }}",
          "type": "number"
        }
      ]
    },
    "includeOtherFields": true,
    "options": {}
  }
}

03응답 값 바꾸기

HTTP Request가 키 없는 날씨 API를 부르면 Code가 섭씨를 화씨로 계산하고 한 줄 요약 문장을 만듭니다. API가 준 값을 그대로 쓰지 않고 우리 쪽 형태로 바꾸는 가장 짧은 예입니다. 실무에서는 단위 변환, 응답 필드 이름 통일 같은 데 씁니다.

HTTP RequestCode 변환V2 실행 확인
{
  "name": "Convert Units",
  "type": "n8n-nodes-base.code",
  "typeVersion": 2,
  "parameters": {
    "jsCode": "const c = $input.first().json.current.temperature_2m;\nconst f = Math.round((c * 9 / 5 + 32) * 10) / 10;\nreturn [{ json: { tempC: c, tempF: f, summary: `Seoul is ${c}C (${f}F)` } }];"
  }
}

04호출 세 개 이어 붙이기

HTTP Request 세 개가 사용자·글·할 일을 각각 가져오고 Set이 source 필드로 출처를 표시한 뒤 Merge가 Append 모드로 세 목록을 하나로 쌓습니다. 짝을 맞추는 06과 달리 그냥 이어 붙입니다. 실무에서는 여러 API 결과를 한 표로, 알림 채널 3곳 로그 합치기 같은 데 씁니다.

HTTP Request ×3Merge appendV2 실행 확인
{
  "name": "Combine Three",
  "type": "n8n-nodes-base.merge",
  "typeVersion": 3.2,
  "parameters": {
    "mode": "append",
    "numberInputs": 3
  }
}

05만들거나 고치거나

Code가 만들 건과 고칠 건 두 아이템을 내면 IF가 나눠서 하나는 POST(생성), 하나는 PUT(수정)으로 보내고 Merge가 다시 합칩니다. 같은 자원을 새로 만들지 고칠지 그 자리에서 정하는 흔한 뼈대입니다. 실무에서는 CRM 레코드 upsert, 재고 등록·수정 한 워크플로 같은 데 씁니다.

IF 분기POST + PUTV2 실행 확인
{
  "name": "Update Post",
  "type": "n8n-nodes-base.httpRequest",
  "typeVersion": 4.5,
  "parameters": {
    "method": "PUT",
    "url": "=https://jsonplaceholder.typicode.com/posts/{{ $json.id }}",
    "sendBody": true,
    "specifyBody": "json",
    "jsonBody": "={{ JSON.stringify({ id: $json.id, title: $json.title, body: $json.body, userId: $json.userId }) }}"
  }
}

06실패하면 다시 시도

HTTP Request 노드 자체에 재시도 3회·1.5초 간격을 설정해두고 Set이 그 설정값을 결과에 같이 남깁니다. 노드 하나로 되는 설정이라 별도 IF나 루프가 필요 없습니다. 실무에서는 불안정한 외부 API 호출, 야간 배치의 일시적 오류 흡수 같은 데 씁니다.

retryOnFailmaxTries 3V2 실행 확인
{
  "name": "Get User With Retry",
  "type": "n8n-nodes-base.httpRequest",
  "typeVersion": 4.5,
  "retryOnFail": true,
  "maxTries": 3,
  "waitBetweenTries": 1500,
  "onError": "continueRegularOutput",
  "parameters": {
    "method": "GET",
    "url": "https://jsonplaceholder.typicode.com/users/1"
  }
}

07상태 코드로 갈래 나누기

HTTP Request가 Never Error 옵션으로 200·404·500 세 응답을 전부 받아오면 Switch가 상태 코드 구간별로 성공·클라이언트 오류·서버 오류 세 갈래로 나눕니다. 응답이 실패해도 워크플로가 멈추지 않습니다. 실무에서는 결제 API 실패 분기, 상태별로 다른 알림 보내기 같은 데 씁니다.

neverErrorSwitch 3 routesV2 실행 확인
{
  "name": "Call Endpoint",
  "type": "n8n-nodes-base.httpRequest",
  "typeVersion": 4.5,
  "parameters": {
    "method": "GET",
    "url": "={{ $json.url }}",
    "options": {
      "response": {
        "response": {
          "fullResponse": true,
          "neverError": true
        }
      }
    }
  }
}

08속도 제한 피해 천천히

Loop Over Items가 아이디 세 개를 하나씩 HTTP Request로 넘기고 Wait가 매번 1초씩 쉬었다가 다시 루프로 돌아갑니다. API가 초당 호출 수를 제한할 때 그대로 쓰는 형태입니다. 실무에서는 대량 API 호출 시 한도 초과 방지, 크롤링 속도 조절 같은 데 씁니다.

Loop Over ItemsWait 1sV2 실행 확인
{
  "name": "Throttle",
  "type": "n8n-nodes-base.wait",
  "typeVersion": 1.1,
  "parameters": {
    "resume": "timeInterval",
    "amount": 1,
    "unit": "seconds"
  }
}

09웹훅 다갈래 응답

Webhook이 POST를 받으면 Switch가 본문의 type 값으로 order·refund·그 외 세 갈래를 나누고 각 갈래가 route 라벨을 붙인 뒤 Respond to Webhook이 그 라벨을 담아 항상 200을 돌려줍니다. 03편의 IF 이분법과 달리 여러 갈래로 나눠 응답하며, 가져오기까지만 확인했습니다 — 실행은 살아있는 웹훅 URL이 있어야 합니다. 실무에서는 결제·환불·기타 이벤트를 한 웹훅으로 받기, 챗봇 인텐트 라우팅 같은 데 씁니다.

WebhookSwitch 3 routesV1 가져오기 확인
{
  "name": "Route By Type",
  "type": "n8n-nodes-base.switch",
  "typeVersion": 3.4,
  "parameters": {
    "mode": "rules",
    "rules": {
      "values": [
        {
          "conditions": {
            "conditions": [
              {
                "leftValue": "={{ $json.body.type }}",
                "rightValue": "order",
                "operator": { "type": "string", "operation": "equals" }
              }
            ]
          },
          "outputKey": "order"
        }
      ]
    },
    "options": { "fallbackOutput": "extra", "renameFallbackOutput": "other" }
  }
}

준비물 — 계정·권한·버전

준비물 칸이 전부 "없음"으로 똑같아 보여도 이 표를 넣은 건 항목마다 등급이 갈리기 때문입니다. 등급은 V0(구조 확인)·V1(가져오기 확인)·V2(실행까지 확인) 세 단계로 나뉘고, 이 편은 09만 V1이고 나머지 여덟은 전부 V2에 닿았습니다.

항목 등급 준비물 n8n 버전
01 쿼리 파라미터로 GET V2 없음 2.38.5
02 페이지 넘기며 가져오기 V2 없음 2.38.5
03 응답 값 바꾸기 V2 없음 2.38.5
04 호출 세 개 이어 붙이기 V2 없음 2.38.5
05 만들거나 고치거나 V2 없음 2.38.5
06 실패하면 다시 시도 V2 없음 2.38.5
07 상태 코드로 갈래 나누기 V2 없음 2.38.5
08 속도 제한 피해 천천히 V2 없음 2.38.5
09 웹훅 다갈래 응답 V1 (가져오기까지 확인, 실행은 당신의 웹훅 URL로) 없음 2.38.5

n8n 화면에 올리는 방법은 취향껏 고르면 됩니다. JSON을 복사해 캔버스에 Ctrl/Cmd+V로 붙여넣어도 되고, 상단 메뉴 Import from File로 압축 푼 파일을 직접 골라도 됩니다. 올라온 뒤엔 좌상단 Test workflow 버튼을 누르거나 Manual Trigger의 재생 아이콘을 클릭하면 그 자리에서 흐름이 움직이는 걸 볼 수 있습니다.

어디서 깨지는가 — 함정 하나

가장 헷갈렸던 지점은 07의 Never Error 옵션입니다. HTTP Request에서 Never Error만 켜면 4xx·5xx 응답에도 워크플로가 안 멈추긴 하는데, statusCode 필드 자체가 안 나와서 정작 그 값으로 갈래를 나눌 수가 없습니다 — Full Response 옵션을 같이 켜야 statusCode·headers·body가 한 덩어리로 나옵니다. 이 zip을 열 때 쓰는 비번은 kjnkjsfx이고, 압축을 풀면 workflows/ 안에 아홉 개 JSON이 그대로 들어 있습니다. 06의 재시도 설정도 비슷한 함정이 있는데, retryOnFail·maxTries 같은 값은 parameters 안이 아니라 노드 객체 맨 위(Settings 탭)에 있어서 손으로 JSON을 짤 때 엉뚱한 자리에 넣기 쉽습니다.

FAQ

n8n cloud 계정으로도 열리나요?

열립니다. 계정이 필요한 자격증명이나 커뮤니티 노드를 하나도 안 써서 무료 클라우드 계정에서도 Import 메뉴만으로 아홉 개가 그대로 올라갑니다. 다만 09는 클라우드가 실제로 발급하는 웹훅 주소로 요청을 보내야 응답까지 확인됩니다.

자바스크립트를 몰라도 이걸 쓸 수 있나요?

쓸 수 있습니다. n8n은 노드를 끌어다 선끼리 잇고 빈칸을 채우는 방식이라, 본문의 JSON은 안을 들여다보는 참고 자료일 뿐 직접 타이핑할 일은 없습니다. AI 도구를 쓴다면 prompt.md의 문장을 그대로 붙여 넣어도 같은 흐름이 나옵니다.

typeVersion 관련 오류가 뜨면 어떻게 하나요?

쓰고 있는 n8n에서 같은 종류의 노드를 하나 새로 만들어 export해보면 그 버전이 실제로 지원하는 숫자를 알 수 있습니다. 이 워크플로 아홉 개는 n8n 2.38.5(Node 24)에서 검증했고, 재시도·오류 무시 같은 옵션 이름은 n8n HTTP Request 공식 문서를 그대로 따랐습니다.

n8n을 처음 만져본다면 자동화 기둥 글 모음에서 이어지는 예제를 볼 수 있고, 이 사이트가 어떤 기준으로 검증하는지는 소개 페이지에 적어 두었습니다.

압축 비밀번호를 입력하세요

비밀번호는 이 글 본문 안에 있습니다. 읽다 보면 나옵니다.