Alert ingest API › Integration webhooks
Receive a monitoring tool's webhook
The endpoint each integration's webhook URL points at, shown with its
key in On-Call → Integrations. type selects the parser.
For alerts the body is EvoHub's generic alert (below). For every
other type it is the tool's own webhook payload, sent unchanged — a
firing alert opens an alert, and where the tool reports recovery, the
matching open alert is resolved. Most tools send JSON; UptimeRobot,
StatusCake, Site24x7 and PRTG may send form-encoded data (UptimeRobot
may also append its fields to the URL's query string), and those are
read too.
Answers 200 whenever the payload was read, even if it produced no
alert, so tools do not disable the webhook; created and resolved
say what happened. An AWS SNS subscription confirmation sent to
cloudwatch is confirmed automatically and answered with
{"data": {"confirmed": true}, "success": true}.
Authorization
Parameters
Path parameters
typestring requiredThe integration type.
Query parameters
keystring requiredThe integration key.
Request body required
application/json
- GenericAlert
Show GenericAlert properties
titlestring requireddescriptionstringseveritystringsourcestringThe alert's source;webhookwhen omitted.fingerprintstringDeduplicates repeated sends while the alert is open.escalation_policy_idstringUsed only when the integration has no escalation policy of its own.labelsobjectannotationsobject
- Native payloadThe monitoring tool's own webhook body, for every type except
alerts.
application/x-www-form-urlencoded
Form-encoded bodies sent by uptimerobot, statuscake, site24x7 and prtg.
Responses
200
The payload was read.
dataobjectreceivedintegerAlerts and recoveries found in the payload.createdintegerAlerts opened, or matched to an alert already open with the same fingerprint.resolvedintegerRecoveries processed.
successboolean
400
The body could not be read as this type's payload (INVALID_BODY); for azuremonitor, the common alert schema is not enabled (INVALID_SCHEMA); for alerts, title is missing (VALIDATION_FAILED, with details).
errorobject requiredcodestring requiredmessagestring requireddetailsarray of objectField problems, onVALIDATION_FAILED.fieldstringmessagestring
401
key is missing, unknown, or names a disabled integration (INVALID_KEY).
errorobject requiredcodestring requiredmessagestring requireddetailsarray of objectField problems, onVALIDATION_FAILED.fieldstringmessagestring
500
The alert could not be stored (INTERNAL_ERROR).
errorobject requiredcodestring requiredmessagestring requireddetailsarray of objectField problems, onVALIDATION_FAILED.fieldstringmessagestring
503
The key could not be checked right now (INGEST_UNAVAILABLE). Retry after the delay given.
Retry-AfterintegerSeconds to wait before retrying.
errorobject requiredcodestring requiredmessagestring requireddetailsarray of objectField problems, onVALIDATION_FAILED.fieldstringmessagestring
Example request
curl -X POST 'https://evohub.io/ingest/alerts?key=<INTEGRATION_KEY>' \
-H 'Content-Type: application/json' \
-d '{
"title": "Disk almost full on web-03",
"labels": {
"host": "web-03.acme.example"
},
"source": "cron-disk-check",
"severity": "high",
"description": "/var is at 93%",
"fingerprint": "web-03-disk-var"
}'