GODRICH

自動化 入門 — n8n の Webhook・HTTP 9選

n8nを知らなくても大丈夫です。アプリとAPIをコードなしでつなげて自動的に動かしてくれる道具で、開発者を雇わなくても繰り返しのAPI呼び出しを代わりにやらせられます。この記事は自動化 入門として、コピペで動くHTTP・Webhookワークフローを9つ集めました。

自動再生 · タイルを押すとその項目へ · すべて1つのzip

9つは実際に自動化を組み立てる時の順番で並べています。まずAPIを呼ぶ一番よくある2つ(01クエリパラメータ・02ページネーション)から始まり、受け取った値を整える2つ(03変換・04結合)を経て、データを外に送る1つ(05作成・更新)を通り、最後に失敗に備える3つ(06再試行・07ステータス分岐・08レート制限)と、逆にリクエストを受け取る1つ(09webhook)で終わります。コードが読めなくてもこの順番をたどれば、自動化がなぜこの形になるのか見えてきます。

01クエリパラメータ付き GET

HTTP Request が postId をクエリパラメータとして付けてコメント一覧を取得し、Set が名前・メール・本文の3フィールドだけ残します。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 が1ページずつ HTTP Request に渡して自分自身に戻り次のページを呼びます。HTTP が応答でアイテムをまるごと入れ替えてしまうので、Tag Page は元のノードを名前で直接指してページ番号を取り戻します。実務では一覧 API の全件収集、複数ページにまたがるデータの取得といった場面で使います。

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)` } }];"
  }
}

043つの呼び出しを連結

3つの HTTP Request がユーザー・投稿・タスクをそれぞれ取得し、Set が source フィールドで出所を示した後、Merge が Append モードで3つのリストを1つに積み上げます。キーで対にするのと違い、ただ連結するだけです。実務では複数 API の結果を1つの表に、通知チャネル3系統のログ統合といった場面で使います。

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

05作成するか更新するか

Code が新規作成用と更新用の2アイテムを出すと IF が振り分け、一方は POST(作成)、もう一方は PUT(更新)で送り、Merge が再び合流させます。同じリソースを新規作成するか更新するかその場で決める定番の骨格です。実務では CRM レコードの upsert、在庫の登録・修正を1本にまとめるといった場面で使います。

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 がその設定値を結果と一緒に残します。ノード1つで済む設定なので、別途 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の3つの応答を全部取得すると、Switch がステータスコードの範囲で成功・クライアントエラー・サーバーエラーの3方向に分けます。応答が失敗してもワークフローは止まりません。実務では決済 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 が3つの ID を1つずつ 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"
  }
}

09Webhook 多方向応答

Webhook が POST を受け取ると Switch が本文の type 値で order・refund・その他の3方向に分け、各枝が route ラベルを付けた後、Respond to Webhook がそのラベルを添えて常に200を返します。二択の検証とは違い複数方向に分けて応答するもので、インポートまでの確認にとどまり、実行には稼働中の Webhook URL が必要です。実務では決済・返金・その他のイベントを1つの Webhook で受ける、チャットボットのインテントルーティングといった場面で使います。

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" }
  }
}

準備 — アカウント・権限・バージョン

準備の欄が全部「なし」でも表を載せているのは、項目ごとに等級と n8n のバージョンが分かれているからです。等級は V0(構造確認)・V1(インポート確認)・V2(実行確認)の3段階で、この記事は09だけ V1、残り8つは全部 V2 に届いています。

項目 等級 準備 n8n バージョン
01 クエリパラメータ付き GET V2 なし 2.38.5
02 ページをめくりながら取得 V2 なし 2.38.5
03 レスポンスを変換 V2 なし 2.38.5
04 3つの呼び出しを連結 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 Webhook 多方向応答 V1(インポートまで確認。実行には自分の Webhook 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/ の中に9つの JSON がそのまま入っています。06の再試行設定にも似た落とし穴があり、retryOnFail や maxTries のような値は parameters の中ではなくノードオブジェクトの最上位(Settings タブ)にあるので、手で JSON を書く時に間違った場所に入れてしまいがちです。

FAQ

n8n cloud のアカウントでも開けますか?

開けます。アカウントが必要な認証情報やコミュニティノードを一切使っていないので、無料のクラウドプランでもインポートだけでそのまま動きます。09だけは例外で、実際に実行を確かめるにはクラウドが発行する本物の Webhook URL にリクエストを送る必要があります。

JavaScript が分からなくても使えますか?

使えます。n8n はノードをドラッグしてつなぎ、欄を埋めるだけの仕組みなので、この記事の JSON は中身を覗くための参考であって、自分で打ち込む必要はありません。AI ツールを使うなら prompt.md の文章をそのまま貼り付けても同じ構造ができます。

typeVersion のエラーが出たらどうすればいいですか?

自分の n8n で同じ種類のノードを新しく1つ作って export してみると、実際にサポートしているバージョン番号が分かります。この9つは n8n 2.38.5(Node 24)で検証済みで、再試行やエラー処理のオプション名は n8n の HTTP Request 公式ドキュメントの通りにしています。

n8n に初めて触るなら 自動化カテゴリの記事一覧で続きの例が見られますし、このサイトがどんな基準で検証しているかは 紹介ページ に書いています。

解凍パスワードを入力してください

パスワードはこの記事の本文の中にあります。読み進めると出てきます。