Events

List alert delivery records across every check in the project

Returns delivery records project-wide, newest-id first, keyset-paged — the console's Delivery log tab and any automation that wants to confirm whether a given monitor's alert reached a destination.

A deliveries row is one (incident event, channel) outcome: pending while a delivery attempt is in flight, delivered on success, dead once the per-channel attempt ceiling is reached, or suppressed when it was deliberately not sent: the channel's rate cap dropped it, or it is a blocked alert whose run was answered within the hold (reason in last_error). incident_id correlates the row to GET /api/v1/incidents/{id} by matching (check_id, incident_opened_at) — it is null once the parent incident has aged out of the 1-year incidents retention window (see /privacy), or for an event type with no incident to correlate with (e.g. every-run). channel_name/channel_kind are null when the destination channel has since been deleted; the delivery record itself is not affected by a channel's deletion.

Pagination is keyset, on id descending. next_cursor is an opaque token; pass it back as cursor verbatim to fetch the next page, and stop when next_cursor is null. A cursor this API did not issue (or one that has been altered) is rejected with 400 INVALID_CURSOR.

?since= bounds incident_opened_at and defaults to the last 30 days; it is clamped to 365 days back regardless of what is asked for, because deliveries are pruned at 365 days (paired with the incidents retention window — see /privacy) and an earlier bound finds nothing further anyway.

Console stability note. This response is shaped by a console screen: the fields are the ones that screen draws, in the grouping it draws them in. It stays published because reading it is a reasonable thing to automate, and no field will be removed or change meaning without a version. Fields may be ADDED as the screen grows, so treat unknown keys as normal rather than as an error.

get/api/v1/deliveries

Request

  • Base URL: https://app.lastping.dev
  • URL: https://app.lastping.dev/api/v1/deliveries
  • Auth: API key in header X-Api-Key

Query parameters

monitorstring uuid

Restrict to one check's deliveries.

status'pending' | 'delivered' | 'dead' | 'suppressed'

Restrict to one delivery status.

sincestring date-time

RFC 3339 timestamp. Defaults to 30 days ago; clamped to 365 days ago, and to the present if a future instant is sent.

limitinteger
Example:20

Maximum number of deliveries to return (default 20, max 100).

cursorstring

Opaque next_cursor value from a previous page.

Response

A page of deliveries (may be empty), newest-id first.

next_cursorstring nullable required

Opaque cursor for the next page; pass back as ?cursor=. Null when this is the last page.

Example response

{
  "deliveries": [
    {
      "id": 91234,
      "check_id": "550e8400-e29b-41d4-a716-446655440000",
      "check_name": "Nightly backup",
      "incident_opened_at": "2026-07-10T03:10:00Z",
      "incident_id": 4821,
      "event_type": "fail",
      "channel_id": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
      "channel_name": "ops-pagerduty",
      "channel_kind": "webhook",
      "status": "delivered",
      "attempts": 1,
      "delivered_at": "2026-07-10T03:10:02Z",
      "last_error": "dial tcp: connection refused"
    }
  ],
  "next_cursor": "OTEyMzQ"
}

Changes

No recorded changes to this operation across all 2 revisions of this API.