Skip to content
HookDeploy
On this page

Incident subscriptions

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

Incident subscriptions deliver a JSON payload to your target_url when an incident is created, marked investigating, resolved, or when a non-system update is added. 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
incident.update_addedA non-system update is added to an incident

Create one subscription per event type you care about (or four 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 subscriptions for the calling API key, including auto-disabled rows (active: false after repeated delivery failures). Re-create or upsert the same key to re-enable a disabled subscription.

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, incident.update_added.

Error responses

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

Next steps