Skip to main content
Webhooks 插件会添加经过身份验证的 HTTP 路由,使受信任的外部 系统(Zapier、n8n、CI 作业、内部服务)能够通过 HTTP 创建并驱动 受管理的 OpenClaw TaskFlow,而无需编写自定义插件。 该插件运行在 Gateway 进程中。对于远程 Gateway,请在该主机上安装并 配置它,然后重启 Gateway。它默认不配置任何路由,因此在你至少添加一条路由之前,它不会执行任何操作。

配置路由

plugins.entries.webhooks.config 下设置配置:
路由字段: secret 接受纯字符串或 SecretRef:{ source: "env" | "file" | "exec" | "store", provider: "default", id: "..." } SecretRefs 会解析到 Gateway 的启动配置快照中。当某个路由的 secret 无法解析时,Gateway 会继续运行,而该路由会保持注册状态但处于冷状态:请求会收到通用的身份验证失败响应(401)。 其他路由仍然可用。修复 SecretRef 源,然后重新加载或重启 Gateway,以激活新的快照。SecretRef 值永远不会在公共请求路径上解析。

安全模型

每个路由都会以其配置的 sessionKey 的 TaskFlow 权限执行:它 可以检查和修改该会话拥有的任何 TaskFlow。TaskFlow 访问 始终通过 api.runtime.tasks.managedFlows.bindSession(...) 进行,因此 路由永远不能在其绑定会话之外执行操作。为了限制影响范围:
  • 为每个路由使用强且唯一的密钥。
  • 优先使用 SecretRef,而不是内联明文密钥。
  • 将路由绑定到满足工作流所需的最小范围会话。
  • 只暴露你需要的特定 webhook 路径。
每个路径的请求处理顺序为:先检查 HTTP 方法(仅 POST)和 Content-Type: application/json,然后进行固定窗口限流(每个路径+客户端 IP 键在 60 秒窗口内最多 120 个请求,最多跟踪 4,096 个键),再进行进行中请求限制(每个键最多 8 个并发请求,最多跟踪 4,096 个键),然后是共享密钥认证,最后是 256 KB / 15 秒的 JSON 请求体读取。未通过前面检查的请求绝不会进入后面的步骤。

请求格式

发送 POST 请求,使用 Content-Type: application/json,并提供以下任一认证方式: Authorization: Bearer <secret>x-openclaw-webhook-secret: <secret>

支持的动作

会修改状态的动作(set_waitingresume_flowfinish_flowfail_flowrequest_cancel)需要 flowIdexpectedRevision 以进行乐观 并发控制;过期的修订版本会返回 409 revision_conflict

create_flow

run_task

允许的 runtime 值:subagentacpstartedAtlastEventAtprogressSummary 仅在 status"running" 时有效;在其他任何状态下 发送这些字段会返回 400 invalid_request

响应格式

Flow 和 task 视图绝不会包含 owner/session 元数据,因此响应不能泄露路由绑定的 sessionKeycode 值包括 not_foundnot_managedrevision_conflictpersist_failedcancel_requestedcancel_pendingterminalinvalid_requestrequest_rejected,以及 当某个 mutation 因上面列出的代码未涵盖的原因被拒绝时使用的特定于 action 的回退代码(mutation_rejectedcreate_rejectedtask_not_createdcancel_rejected)。

相关