---
title: Pagination
description: Page through REST collections by following each opaque next-page URL while preserving filters and the selected API version.
---

REST collection responses include `next_page_url`. Request the first page with the operation's query parameters, then follow each returned URL until the value is `null`. A short or empty page can still carry a non-null `next_page_url`, so never use its item count as the stopping condition.

## Request the First Page

List operations accept `limit` and `page`. Operations offering selectable sorting also accept `sort` and `order`:

| Parameter | Value                                                                   |
| --------- | ----------------------------------------------------------------------- |
| `limit`   | Items per page. The default is `10`.                                    |
| `page`    | Opaque cursor. Omit it from the first request.                          |

Some operations also expose filters or selectable sorting. The [REST API](/api-reference/rest) lists the options for each operation.

## Follow `next_page_url`

A response with another page returns a root-relative URL containing the effective limit, applicable filters, and opaque cursor:

```json
{
  "next_page_url": "/markets?limit=100&page=<opaque-cursor>&status=open"
}
```

Because `next_page_url` is root-relative, resolve it against the REST API base URL and request the resulting URL exactly as returned. Do not append it to the current operation URL. It already preserves the effective limit, applicable sorting and filters, and opaque cursor. Do not construct, decode, or edit the `page` value. Continue using the same accepted credential and `UDX-Version`, and generate a new timestamp and signature for every signed page request.

Stop when the response returns:

```json
{
  "next_page_url": null
}
```
