Webhook
Webhook トリガーの URL で任意のシステムからワークフローを開始し、API でスケジュールを作成し、Webhook 出力で結果を自分のサーバーに送信します。
Webhook は、Nodaro とほかのシステムを双方向につなぎます。Webhook トリガー(Webhook Trigger)ノードは、どのシステムからでも呼び出して実行を開始できる URL を、ワークフローに与えます。スケジュールトリガー(Schedule Trigger)は、それをタイムテーブルどおりに実行します。Webhook 出力(Webhook Output)ノードは、実行の結果を自分のサーバーに送信します。Nodaro が自分からこちらを呼び出すことはありません。実行が終わったことを知るには、それをポーリングするか、Webhook 出力ノードでワークフローを終えてください。
エンドポイント
| メソッド | パス | 説明 |
|---|---|---|
POST | /v1/webhooks/:token | 実行を開始します。公開のルートで、パス内のトークンが認証情報です。 |
GET | /v1/workflows/:id/triggers | ワークフローのトリガーを返します。各 Webhook の URL とトークンを含みます。 |
PATCH | /v1/workflow-triggers/:id | isActive でトリガーを一時停止または再開するか、スケジュールの config を変更します。 |
POST | /v1/workflow-triggers | どのノードにも紐付かないトリガーを、手動で作成します。 |
POST | /v1/workflows/:id/sync-triggers | ワークフローの保存済みバージョンから、トリガーノードを登録し直します。 |
HTTP 呼び出しでワークフローを開始する
Webhook トリガーを追加する
Webhook トリガーノードをワークフローに追加します。出力パラメーターで、呼び出し元が送信する値ごとに、パラメーターを 1 つ追加します。各パラメーターには、リクエストの JSON ボディのキーと一致する名前と、タイプ(text、imageUrl、videoUrl、audioUrl のいずれか)があります。パラメーターは、それを使うノードに接続します。
ワークフローを保存する
保存すると、エンドポイントが作成されます。Nodaro が 32 バイトのトークンを発行し、POST /v1/webhooks/<token> を登録します。これは、エディター、API、SDK、インポート、MCP のいずれでワークフローを保存した場合でも起こります。トークンは一度だけ発行され、その後は保持されるので、外部のシステムに渡した URL は、その後何度保存してもそのまま使えます。ノードを削除すると、URL は無効になります。
URL を読み取る
GET /v1/workflows/<id>/triggers は、ワークフローのトリガーを返します。各 Webhook の webhookUrl と webhookToken を含みます。webhookUrl は /v1/webhooks/<token> というパスなので、その前に自分の Nodaro のアドレスを付けてください。config.nodeId がノードの ID と一致するトリガーが、その Webhook トリガーノードのものです。一覧に表示されるのは、自分が所有するワークフローのトリガーだけです。
エディターでは、ノードの設定パネルの Webhook URL に、同じアドレスが完全な形で、コピーボタンとともに表示されます。
呼び出す
JSON ボディを付けて POST を送信します。Authorization ヘッダーは必要ありません。URL 内のトークンが認証情報です。
curl -s -X POST "https://app.nodaro.ai/v1/webhooks/$WEBHOOK_TOKEN" \
-H "Content-Type: application/json" \
-d '{"prompt": "a lighthouse in a storm", "imageUrl": "https://example.com/lighthouse.jpg"}'このボディが、トリガーのペイロードになります。各パラメーターは、同じ名前のキーを読み取り、そのタイプによって値の渡し先が決まります。imageUrl は画像の入力に、videoUrl は動画の入力に渡されます。
各 Webhook トリガーは、1 分あたり 10 リクエストを受け付けます。この上限は、API トークンの上限とは別です。
呼び出し元としてよくあるのは、顧客の登録時にオンボーディング動画を開始する決済システム、リリースノートの要約を求めるコードリポジトリ、新しい記事を公開するコンテンツシステム、ノーコードの自動化ツールなどです。
トリガーによる実行の範囲
- 何かに接続されたトリガーは、自分の分岐だけを実行します。トリガーより後ろにあるノードと、それらのノードが入力として必要とするすべてのノードです。
- どこにも接続されていないトリガーは、ワークフロー全体を実行します。
- そのため、1 つのワークフローに複数のトリガーを置き、それぞれに自分の分岐を開始させることができます。
- 「接続」とは、ほかのノードに値を渡すものすべてを指します。線で結んだ接続、グループ(Group)の中にあるノード、またはフィールドのマッピングです。
- エディター、API、公開したアプリからの実行は、トリガーによる制限を受けません。常に実行する範囲を、そのまま実行します。
API で手動作成したトリガーは、どのノードも指定しません。この場合 Nodaro は、キャンバス上の唯一の Webhook トリガーを使います。2 つある場合は、ワークフロー全体が実行されます。
URL を秘密にする
トークンが唯一の認証情報なので、URL を持っている人は誰でも実行を開始でき、あなたのクレジットを消費できます。組織のワークスペースにあるワークフローでは、実行の代金はワークスペースの予算から支払われます。URL を共有した相手は誰でも、そのクラスやチームのクレジットを消費できます。
Webhook、スケジュール、Telegram のいずれからの自動実行でも、実行の前に、トリガーの作成者がまだそのワークフローを実行できるかどうかが確認されます。権限付与が取り消された、メンバーシップが停止された、またはワークスペースがアーカイブされたなどの理由で実行できなくなっていた場合、自動化は停止します。この場合、ワークフローの実行履歴には、コード run_requires_authenticated_member を伴う失敗が 1 件表示されます。
API でトリガーを管理する
トリガーノードは、ワークフローを保存すると自分自身を登録します。4 つのルートが、それらを直接管理します。
GET /v1/workflows/<id>/triggersは、ワークフローのトリガーを一覧表示します。PATCH /v1/workflow-triggers/<id>は、{ "isActive": false }でトリガーを一時停止し、trueで再開します。ノードに属するトリガーでは、次に保存したときにノード自身のスイッチが再び適用されるので、後々まで残したい変更にはノードのスイッチを使ってください。送信したconfigは、保存済みの内容にマージされます。変更する項目だけを送信してください。トリガーとノードの紐付けと、実行回数は保持されます。POST /v1/workflows/<id>/sync-triggersは、ワークフローの保存済みバージョンから、トリガーノードを登録し直します。エディターは、保存するたびにこれを呼び出し、編集権限を持つ人なら誰でも呼び出せます。レスポンスは{ "data": { "synced": …, "created": …, "updated": …, "removed": … } }です。POST /v1/workflow-triggersは、どのノードにも属さないトリガーを作成します。そのため、ワークフローを保存しても、変更されたり削除されたりすることはありません。トリガーは誰も見ていない状態で実行されるものなので、作成には、ワークフローの実行と同じ権限が必要です。
スケジュール
スケジュールトリガーは、ワークフローをタイムテーブルどおりに実行します。スケジュールはルールのリストで、いずれかのルールが現在の分と一致するたびに、ワークフローが実行されます。
スケジュールをオンにする
スケジュールトリガーノードは、データが "active": true(ノードのスイッチ)を示している間だけ実行されます。API、SDK、MCP で active なしに書き込まれたノードは、一時停止中の状態で登録されます。エディターのスイッチとスケジュールボタンは、同じフィールドを設定します。テンプレートのエクスポートにこのフィールドが含まれることはないため、インポートしたスケジュールは必ず一時停止の状態で始まります。
スケジュールを手動で作成する
{
"workflowId": "8c2d7f1e-3a4b-4c5d-9e6f-7a8b9c0d1e2f",
"type": "schedule",
"config": {
"rules": [
{ "kind": "days", "every": 1, "hour": 9, "minute": 0 },
{ "kind": "weeks", "every": 2, "weekdays": [1, 3], "hour": 18, "minute": 30 }
],
"timezone": "Asia/Jerusalem"
}
}これを POST /v1/workflow-triggers に送信します。スケジュールトリガーノードが保存するのも、これと同じ形の config です。
config フィールド | 意味 |
|---|---|
rules | 1 つ以上のルールです。いずれかのルールが一致すると、ワークフローが実行されます。 |
timezone | ルールを読み取る基準となる時計で、Asia/Jerusalem のようなゾーン名で指定します。省略すると UTC になります。 |
maxExecutions | この回数だけ実行すると停止します。スケジュールは登録されたままなので、続けるには回数を増やすか、空にしてください。 |
kind | フィールド | 実行されるタイミング |
|---|---|---|
minutes | every(1〜59) | 毎時、0 分、N 分、2N 分…の時点 |
hours | every(1〜23)、minute | 毎日 0 時、N 時、2N 時…の、指定した分 |
days | every(1〜31)、hour、minute | 暦日で N 日ごとの、指定した時刻 |
weeks | every(1〜52)、weekdays(0 が日曜日、6 が土曜日)、hour、minute | 指定した曜日の、N 週ごと |
months | every(1〜12)、dayOfMonth(1〜31)、hour、minute | N か月ごとの、指定した日。月の日数が足りない場合は、その月の最終日 |
cron | cron(5 フィールドの式) | 式に一致するたび |
- N 日、N 週、N か月ごとは、いずれも固定された起点から数えます。週は月曜日に始まるため、保存し直しても、スケジュールが実行される日がずれることはありません。
cronルールでは、日と曜日の組み合わせも含め、すべてのフィールドが一致する必要があります。一部の cron ツールでは、日と曜日はどちらか一方が一致すれば実行されます。7は、0と同じく日曜日を意味します。- 範囲外の値には
400が返されます。サーバーが認識できないタイムゾーンでも同様です。 - 手動で作成するトリガーでは、古い形式も引き続き使えます。
5m、1h、1dのようなintervalや、cron文字列です。これらで保存されたスケジュールトリガーノードは、ルールに変換されます。
スケジュールの実行の仕組み
- サーバーは、すべてのスケジュールを 1 分ごとに確認し、いずれかのルールがその分に一致すると、ワークフローを実行します。
- 同じ分が 2 回実行されることはありません。再起動や時刻の変更をまたいでも同様です。時刻の切り替えで飛ばされた分は、その日はスキップされます。
- ワークフローの前回の実行がまだ続いている場合、その分はスキップされます。
- 実行できないノードは、実行不可の状態になります。たとえば、式のない
cronルールや、認識できないタイムゾーンです。何も推測されないので、ノードを修正して、もう一度保存してください。
結果を自分のサーバーに送信する
Webhook 出力ノードは、そのノードに渡された結果を、設定したパラメーターとともに、POST リクエストとして自分の URL に送信します。パラメーターのタイプは、トリガーと同じ text、imageUrl、videoUrl、audioUrl です。メディアの値は、Nodaro が保存したファイルの URL で、自分のサーバーからダウンロードできます。
自分のエンドポイントがエラーを返すと、ノードは失敗し、そのエラーが実行の履歴に表示されます。https の URL を使ってください。
リクエストにキーを付けて送信する
多くのエンドポイントは、ヘッダーにキーが含まれたリクエストしか受け付けません。ヘッダー名とキーを、Web アプリの連携 › HTTP 認証情報で認証情報として一度だけ保存し、ノードで選びます。キーが、ワークフロー、エクスポート、テンプレートに含まれることはありません。
キーを保存するときは、それを使える範囲を選びます。
| 選択肢 | 機能する場面 |
|---|---|
| すべてのアドレス(ロックなしの認証情報) | 自分で開始した実行です。エディターからの実行と、エディターで設定したスケジュールです。 |
| 1 つのアドレスのみ(ロックされた認証情報) | すべての実行で機能しますが、送信先はそのアドレス、または許可されていればその配下のパスに限られます。 |
API トークンや OAuth トークンで開始した実行、Webhook トリガーによる実行、API で作成したスケジュールによる実行、公開したアプリからの実行は、あなたとして動作しますが、あなた自身が開始したものではありません。そうした実行のためには、認証情報をロックしてください。ロックしていない認証情報は、送信する代わりに、わかりやすいメッセージを出してノードを失敗させます。ロックした認証情報が送信されるのは、ノードの URL がそのアドレスと一致するときだけで、別のアドレスへのリダイレクトには従わず、キーが暗号化されていない http で送信されることもありません。
認証情報を付けている場合、ノードは自分のエンドポイントからの応答の本文を保持も表示もせず、扱うのはステータスコードだけです。認証情報は Web アプリでのみ管理します。認証情報のルートは、トークンに対して 403 in_app_only を返します。アプリの公開や、ほかの人が実行できるワークフローの共有は、サブワークフロー内のものも含め、送信に使うすべての認証情報が、ノードの送信先のアドレスにロックされるまで、409 credential_unbound を返します。
API での実行はコールバックなし
API から開始した実行は、終わっても URL を呼び出しません。結果を知る方法は、2 つあります。
- ポーリングする。
GET /v1/workflow-executions/:idで実行を追跡するか、GET /v1/jobs/:id/statusで 1 つのノードのジョブを追跡します。実行とジョブを参照してください。 - ワークフローに知らせてもらう。結果を自分のサーバーに送信する Webhook 出力ノードで、ワークフローを終えます。
よくある質問
関連ページ
Webhook トリガー
スケジュールトリガー
Webhook 出力
自動化
実行
最終更新