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

# How do I paginate and filter chatobserver API results?

> Use opaque cursors, date filters, and endpoint-specific page sizes for visibility and Data API collections.

Read the pagination fields returned by the endpoint and pass its next cursor back unchanged. Visibility collections and Data API collections use different pagination envelopes, so do not assume one response shape applies to both.

## Visibility collections

Collections such as `/v2/prompts` and `/v2/responses` accept `limit` and `cursor`. Their response includes `data` and `pageInfo`, with `limit`, `hasMore`, and `nextCursor`.

Start without a cursor. Continue while `pageInfo.hasMore` is true, using `pageInfo.nextCursor` in the next request. These endpoints default to 50 results and accept a limit up to 100. Check the endpoint reference for other collections.

```bash theme={null}
curl --get --fail-with-body \
  'https://app.chatobserver.com/api/v2/responses' \
  -H "Authorization: Bearer $CHATOBSERVER_API_KEY" \
  --data-urlencode 'limit=50' \
  --data-urlencode 'status=complete' \
  --data-urlencode 'platform=chatgpt'
```

## Data API collections

Paginated Data collections return `data` and a top-level `nextCursor`. A null cursor means there are no more results. Their standard page size defaults to 50 and accepts up to 200. Archived-resource inclusion is not supported by the standard public collection handler.

Keep the same endpoint and filters while paging. Do not reuse a cursor from another collection or decode it to build your own cursor.

## Date ranges and filters

Use the parameters documented for the specific endpoint. For example, response history accepts `from` and `to`, while prompt changes use `updatedAfter` and `updatedBefore`. Where a date-time is required, use ISO 8601 UTC values such as `2026-09-01T00:00:00Z`.

Filtering narrows the stored results returned to you. It does not run new monitoring questions. Use [prompt management](/docs/developers/manage-prompts) to request new collection.
