get_monitor_alert_history
const url = 'https://api.siteqwality.com/monitors/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/alert_history';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.siteqwality.com/monitors/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/alert_history \ --header 'Authorization: Bearer <token>'Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”Monitor identifier
Query Parameters
Section titled “Query Parameters ”http (default), cron or browser.
How many outages, newest first. 1..=100, default 25.
Responses
Section titled “ Responses ”Outages and the alerts sent for each
GET /monitors/{monitor_id}/alert_history.
object
Newest outage first.
One outage and everything sent about it.
object
When the monitor went down (after any confirmation checks).
When it recovered; None while still down.
Oldest first, so the list reads as the story: went down, told X, delivered, recovered, told X.
One alert we sent (or tried to) for an outage.
object
The channel row this went through, when it still exists.
Email | sms | slack | webhook | telegram | discord | pagerduty | …
Masked: o***@example.com, ***1234, a Slack channel, a webhook host.
True = the DOWN alert, false = the recovery.
Sent | delivered | delayed | soft_bounced | failed | rejected | bounced | complained
What the provider said when it did not accept the alert.
What the provider reported later (a bounce’s type and diagnostic).
Per-recipient SES reports, for email.
SES’s report about one recipient of an alert email.
object
Bounce | complaint | delivery_delay | reject | rendering_failure
E.g. Permanent/General, Transient/MailboxFull.
True only for a permanent bounce or a complaint. A transient bounce is never a dead address.
Masked.
Example generated
{ "monitor_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "kind": "example", "transitions": [ { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "started_at": "2026-04-15T12:00:00Z", "ended_at": "2026-04-15T12:00:00Z", "deliveries": [ { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "sent_at": "2026-04-15T12:00:00Z", "notification_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "channel": "example", "destination": "example", "is_failure": true, "status": "example", "status_at": "2026-04-15T12:00:00Z", "provider_error": "example", "detail": "example", "events": [ { "at": "2026-04-15T12:00:00Z", "event_type": "example", "sub_type": "example", "permanent": true, "recipient": "example" } ] } ] } ]}Unknown monitor kind
Missing or invalid authentication
Monitor not found
Internal server error