POST /hooks to receive events at your service’s HTTPS endpoint. Each hook subscribes to one event type. Your handler checks the change and decides what to do next.
Event types
A request that changes both fields emits one event of each type. Setting a field to its existing value does not emit an event.
Payload
Use
GET /vulnerabilities/{id} when your handler needs the current vulnerability, and GET /evidence?vulnerabilityId={id} for its supporting files.
Verify a delivery
Creating a webhook returns a signingsecret once. Store it in your receiving service. Each delivery includes these headers:
Acknowledge and process
Return a2xx response within 10 seconds after durably accepting the event. Queue work that takes longer, such as launching an agent, and process it separately.
Timeouts and non-2xx responses are retried for up to 24 hours. Delivery can occur more than once, so record the event ID and avoid repeating work for an event you have already accepted. Events may arrive out of order; retrieve the vulnerability’s current state before acting when your workflow depends on it.
For example, a remediation handler can check that the current assignee still matches its agent before launching a run.
Default hooks
GET /hooks includes the built-in triage, remediation, and verification hooks. They have builtIn: true and no public webhook destination.
Use
PATCH /hooks/remediation with {"enabled": false} to disable the default remediation hook when replacing that workflow. Custom webhooks work alongside defaults unless you disable them. See Assigning to your own agents for choosing which workflow to replace.