# Webhook トリガー

> ほかのアプリ、フォーム、自分のコードから HTTP POST でワークフローを開始し、プロンプトや画像の URL などの値を実行に渡します。

Source: https://nodaro.ai/ja/docs/nodes/automate/webhook-trigger

**Webhook トリガー**（Webhook Trigger）ノードは、ほかのシステムがワークフロー専用の Webhook のアドレスに HTTP POST リクエストを送ったときに、ワークフローを開始します。コンテンツ管理システム、フォーム、自動化ツール、自分のコードからワークフローを実行するのに使います。リクエストでは、プロンプトや画像の URL などの値を実行に渡せます。トリガー自体は無料です。

- Found in: Automate › Triggers
- Output: data
- API type: `webhook-trigger`

## 使いどころ
- コンテンツ管理システムで新しい記事が公開されたときに、動画を生成します。
- 商品写真など、ほかのアプリから送られてくる画像を処理します。
- HTTP POST リクエストを送れる自動化ツールやスクリプトから、ワークフローを開始します。
- 自分のコードで制御するコンテンツ制作のワークフローを作ります。

## クイックスタート
### ノードを追加する
キャンバス上で Tab を押し、**自動化 › トリガー › Webhook トリガー**を選びます。

### 受け取る値を定義する
設定パネルの**出力パラメーター**で、値ごとに**追加**をクリックします。各パラメーターには、JSON 本文のキーと一致する名前と、**テキスト**、**画像の URL**、**動画の URL**、**オーディオの URL** のいずれかのタイプを設定します。各パラメーターは、ノードの出力になります。

### 分岐を作る
出力を、その値を使うノードに接続し、その後ろにワークフローの残りの部分を作ります。

### ワークフローを保存する
保存すると、Webhook のアドレスが作成されます。ノードを選択すると、設定パネルの **Webhook URL** に完全なアドレスが表示されます。その横にあるコピーボタンをクリックします。

### リクエストを送る
アドレスに JSON 本文を POST します。ワークフローは、本文の値を使って実行されます。

Workflow: コンテンツシステムがプロンプトと画像の URL を送信し、動画生成がそれをクリップにします。Webhook 出力が、完成した動画を送り返します。

- Webhook トリガー → 動画生成
- 動画生成 → Webhook 出力

## 出力パラメーター
| フィールド | 説明 |
| --- | --- |
| **名前** | JSON 本文から読み取るキーです。名前が `prompt` なら、`"prompt"` の値を読み取ります。 |
| **タイプ** | 値の種類で、**テキスト**、**画像の URL**、**動画の URL**、**オーディオの URL** のいずれかです。Nodaro は、タイプに応じて、トリガーの後ろのノードに値を渡す方法を決めます。 |

各パラメーターは、パラメーター名がそのまま付いたノードの出力になります。出力は、そのキーの値をテキストとして運びます。本文にないキーの出力は、空になります。

パラメーターがない場合、ノードの出力は、本文全体を運ぶ **payload** の 1 つだけです。

## リクエストを送る
Webhook のアドレスに JSON 本文を POST します。本文のキーは、パラメーターの名前です。

```bash
curl -X POST "https://app.nodaro.ai/v1/webhooks/<token>" \
  -H "Content-Type: application/json" \
  -d '{"prompt": "A lighthouse at dawn, slow push-in", "imageUrl": "https://example.com/lighthouse.jpg"}'
```

セルフホスティング環境では、`https://app.nodaro.ai` の代わりに、自分の環境のアドレスを使います。

応答のステータスで、何が起きたかがわかります。

| ステータス | 意味 |
| --- | --- |
| `202` | 実行が始まりました。本文には、実行の `executionId` が含まれます。 |
| `404` | ノードが削除されたなどの理由で、このアドレスに応答する Webhook がありません。 |
| `403` | トリガーが API で一時停止されています。 |
| `409` | ワークフローはすでに実行中です。本文には、その実行の `executionId` が含まれます。 |
| `429` | このトークンに、1 分間で 10 を超えるリクエストが届きました。 |

## アドレスとトークン
- **保存するとアドレスが作成される**：ノードを追加してワークフローを保存すると、Nodaro がランダムな 64 文字のトークンと、`POST /v1/webhooks/<token>` というアドレスを作成します。最初に保存するまでは、設定パネルに「ワークフローを保存すると、このトリガーの URL が作成されます」と表示されます。
- **設定パネルからコピーする**：保存後は、パネルの **Webhook URL** に完全なアドレスが、コピーボタンと一緒に表示されます。その下には短縮したトークンが、専用の**コピー**ボタンと一緒に表示されます。
- **ノードには短縮したアドレスが表示される**：キャンバス上のノードには、`…/v1/webhooks/a1b2c3d4••••` のように、トークンの先頭部分だけを含むアドレスが表示されます。そのため、キャンバスのスクリーンショットからトークンが知られることはありません。
- **アドレスが見えるのは所有者だけ**：アドレスは、ワークフローの所有者のものです。ワークフローを編集できるほかの人には、アドレスの代わりに、保存を案内する上記のメッセージが表示されます。
- **アドレスは変わらない**：トークンは一度だけ作成され、その後に何度保存しても保持されます。そのため、ほかのシステムに渡したアドレスは使い続けられます。
- **ノードを削除するとアドレスは無効になる**：Webhook トリガーを削除して保存すると、アドレスは使えなくなります。
- **アドレスは API で読み取る**：`GET /v1/workflows/<id>/triggers` は、各トリガーのアドレスを `/v1/webhooks/<token>` という形式のパスとして、トークンと一緒に返します。`config.nodeId` がノードの ID と一致するトリガーが、このノードのトリガーです。

このアドレスは誰でもアクセスできる公開のアドレスで、トークンが唯一の保護の手段です。アドレスを知っている人は誰でもワークフローを開始でき、すべての実行の料金はワークフローの所有者に請求されます。アドレスは秘密にしてください。

## 制限
- **トークンごとに 1 分間に 10 リクエスト**：それを超えるリクエストには、ステータス `429` が返されます。
- **一度に 1 つの実行**：ワークフローの実行中に届いた新しいリクエストには、ステータス `409` が返されます。

## Webhook による実行の範囲
ノードに接続されているトリガーは、自身の分岐だけを実行します。分岐とは、トリガーの後ろにあるノードと、それらのノードが入力として必要とするすべてのノードです。何にも接続されていないトリガーは、ワークフロー全体を実行します。そのため、1 つのワークフローに、Webhook トリガーと[**スケジュールトリガー**（Schedule Trigger）](https://nodaro.ai/docs/nodes/automate/schedule-trigger)のように複数のトリガーを置き、それぞれに自分の分岐を開始させることができます。

ノードが接続されているとみなされるのは、線で接続されている場合、トリガーが入力を渡す[**グループ**（Group）](https://nodaro.ai/docs/nodes/automate/group)の中にある場合、フィールドのマッピングで結び付いている場合です。エディターからの手動実行、API からの実行、公開済みアプリの実行は、トリガーの分岐に限定されることはありません。

## クレジット
Webhook トリガーは無料です。各実行では、実行したノードの分の料金が、ワークフローの所有者に請求されます。

## ヒント
- **名前を一致させる**：ほかのシステムが送るキーの名前を、大文字と小文字も含めて正確に使います。
- **1 回のリクエストで試す**：本番のシステムを接続する前に、`curl` でリクエストを 1 回送ってみます。
- **結果を送り返す**：ワークフローの最後に [**Webhook 出力**（Webhook Output）](https://nodaro.ai/docs/nodes/publish/webhook-output)を置くと、結果を自分のサーバーに送信できます。
- **スケジュールでも実行する**：[スケジュールトリガー](https://nodaro.ai/docs/nodes/automate/schedule-trigger)を追加すると、同じワークフローを決まった時刻に実行できます。

API の詳細は、[Webhook](https://nodaro.ai/docs/developers/api/webhooks) を読んでください。

## Frequently asked questions

### ほかのアプリから Nodaro のワークフローを開始するにはどうすればよいですか？

ワークフローに Webhook トリガーを追加して保存します。保存すると、Webhook のアドレスが作成されます。ほかのアプリがそのアドレスに JSON 本文付きの HTTP POST リクエストを送ると、ワークフローが実行されます。

### Webhook の URL はどこで確認できますか？

ワークフローを保存してから、Webhook トリガーノードを選択します。設定パネルの「Webhook URL」に完全なアドレスが表示され、コピーボタンも付いています。アドレスの末尾は /v1/webhooks/ とトークンで、その後に保存し直しても変わりません。コードからは、GET /v1/workflows/<id>/triggers で読み取れます。

### プロンプトや画像をワークフローに渡すにはどうすればよいですか？

設定パネルで、値ごとに出力パラメーターを追加します。各パラメーターには、JSON 本文のキーと一致する名前と、「テキスト」や「画像の URL」などのタイプを設定します。各パラメーターはノードの出力になり、そのキーの値を運びます。

### Webhook のアドレスは安全ですか？

アドレスに含まれるトークンだけが保護の手段です。アドレスを知っている人は誰でもワークフローを開始でき、すべての実行の料金はワークフローの所有者に請求されます。アドレスは秘密にしてください。アドレスを無効にするには、ノードを削除して保存します。

### Webhook が受け付けられるリクエストは、どれくらいですか？

トークンごとに、1 分間に最大 10 リクエストです。ワークフローの実行中に届いたリクエストは、ステータス 409 で拒否されます。
