---
title: "listNotificationHistory"
method: GET
path: "/v2/integrations/{integrationId}/notifications/history"
tags: ["integrations"]
---

# listNotificationHistory

`GET /v2/integrations/{integrationId}/notifications/history`

Returns the cursor-paginated, newest-first notification history for an
integration (every real notification decision — both fired and suppressed).
Requires the `integration:view` permission on the integration's organization.

## Path parameters

- `integrationId` string, uuid, required

## Query parameters

- `cursor` string
- `limit` integer
- `type` string

## Response `200`

Cursor-paginated notification history (newest first)

- NotificationHistoryResponse
  - `history` NotificationHistoryItem[], required — Notification-history rows, newest first.
    - `id` string, required — Stable history row id (ULID).
    - `type` string, required — The notification/rule type (e.g. critical_error, error_threshold, integration_digest).
    - `state_transition` string, nullable — The state transition that produced this decision (e.g. OK->ALERTING), when applicable.
    - `severity` 'error' | 'warning' | 'info', required — Severity of the decision.
    - `title` string, required — Human-readable title at decision time.
    - `occurred_at` string, date-time, required — When the decision occurred (newest-first ordering key).
    - `notified` boolean, required — Whether the notification was actually sent (true) or suppressed (false).
    - `suppressed_reason` 'muted' | 'debounced' | 'recipient_opt_out', nullable — Why the notification was suppressed (only set when notified is false).
    - `recipients` string[], required — epilot user ids the notification was (or would have been) delivered to.
    - `context` object, required — Type-specific context captured at decision time.
    - `created_at` string, date-time, required — When the history row was written.
  - `next_cursor` string, nullable — Opaque base64 cursor for the next page, or null when there are no more rows.

## Other responses

- `400` — Bad request
- `401` — Unauthorized request
- `403` — Forbidden - insufficient permissions
- `404` — Resource not found
- `500` — Internal Server Error

---

[API](https://skmtc.net/epilot/apis/integration-toolkit-api.md) · [All operations](https://skmtc.net/epilot/apis/integration-toolkit-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/epilot/integration-toolkit-api/revisions/a567add0c3f5/schema)
