Webhook events
Two directions
Rendering diagram…
Inbound (external → platform)
Remote systems POST to combo agent; signature verification routes into Event Triggers / sessions.
Envelope
Signature verification
HMAC-SHA256 over timestamp + "." + body using the secret from Integrations → Webhooks.
Supported inbound channels
| Channel | Path | Purpose |
|---|---|---|
| Feishu events | /v1/webhook/lark | Messages / approvals / calendar |
| WeCom events | /v1/webhook/wecom | Messages / directory |
| Gerrit hook | /v1/webhook/gerrit | patchset-created, change-merged, … |
| GitLab webhook | /v1/webhook/gitlab | Push / MR / pipeline |
| GitHub webhook | /v1/webhook/github | Push / PR / issues |
| Gitee webhook | /v1/webhook/gitee | GitHub-compatible payload |
| Generic | /v1/webhook/generic/{trigger_id} | Custom triggers |
Outbound (platform → customer)
Push internal events to customer endpoints.
Subscribe
Event catalog
| Event | When | Key payload fields |
|---|---|---|
session.created | Session spins up | session_id, tenant_id, user_id |
session.finished | Agent completes | session_id, cost, artifacts |
session.archived | Session archived | session_id |
tool.called | Tool invoked | tool_name, session_id, args_hash |
tool.error | Tool failure | tool_name, error, session_id |
agent.step | Verbose step tracing | action, confidence, session_id |
review.completed | Code review wraps | pr_url, report_url, issues_found |
import.completed | Requirement/bug ingest done | source, count, errors |
cost.threshold_exceeded | Budget breached | tenant_id, period, amount |
Payload example
Retry policy
| Attempt | Backoff |
|---|---|
| 1 | Immediate |
| 2 | 30 s |
| 3 | 2 min |
| 4 | 10 min |
| 5 | 1 h |
Consumers must answer HTTP 2xx within ~2 s; failures roll into a dead-letter queue manageable in the console.
Event triggers bridge inbound → automation
YAML sketch:
FAQ
Q: Signature failures on inbound hooks? A: Rotate secrets deliberately; timestamps must be ±5 min; ensure proxies don’t mutate bodies.
Q: Consumers time out sporadically? A: Return 200 immediately, enqueue asynchronous processing—never block webhook threads.
Q: Replay historic events? A: Console → Integrations → Webhooks → Historical replay filtered by timeframe.