Skip to content

Track affected monitors and impact

An incident’s monitors list says which monitors it is about. A monitor joins on its own when it fails on an auto-created incident, or you add it by hand. Each entry also carries an impact, which is how a status page describes that part of your service during the incident.

FieldDescription
monitor_idThe monitor’s id.
monitor_typehttp, cron (a heartbeat), browser, tls, dns, dns_record, page_speed or alert_rule.
nameThe monitor’s name, or null.
impactdegraded, partial_outage, major_outage, or null to derive it from the incident’s severity.
sourceauto when the monitor joined because it failed, manual when someone added it.
joined_atWhen the monitor joined the incident.
recovered_atWhen the monitor recovered, or null while it has not.

Every response for a single incident includes the list. GET /incident leaves monitors empty.

On an auto-created incident, every failing monitor of the service joins the open incident with source: "auto", and the incident’s timeline records a monitor_joined event. joined_at is when it joined and recovered_at is when it came back, so the list shows how an outage spread and healed monitor by monitor.

You add monitors by hand with source: "manual", which is how a manual incident names what it affects.

A status page marks the components behind an incident’s monitors. Set a monitor’s impact to choose what its component shows:

impactWhat it means
degradedWorking, but worse than normal.
partial_outagePartly down.
major_outageDown.
nullNot set. Derived from the incident’s severity, which is how status pages behaved before impact existed.

Add a monitor, with an optional impact. Adding one that is already linked changes nothing and returns 200:

Terminal window
curl -X POST https://api.siteqwality.com/incident/$INCIDENT_ID/monitors \
-H "Authorization: Bearer $SITEQWALITY_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "monitor_id": "<monitor-id>", "monitor_type": "http", "impact": "partial_outage" }'

Change the impact (send null to go back to deriving it from severity), or remove the monitor:

Terminal window
curl -X PUT https://api.siteqwality.com/incident/$INCIDENT_ID/monitors/http/$MONITOR_ID \
-H "Authorization: Bearer $SITEQWALITY_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "impact": "major_outage" }'
curl -X DELETE https://api.siteqwality.com/incident/$INCIDENT_ID/monitors/http/$MONITOR_ID \
-H "Authorization: Bearer $SITEQWALITY_API_KEY"

The add and impact calls return the incident’s full monitor list. The delete returns 204.

You can also name monitors when you create the incident, with monitors on POST /incident:

{
"monitors": [
{ "monitor_id": "<monitor-id>", "monitor_type": "http", "impact": "degraded" },
{ "monitor_id": "<heartbeat-id>", "monitor_type": "cron" }
]
}
StatusWhen
400On a change or removal, the monitor_type in the path is not one of the values above.
404The incident or monitor is not in your account. On a change or removal, the monitor is not linked to the incident.
409data.conflict is merged: the incident was merged into another.
422monitor_type or impact in the request body is not one of the values above.