Create request:
hmac_secret is required on create, optional on patch, non-null, at least 16
characters, and write-only. It is encrypted at rest and is never returned.
Omit it on patch to keep the current secret, or send a non-empty value to
rotate. Sending null or "" is a validation error.
Every endpoint response has this exact shape:
Failed attempts do not change
last_delivery_at. Private-network and loopback
targets are rejected by default. Self-hosters who deliberately need them can
set WEBHOOK_ALLOW_PRIVATE_NETWORK=1 after reviewing the SSRF implications.
Event envelopes
All outbound bodies are JSON objects withevent, createdAt, and data.
There are three event names.
alert.fired
data.test: true
and representative values. Production alert deliveries omit test.
alert.digest
data.alerts contains full alert.fired.data objects. Webhook batches contain
at most 200 alerts and are not shortened.
alert.daily_cap_reached
This notice is sent once when a rule exhausts its daily delivery-batch budget.
Verify signatures
Each request has:X-Bisibility-Timestamp: Unix seconds.X-Bisibility-Signature:sha256=<hex digest>.
`${timestamp}.${body}`, where body is the raw request body before JSON
parsing. Reject timestamps outside a 300-second window to prevent replay.
Test and delivery behavior
In the endpoint list, select Send test event. A successful result shows the HTTP status and latency. A failure also shows the concrete reason. The receiver can identify the signed test throughevent === "alert.fired" and
data.test === true.
Each request has a 10-second timeout and redirects are not followed. HTTP 4xx
responses are permanent except 408 and 429. Network errors, 408, and 5xx
responses are retryable. Webhook delivery makes at most five attempts: the
first attempt, then exponential retries after about 10, 20, 40, and 80 seconds.
For 429, Retry-After accepts delta-seconds or an HTTP date. A missing, invalid,
non-positive, or expired 429 value uses 60 seconds. The requested delay is
capped at 10 minutes. This 60-second default applies only to 429, not to generic
5xx backoff.