> ## Documentation Index
> Fetch the complete documentation index at: https://monitoryt.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Pagination and filters

> Page through feed events and constrain API requests safely.

The feed returns events newest first and uses cursor pagination. `limit` defaults to
50 and accepts values from 1 through 200. When `nextCursor` is not `null`, pass it
unchanged as `cursor` in the next JSON request body.

```json theme={null}
{
  "cursor": "665f21c09b1d8a4f30aa1234",
  "limit": 50
}
```

Do not treat cursors as timestamps, reuse them with different filters, or construct
them yourself. Start again without a cursor when the filter set changes.

## Feed filters

The `types` and `channelIds` arrays are optional and accept at most 100 values each.
Multiple values within one array use OR semantics. When both arrays are present,
the two dimensions use AND semantics.

```json theme={null}
{
  "types": ["video_published", "thumbnail_changed"],
  "channelIds": ["665f21c09b1d8a4f30aa5678"]
}
```

`channelIds` accepts Monitor YT channel IDs, such as the 24-character `channel.id`
returned in a feed event. It does not accept YouTube's `UC…` channel ID. Omit an
array, or send an empty array, to disable that filter dimension.

## Video batches

The videos endpoint accepts between 1 and 20 unique YouTube video IDs. Unknown videos and videos outside your tracked channels appear in `missingVideoIds`.

Video batches are not paginated. See [Fetch video data](/videos-api) for the full response semantics.
