Skip to content
HookDeploy
On this page

Incident subscriptions

Subscribe to incident lifecycle events with REST Hooks — created, investigating, and resolved.

Incident subscriptions deliver a JSON payload to your target_url when an incident is created, marked investigating, or resolved. They use the same delivery headers as webhook integration subscriptions.

Deliveries use a 10-second timeout (same as other integration subscriptions).

Event types

event_typeWhen it fires
incident.createdA new incident is opened from correlated forward failures
incident.investigatingIncident status changes to investigating
incident.resolvedIncident status changes to resolved

Create one subscription per event type you care about (or three if you want all lifecycle events).

Create subscription

POST /v1/incident-subscriptions
curl -s -X POST \
  "https://api.hookdeploy.dev/v1/incident-subscriptions" \
  -H "Authorization: Bearer hd_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "target_url": "https://hooks.example.com/hookdeploy-incidents",
    "platform": "custom",
    "event_type": "incident.created"
  }'

Body fields:

FieldRequiredDescription
target_urlyesHTTPS URL that receives POSTed event payloads
platformyeszapier, make, power_automate, n8n, or custom
event_typeyesOne of the event types above

Subscriptions are scoped to the API key. Creating again for the same key + platform + event type upserts the target_url.

Response (not wrapped in a data envelope):

{
  "id": "55555555-5555-5555-5555-555555555555",
  "organization_id": "66666666-6666-6666-6666-666666666666",
  "platform": "custom",
  "event_type": "incident.created",
  "target_url": "https://hooks.example.com/hookdeploy-incidents",
  "active": true,
  "created_at": "2026-05-24T12:00:00Z"
}

List subscriptions

GET /v1/incident-subscriptions

Returns active subscriptions for the calling API key.

curl -s "https://api.hookdeploy.dev/v1/incident-subscriptions" \
  -H "Authorization: Bearer hd_live_YOUR_KEY"

Delete subscription

DELETE /v1/incident-subscriptions/:id

Returns HTTP 204 with no body.

curl -s -X DELETE \
  "https://api.hookdeploy.dev/v1/incident-subscriptions/SUBSCRIPTION_ID" \
  -H "Authorization: Bearer hd_live_YOUR_KEY"

Delivery payload

Each delivery is a JSON object:

FieldDescription
incident_idUUID of the incident
statusCurrent status (open, investigating, or resolved)
scopeCorrelation scope (destination or provider/ASN)
destination_nameDestination display name, or null
asn_orgASN organization name for provider-scoped incidents, or null
likely_causeShort human-readable summary
failure_countFailures attached to the incident
endpoint_countDistinct endpoints involved
organization_idYour organization UUID
event_typeThe subscription event that fired
occurred_atISO 8601 timestamp for the lifecycle moment (created_at, investigating_at, or resolved_at)

Example:

{
  "incident_id": "11111111-1111-1111-1111-111111111111",
  "status": "open",
  "scope": "destination",
  "destination_name": "Production Server",
  "asn_org": null,
  "likely_cause": "Forwards to Production Server are failing",
  "failure_count": 3,
  "endpoint_count": 1,
  "organization_id": "66666666-6666-6666-6666-666666666666",
  "event_type": "incident.created",
  "occurred_at": "2026-05-24T12:00:00.000Z"
}

Delivery headers

Every delivery includes:

content-type: application/json
x-hookdeploy-event: incident.created
x-hookdeploy-subscription-id: {subscription-id}
x-hookdeploy-delivery-timestamp: {ISO-8601}
HeaderDescription
x-hookdeploy-eventThe event type for this delivery
x-hookdeploy-subscription-idUUID of the incident subscription
x-hookdeploy-delivery-timestampWhen HookDeploy sent the delivery

These match the headers used for webhook integration subscription deliveries (/v1/subscriptions).

Sample and recent helpers

For editor testing (Zapier polling samples, etc.):

MethodRouteNotes
GET/v1/incidents/sample?event_type=...One envelope (real or synthetic) in the standard data success wrapper
GET/v1/incidents/recent?event_type=...&limit=3Raw JSON array of envelopes (same shape as live deliveries)

event_type must be one of incident.created, incident.investigating, incident.resolved.

Error responses

HTTPCodeCause
400bad_requestMissing or invalid event_type, target_url, or platform
401unauthorizedInvalid API key
404not_foundRoute not found

Next steps