Webhooks
Gateway(ゲートウェイ)は、外部トリガー用に小規模な HTTP ウェブフックエンドポイントを公開できます。有効化
hooks.tokenは、hooks.enabled=trueの場合に必須です。hooks.pathのデフォルトは/hooksです。
認証
すべてのリクエストにはフックトークンを含める必要があります。ヘッダーの使用を推奨します。 ヘッダーを優先:Authorization: Bearer <token>(推奨)x-openclaw-token: <token>- クエリ文字列のトークンは拒否されます(
?token=...は400を返します)。
エンドポイント
POST /hooks/wake
ペイロード:
text必須(string): イベントの説明(例: 「New email received」)。mode任意(now|next-heartbeat): 即時ハートビートをトリガーするか(デフォルトはnow)、次回の定期チェックまで待機するか。
- main セッション向けにシステムイベントをキューに追加します。
mode=nowの場合、即時ハートビートをトリガーします。
POST /hooks/agent
ペイロード:
message必須(string): エージェントが処理するプロンプトまたはメッセージ。name任意(string): フックの人間可読な名前(例: 「GitHub」)。セッションサマリーのプレフィックスとして使用されます。agentIdは任意(文字列): このフックを特定のエージェントにルーティングします。 不明な ID はデフォルトエージェントにフォールバックします。 設定されている場合、このフックは解決されたエージェントの workspace と設定を使用して実行されます。sessionKey任意(string): エージェントのセッションを識別するためのキー。デフォルトはランダムなhook:<uuid>です。一貫したキーを使用すると、フックコンテキスト内でのマルチターン会話が可能になります。 デフォルトでは、このフィールドはhooks.allowRequestSessionKey=trueが設定されていない限り拒否されます。wakeMode任意(now|next-heartbeat): 即時ハートビートをトリガーするか(デフォルトはnow)、次回の定期チェックまで待機するか。deliver任意(boolean):trueの場合、エージェントの応答がメッセージングチャンネルに送信されます。デフォルトはtrueです。ハートビート確認のみの応答は自動的にスキップされます。 デフォルトはtrueです。 ハートビート認識のみのレスポンスは自動的にスキップされます。channeloptional (string): 配信のためのメッセージングチャネル。channeloptional (string): 配信のためのメッセージングチャネル。channel任意(string): 配信先のメッセージングチャンネル。次のいずれか:last,whatsapp,telegram,discord,slack,mattermost(plugin),signal,imessage,msteams。デフォルトはlastです。 デフォルトはlastです。 デフォルトはlastです。to任意(string): チャンネルの受信者識別子(例: WhatsApp/Signal の電話番号、Telegram の chat ID、Discord/Slack/Mattermost(plugin)の channel ID、MS Teams の conversation ID)。デフォルトは main セッションの最後の受信者です。 デフォルトは、メインセッションの最後の受信者です。 デフォルトは、メインセッションの最後の受信者です。model任意(string): モデルのオーバーライド(例:anthropic/claude-3-5-sonnetまたはエイリアス)。制限されている場合は、許可されたモデルリストに含まれている必要があります。 制限されている場合は、許可されているモデルリスト内にある必要があります。thinking任意(string): 思考レベルのオーバーライド(例:low,medium,high)。timeoutSeconds任意(number): エージェント実行の最大時間(秒)。
- 分離された エージェントターンを実行します(独自のセッションキー)。
- 常に main セッションにサマリーを投稿します。
wakeMode=nowの場合、即時ハートビートをトリガーします。
セッションキーのポリシー(破壊的変更)
/hooks/agent ペイロードの sessionKey 上書きはデフォルトで無効化されています。
- 推奨: 固定の
hooks.defaultSessionKeyを設定し、リクエストによるオーバーライドは無効のままにしてください。 - 任意: 必要な場合にのみリクエストのオーバーライドを許可し、プレフィックスを制限してください。
POST /hooks/<name>(mapped)
カスタムフック名は hooks.mappings で解決されます (構成を参照)。 カスタムフック名は hooks.mappings(設定を参照)によって解決されます。マッピングにより、
任意のペイロードを wake または agent アクションに変換できます。テンプレートや
コード変換は任意です。
マッピングオプション(概要):
hooks.presets: ["gmail"]は、組み込みの Gmail マッピングを有効にします。hooks.mappingsを使用すると、設定内でmatch,action, およびテンプレートを定義できます。hooks.transformsDir+transform.moduleは、カスタムロジック用の JS/TS モジュールを読み込みます。hooks.transformsDir(設定している場合)は、OpenClaw の設定ディレクトリ配下の transforms ルート(通常は~/.openclaw/hooks/transforms)内に配置する必要があります。transform.moduleは有効な transforms ディレクトリ内で解決される必要があります(ディレクトリトラバーサルやエスケープパスは拒否されます)。
match.sourceを使用して、汎用的なインジェストエンドポイント(ペイロード駆動のルーティング)を維持できます。- TS 変換には、TS ローダー(例:
bunまたはtsx)または、実行時に事前コンパイルされた.jsが必要です。 - マッピングに
deliver: true+channel/toを設定すると、返信をチャットサーフェスへルーティングします (channelのデフォルトはlastで、WhatsApp にフォールバックします)。 agentIdはフックを特定のエージェントにルーティングします。不明な ID はデフォルトエージェントにフォールバックします。hooks.allowedAgentIdsは明示的なagentIdルーティングを制限します。 任意のエージェントを許可するには、これを省略する(または*を含める)してください。 明示的なagentIdルーティングを拒否するには[]を設定してください。sessionKey任意(string): エージェントのセッションを識別するためのキー。デフォルトはランダムなhook:<uuid>です。一貫したキーを使用すると、フックコンテキスト内でのマルチターン会話が可能になります。 デフォルトはランダムなフック:<uuid>です。 一貫性のあるキーを使用すると、フックコンテキスト内で複数回会話が可能になります。hooks.allowRequestSessionKeyは/hooks/agentのペイロードでsessionKeyを設定できるかどうかを制御します(デフォルト:false)。hooks.allowedSessionKeyPrefixesは、リクエストペイロードやマッピングから指定されるsessionKeyの値を任意で制限します。allowUnsafeExternalContent: trueは、そのフックに対して外部コンテンツ安全ラッパーを無効化します (危険です。信頼された内部ソースのみに使用してください)。openclaw webhooks gmail setupは、openclaw webhooks gmail run用のhooks.gmail設定を書き込みます。 Gmail の完全なウォッチフローについては Gmail Pub/Sub を参照してください。 Gmail のウォッチフローについては、Gmail Pub/Subを参照してください。 Gmail のウォッチフローについては、Gmail Pub/Subを参照してください。
Responses
/hooks/wakeに対して200/hooks/agentに対して202(非同期実行が開始されました)- 認証失敗時は
401 - 同一クライアントから認証失敗が繰り返された後の
429(Retry-Afterを確認してください) - 無効なペイロード時は
400 - ペイロードが過大な場合は
413
Examples
Use a different model
エージェントのペイロード(またはマッピング)にmodel を追加すると、その実行に対してモデルをオーバーライドできます。
agents.defaults.models を強制している場合は、オーバーライドするモデルがそこに含まれていることを確認してください。
Security
- フックエンドポイントは、loopback、tailnet、または信頼されたリバースプロキシの背後に配置してください。
- 専用のフックトークンを使用し、ゲートウェイ認証トークンを再利用しないでください。
- ブルートフォース攻撃を遅らせるため、認証失敗の繰り返しはクライアントアドレスごとにレート制限されます。
- マルチエージェントルーティングを使用する場合は、明示的な
agentId選択を制限するためにhooks.allowedAgentIdsを設定してください。 - 呼び出し元がセッションを選択する必要がない限り、
hooks.allowRequestSessionKey=falseを維持してください。 - リクエストの
sessionKeyを有効にする場合は、hooks.allowedSessionKeyPrefixes(例:["hook:"])を制限してください。 - ウェブフックログに機密性の高い生のペイロードを含めないようにしてください。
- フックペイロードは、デフォルトで信頼されていないものとして扱われ、安全境界でラップされます。
特定のフックに対してこれを無効にする必要がある場合は、そのフックのマッピングに
allowUnsafeExternalContent: trueを設定してください(危険)。