生活や仕事に役立つライフハック、お得な情報を発信しています。⚠️記事内にPRを含みます

n8nのAPIを外部から呼び出す方法|ワークフローをトリガーするエンドポイント作成

「n8nで作成したワークフローを、他のシステムから呼び出したい」

「外部アプリケーションからn8nの処理を実行する方法がわからない」

「APIエンドポイントを作成して、自動化の幅を広げたい」

このような悩みを抱えていませんか?

n8nは強力な自動化ツールですが、外部システムとの連携方法がわからないと、その真価を発揮できません。

実は、n8nにはWebhookという機能があり、これを使えば簡単に外部からワークフローを実行できるAPIエンドポイントを作成できます。

この記事では、n8nのWebhookノードを使用して、外部システムから呼び出し可能なAPIエンドポイントを作成する方法を、実際のコード例とともに詳しく解説します。

読み終わる頃には、あなたも自由自在にn8nのワークフローを外部から制御できるようになっているでしょう。

n8nのAPI連携が必要な理由と現状の課題

n8nは、ノーコード・ローコードで業務を自動化できる優れたツールです。しかし、n8n単体では対応できない場面も存在します。

例えば、以下のようなケースを考えてみましょう:

  • ECサイトで注文が入った瞬間に、n8nの在庫管理ワークフローを実行したい
  • 社内システムのボタンクリックで、n8nの定型処理を開始したい
  • 外部のモニタリングツールがエラーを検知したら、n8nで通知処理を行いたい
  • モバイルアプリから直接n8nのワークフローを呼び出したい

これらの場面では、外部システムからn8nのワークフローを実行する仕組みが必要です。多くの開発者は、この連携方法がわからずに以下の問題に直面しています:

1. 手動実行の限界
n8nの管理画面から手動でワークフローを実行するのは、リアルタイム性が求められる処理には向いていません。例えば、顧客からの問い合わせがあるたびに手動で実行していては、対応が遅れてしまいます。

2. システム間の分断
既存システムとn8nが連携できないと、データの二重管理や手作業でのデータ転記が発生します。これは効率化を目指すn8n導入の目的に反します。

3. スケーラビリティの問題
処理量が増えても自動的に対応できる仕組みがないと、業務の成長に合わせてシステムを拡張できません。

これらの課題を解決するのが、n8nのWebhook機能を使ったAPI連携です。適切に設定すれば、任意のタイミングで外部からワークフローを実行でき、真の業務自動化を実現できます。

n8nのWebhookを使ったAPIエンドポイント作成方法

それでは、実際にn8nでAPIエンドポイントを作成する手順を見ていきましょう。Webhookノードを使用することで、HTTPリクエストを受け取ってワークフローを実行できるようになります。

Step 1: Webhookノードの追加と基本設定

まず、n8nの編集画面で新しいワークフローを作成し、Webhookノードを追加します。

1. 左側のノード一覧から「Webhook」を検索して選択
2. ワークフローキャンバスにドラッグ&ドロップ
3. Webhookノードをダブルクリックして設定画面を開く

基本的な設定項目は以下の通りです:

  • HTTP Method: GET、POST、PUT、DELETEなどから選択(通常はPOSTを使用)
  • Path: エンドポイントのパス(例:/api/process-order)
  • Authentication: 認証方式の選択(Basic認証、Header認証など)
  • Response Mode: レスポンスの返し方(即座に返すか、処理完了後に返すか)

Step 2: Webhook URLの確認と環境別設定

Webhookノードを保存すると、自動的にURLが生成されます。このURLは環境によって異なります:

テスト環境での URL例:

https://your-n8n-instance.com/webhook-test/[workflow-id]/api/process-order

本番環境での URL例:

https://your-n8n-instance.com/webhook/[workflow-id]/api/process-order

重要な点として、テスト環境のURLは「webhook-test」、本番環境は「webhook」というパスになることに注意してください。

Step 3: リクエストデータの受け取りと処理

Webhookノードは受け取ったデータを次のノードに渡します。データの取得方法を具体例で見てみましょう:

POSTリクエストのJSONデータを処理する例:

{
"orderId": "ORD-12345",
"customerEmail": "customer@example.com",
"totalAmount": 15000,
"items": [
{
"productId": "PROD-001",
"quantity": 2
}
]
}

このデータをn8nで受け取った後、次のノードでは以下のように参照できます:

  • {{ $json.orderId }} で注文IDを取得
  • {{ $json.customerEmail }} で顧客メールアドレスを取得
  • {{ $json.items[0].productId }} で最初の商品IDを取得

Step 4: 認証の実装

セキュリティを確保するため、認証の設定は必須です。n8nでは複数の認証方式をサポートしています:

1. Basic認証の設定:

  • Authenticationで「Basic Auth」を選択
  • ユーザー名とパスワードを設定
  • リクエスト時にAuthorizationヘッダーが必要

2. Headerベース認証の設定:

  • Authenticationで「Header Auth」を選択
  • ヘッダー名(例:X-API-Key)と値を設定
  • より柔軟な認証が可能

Step 5: 実際の呼び出し例

設定が完了したら、実際に外部から呼び出してみましょう。以下はcURLとPythonでの実装例です:

cURLでの呼び出し例:

curl -X POST \
https://your-n8n-instance.com/webhook/abc123/api/process-order \
-H "Content-Type: application/json" \
-H "X-API-Key: your-secret-key" \
-d '{
"orderId": "ORD-12345",
"customerEmail": "customer@example.com",
"totalAmount": 15000
}'

Pythonでの呼び出し例:

import requests

url = "https://your-n8n-instance.com/webhook/abc123/api/process-order"
headers = {
"Content-Type": "application/json",
"X-API-Key": "your-secret-key"
}
data = {
"orderId": "ORD-12345",
"customerEmail": "customer@example.com",
"totalAmount": 15000
}

response = requests.post(url, json=data, headers=headers)
print(response.json())

よくある失敗とその回避方法

1. URLの間違い
テスト環境と本番環境でURLが異なることを忘れがちです。環境変数を使って管理することをお勧めします。

2. タイムアウトエラー
デフォルトでは120秒でタイムアウトします。長時間の処理が必要な場合は、Response Modeを「When Last Node Finishes」から「Immediately」に変更し、非同期処理として実装しましょう。

3. データ形式の不一致
JSONのネストが深い場合、正しくデータを参照できないことがあります。Code Nodeを使って明示的にデータを整形することで回避できます。

他の連携方法との比較

n8nを外部から実行する方法は、Webhook以外にもいくつか存在します。それぞれの特徴を比較してみましょう。

1. n8n CLI(コマンドラインインターフェース)

メリット:

  • サーバー上で直接実行できる
  • バッチ処理に適している
  • 認証が不要(サーバー内部での実行)

デメリット:

  • 外部システムからの直接呼び出しが困難
  • リアルタイム処理には不向き
  • n8nがインストールされた環境でのみ実行可能

2. n8n API(REST API)

メリット:

  • ワークフローの管理(作成、更新、削除)が可能
  • 実行履歴の取得ができる
  • プログラムからの制御が容易

デメリット:

  • APIキーの管理が必要
  • Webhookに比べて設定が複雑
  • ワークフロー実行時にIDの指定が必要

3. Webhookの優位性

Webhookは以下の点で他の方法より優れています:

  • 簡単な実装: ノードを追加するだけで即座に使用可能
  • 柔軟な認証: 複数の認証方式から選択できる
  • データの受け渡し: POSTデータを直接ワークフローで使用できる
  • スケーラビリティ: 同時に複数のリクエストを処理可能

特に、外部システムとのリアルタイム連携が必要な場合は、Webhookが最適な選択肢となります。

まとめと次のステップ

この記事では、n8nのWebhook機能を使って外部から呼び出し可能なAPIエンドポイントを作成する方法を解説しました。重要なポイントを整理すると:

  • Webhookノードを使用することで、簡単にAPIエンドポイントを作成できる
  • 適切な認証設定により、セキュアな連携が可能
  • 外部システムからHTTPリクエストを送信するだけでワークフローを実行できる
  • テスト環境と本番環境でURLが異なることに注意が必要

次のステップとして、以下の行動をお勧めします:

1. 実際にWebhookを作成してテストする
まずは簡単なワークフローから始めて、徐々に複雑な処理に挑戦してみましょう。

2. エラーハンドリングを実装する
Error Triggerノードを使用して、エラー時の処理も実装することで、より堅牢なシステムを構築できます。

3. n8nの基本を学ぶ
n8nの基本的な使い方や他の機能について詳しく知りたい方は、n8n完全ガイド記事をご覧ください。初心者から上級者まで、体系的にn8nを学べる内容となっています。

n8nのAPI連携をマスターすることで、あなたの業務自動化は新たなステージに進みます。外部システムとシームレスに連携し、真の自動化を実現しましょう。今すぐn8nを始めて、業務効率化の第一歩を踏み出してください。