Mailbox health alerts
From the Warmup API reference. Requests use the base URL https://app.warmerly.com/api/v1 and an API key, see Authentication.
GET /alertsThe last 50 mailbox-health alerts that are still open for your user, newest first. Alerts whose fault has since been seen to clear are left out. These are the same events that trigger a health email, so polling this is the pull equivalent of webhooks for anyone who would rather not run an endpoint.
{
"alerts": [
{
"id": "c3f1a2b4-5d6e-4f70-8a91-b2c3d4e5f607",
"accountId": "3a6f9e2e-4b7a-4e9a-9b1d-6e3a2f8c1a10",
"kind": "score_drop",
"severity": "warning",
"title": "Warmup health dropped for jane@yourdomain.com",
"body": "Health score fell from 82 to 61 over the last 24 hours.",
"scoreBefore": 82,
"scoreAfter": 61,
"sentAt": "2026-09-11T06:02:00.000Z",
"createdAt": "2026-09-11T06:01:58.000Z"
}
]
}kind | Meaning |
|---|---|
score_drop | Health score fell sharply. |
score_floor | Health score is below the acceptable floor. |
oauth_disconnected | A Google/Microsoft grant was revoked or expired, reconnect needed. |
auth_fail | SMTP/IMAP authentication is failing. |
dns_changed | The domain's SPF/DKIM/DMARC result changed since the last check. |
domain_blocklisted | The sending domain appeared on a public blocklist. |
ip_blocklisted | The mail server's IP appeared on a public blocklist. |
spam_flag | The mailbox or workspace was flagged for spam-like outcomes. |
delivery_unobservable | Mail is going out but nothing can be classified, so health cannot be measured at all. This is distinct from a bad score: there is no score. |
severity is info, warning or critical. sentAt is when the notification went out (null if it has not been sent), as opposed to createdAt, when the condition was detected. Each alert is the stored row, so it also carries userId, fingerprint and resolvedAt (always null here).