---
title: "List Events"
method: GET
path: "/monitoring/events"
tags: ["monitoring"]
---

# List Events

`GET /monitoring/events`

## Request

- Base URL: `https://api.licenscheck.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.licenscheck.com/monitoring/events`
- Auth: none declared

Read what changed for this key's watched contractors since a cursor, oldest first unless `order=desc`.

Poll with the `next_after` from the last response to get only new events;
nothing is lost between polls. `order=desc` returns the newest events
instead, as a dashboard's "recent changes" shows them; polling that way
can skip events when more than `limit` arrive between calls.

Args:
    after: The last event ID already read.
    limit: Max events to return.
    order: Oldest first or newest first.
    reference: Only events of watches with exactly this reference; None for all.
    api_key_id: Injected: the caller's key.
    monitoring: Injected `MonitoringRepository`.

Returns:
    The events and the cursor for the next call.

## Query parameters

- `after` integer: The last event ID you've read; 0 for the oldest.
- `limit` integer: Max events to return.
- `order` 'asc' | 'desc': Which end of the monitoring events feed a page starts from.
- `reference` string, nullable: Only events of watches with exactly this reference.

## Response `200`

Successful Response

- EventListOut: Response for GET /monitoring/events.
  - `events` EventOut[], required: Events after the cursor: oldest first, or newest first with `order=desc`.
    - `id` integer, required: The event's ID, increasing; pass the last one you read as `after` to get newer events.
    - `type` 'watch.changed', required: What a monitoring event reports. Attributes: WATCH_CHANGED: Something material changed for a watched contractor: its verdict, a status, delisting, expiry, bond or board alert on any of its licenses, or which licenses are linked to it.
    - `watch_id` string, uuid, required: The watch it's about.
    - `license_id` string, uuid, required: The license the watch was started on.
    - `reference` string, nullable, required: The label you gave the watch, or null.
    - `created_at` string, date-time, required: When the change was detected.
    - `data` object, required: What changed: `verdict` (before, after, summary), `checks_changed`, `changes` (each license's field, before and after, and the board file it came from), `links_added` and `links_removed`, and `possible_matches_added` and `possible_matches_removed`.
  - `next_after` integer, required: Pass this as `after` next time: the newest returned event's ID, or the same cursor when there were none.

## Other responses

- `401`: No API key, or one that's wrong or revoked.
- `403`: A free key: monitoring needs a paid plan.
- `422`: Validation Error

---

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