Alert log

Every alert dispatch attempt — Slack, webhook, email, etc. — is logged with the request, response, retry attempts, and final delivery status.

List

GET /alerts/log

pageintegerquerydefault: 1
per_pageintegerquerydefault: 25
channel_idstringquery

Filter by alert channel.

monitor_idstringquery

Filter by monitor.

incident_idstringquery

Filter by incident.

statusstringquery

delivered, pending, failed.

fromstringquery

ISO 8601 — show entries since.

json
{ "data": [ { "id": "log_abc", "channel_id": "ch_slack_ops", "channel_type": "slack_app", "incident_id": "inc_xyz", "event": "monitor.down", "status": "delivered", "attempts": 1, "delivered_at": "2026-04-17T20:01:23Z", "response_status": 200, "response_body_excerpt": "{\"ok\":true,\"ts\":\"...\"}" }, { "id": "log_def", "channel_id": "ch_webhook_ops", "status": "failed", "attempts": 5, "last_attempt_at": "2026-04-17T21:01:23Z", "response_status": 502, "next_retry_at": null } ], "meta": { "page": 1, "per_page": 25, "total": 14 }}

Get one

GET /alerts/log/{id}

Returns full request/response bodies (truncated to 64 KB).

Resend

POST /alerts/log/{id}/resend

Replays the dispatch. Useful after fixing a webhook endpoint.

Stats

GET /alerts/log/stats

30-day aggregate counts:

json
{ "data": { "total": 1247, "delivered": 1198, "failed": 49, "by_channel": { "ch_slack_ops": { "delivered": 800, "failed": 2 }, "ch_webhook_ops": { "delivered": 398, "failed": 47 } } }}
Ask a question... ⌘I