Webhooks

Register an HTTPS endpoint and we'll call it when something happens, so your systems don't have to poll.

Events

EventFires when
agent.run_completedAn agent finished a run — scheduled or triggered through the API.
output.createdAn agent produced something: a draft, an escalation, a lead, a digest.

A subscription is per event, so an endpoint that only cares about new work never sees run traffic.

Registering an endpoint

Add the endpoint in your workspace under Settings → Webhooks. The URL must be HTTPS, and it is checked against the same egress guard as every other URL you give us — private, loopback, link-local and cloud-metadata addresses are rejected when you save it and again on every send.

Delivery

  • Deliveries are at-least-once. Treat a repeat of the same event as normal and make your handler idempotent.
  • Every attempt is recorded — status, response and timing — and visible in the dashboard, so a failing endpoint is something you can see rather than something you discover from missing data.
  • Respond 2xx quickly and do your own work afterwards. A slow handler reads as a failed delivery.

Verifying it came from us

Each delivery carries a signature derived from your endpoint’s signing secret, shown once when you create the endpoint. Compute the same signature over the raw request body and compare — reject anything that doesn’t match, and don’t parse the body before you’ve checked it.

Or just ask

If you would rather pull than be pushed, the same information is on the API/api/v1/outputs is keyset-paginated for exactly this.