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

# Date ranges & pagination

> How to select a time window and page through large result sets.

## Date ranges

Analytics endpoints ([channels](/developers/endpoints/channels),
[links](/developers/endpoints/links)) accept a time window two ways:

<ParamField query="days" type="integer" default="30">
  The last N days ending now. Minimum 1, maximum 365.
</ParamField>

<ParamField query="from" type="string (ISO 8601)">
  Start of an explicit half-open window `[from, to)`.
</ParamField>

<ParamField query="to" type="string (ISO 8601)">
  End of the window. Defaults to now if omitted. `from` must be before `to`.
</ParamField>

```bash theme={null}
# Last 7 days
curl ".../api/v1/channels?days=7" -H "Authorization: Bearer <key>"

# An explicit window
curl ".../api/v1/channels?from=2026-06-01&to=2026-07-01" -H "Authorization: Bearer <key>"
```

The response echoes the resolved window:

```json theme={null}
{ "window": { "from": "...", "to": "..." }, "channels": [ ... ] }
```

## Pagination

List endpoints cap page size and paginate differently by shape.

### Limit-based

[Links](/developers/endpoints/links) and [credits](/developers/endpoints/credits) accept a `limit`:

<ParamField query="limit" type="integer" default="100">
  Maximum rows to return. Maximum 500.
</ParamField>

### Cursor-based

The [clicks](/developers/endpoints/clicks) stream is cursor-paginated, newest first:

<Steps>
  <Step title="Request a page">
    `GET /api/v1/clicks?limit=100`
  </Step>

  <Step title="Read next_cursor">
    The response includes `next_cursor` (an ISO timestamp) — or `null` at the end of the stream.
  </Step>

  <Step title="Request the next page">
    Pass it back as `before`: `GET /api/v1/clicks?limit=100&before=<next_cursor>`.
  </Step>
</Steps>

## Rate limits

<Note>
  The TrackRev API does not impose published request-rate limits today. Throughput is bounded only
  by the per-request page-size caps above (100 default, 500 maximum) and by your paid-plan
  entitlement. Design your integration to paginate rather than request enormous pages, and cache
  analytics responses where you can.
</Note>
