自動化 入門 — n8n の Webhook・HTTP 9選
n8nを知らなくても大丈夫です。アプリとAPIをコードなしでつなげて自動的に動かしてくれる道具で、開発者を雇わなくても繰り返しのAPI呼び出しを代わりにやらせられます。この記事は自動化 入門として、コピペで動くHTTP・Webhookワークフローを9つ集めました。
自動再生 · タイルを押すとその項目へ · すべて1つのzip
- 01 クエリパラメータ付き GET
- 02 ページをめくりながら取得
- 03 レスポンスを変換
- 04 3つの呼び出しを連結
- 05 作成するか更新するか
- 06 失敗したら再試行
- 07 ステータスコードで分岐
- 08 レート制限を避けてゆっくり
- 09 Webhook 多方向応答
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 の呼び出しといった場面で使います。
{
"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 の全件収集、複数ページにまたがるデータの取得といった場面で使います。
{
"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 が返した値をそのまま使わず自分たちの形に変える一番短い例です。実務では単位変換、レスポンスのフィールド名統一といった場面で使います。
{
"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系統のログ統合といった場面で使います。
{
"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本にまとめるといった場面で使います。
{
"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 の呼び出し、夜間バッチの一時的なエラー吸収といった場面で使います。
{
"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 失敗時の分岐、ステータス別に異なる通知を送るといった場面で使います。
{
"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 呼び出し時の制限超過防止、収集速度の調整といった場面で使います。
{
"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 で受ける、チャットボットのインテントルーティングといった場面で使います。
{
"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 に初めて触るなら 自動化カテゴリの記事一覧で続きの例が見られますし、このサイトがどんな基準で検証しているかは 紹介ページ に書いています。