---
title: "List anomalies"
method: GET
path: "/v1/anomalies"
tags: ["Anomalies"]
---

# List anomalies

`GET /v1/anomalies`

## Request

- Base URL: `https://api.peppolstatus.com`
- URL: `https://api.peppolstatus.com/v1/anomalies`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

The anomaly feed, newest-first, cursor-paginated.

## Query parameters

- `detector` 'cert_identity_shift' | 'off_cadence_rotation' | 'endpoint_off_footprint' | 'moved_to_unverified_seat' | 'mass_change_burst' | 'split_id_registration' | 'host_tls_cert_expired' | 'host_tls_cert_expiring'
- `grade` 'notice' | 'warning' | 'info'
- `host` string
- `seat` string
- `acknowledged` boolean
- `since` string, date-time
- `limit` integer
- `cursor` string

## Response `200`

A page of anomalies.

- AnomalyPage: A page of anomalies.
  - `items` AnomalyView[], required
    - `id` string, required
    - `detector` 'cert_identity_shift' | 'off_cadence_rotation' | 'endpoint_off_footprint' | 'moved_to_unverified_seat' | 'mass_change_burst' | 'split_id_registration' | 'host_tls_cert_expired' | 'host_tls_cert_expiring', required
    - `grade` 'notice' | 'warning' | 'info', required
    - `target` object, required
    - `event_refs` string[], required
    - `evidence` object, required
    - `observed_at` string, date-time, required
    - `acknowledged` boolean, required
    - `reason` string, nullable, required
  - `next_cursor` string, nullable, required: Opaque cursor for the next page, or null on the last page.

## Other responses

- `400`: An invalid `detector`, `grade`, `acknowledged`, `since`, `limit` or `cursor`.

---

[API](https://skmtc.dev/peppolstatus/apis/peppolstatus-api.md) · [All operations](https://skmtc.dev/peppolstatus/apis/peppolstatus-api/llms.txt) · [OpenAPI document](https://skmtc.dev/peppolstatus/apis/peppolstatus-api/revisions/7e74fb32f23c?raw)
