# Pagination

Many endpoints that return top-level collections of data allow for pagination of returned items. The requested page specification must be formatted as a dictionary within the page parameter.

Pagination values provided in a request that cannot be coerced or that exceed specified ranges result in a 400 Bad Request response.

Pagination values that request ranges not available (for example, requesting page 4 when there is only enough data for 3 pages) will respond with an empty dataset and pagination metadata showing that the requested page is out of range.

## Page Number

Page number can be provided as `page.number` and defaults to 1 (page). The page size defaults to 100 records per page.

**Examples**

`GET /v2/content?page.size=50&page`

* This retrieves 50 records per page.


`GET /v2/content?page.size=50&page.number=2`

* This retrieves 50 records per page but starts from page 2 as set by `page.size` (i.e., skipping the first 50 records).


## Page Size

Page size can be provided as `page.size`. Each endpoint specifies its own default page size outside of the default 10, maximum 100.

**Example**

`GET /v2/content?page.size=10`

* This request retrieves 10 records starting from the first page.


## Total Records

When using page-based pagination, most endpoints return a `total_records` field in the response:


```
{
  "pagination": {
    "page": 1,
    "page_size": 10,
    "total_records": 73
  }
}
```

Use this to determine how many times to paginate. The example above would need 8 pages.

## Start Index

For large result sets, you can use the `startIndex` query parameter to control pagination. `startIndex` is 1-based, meaning it specifies the position of the first record to return.

**Example**

`GET /scim/v2/Users?startIndex=10`

* `startIndex=10` skips the first 9 records.


### Count

You can use the `count` query parameter to limit the number of records returned.

**Example**

`count=10` only returns 10 records from a list with a greater number of possible records to return.

Using both `startIndex` and `count` query parameters in a `GET` users request looks like:

`GET /scim/v2/Users?startIndex=20&count=10`

This example returns 10 users starting from the 20th user in the list.

## Page Cursor

Webhooks use cursor-based pagination. Instead of numeric page indices, these endpoints return a cursor token in the `meta.pagination` object:


```
"meta": {
  "pagination": {
    "cursor": "abc123",
    "next": "def456",
    "page_size": 25
  }
}
```

Webhooks Overview
Browse our overview documentation that describes how our webhooks work.

Webhooks Endpoints
Browse our available Webhooks endpoints.

## Sorting

Only some endpoints provide the ability to sort the returned records. Usually these are endpoints that list records, such as:

* [Listing channels (topics)](/endpoints/openapi/content-publishing/listchannels).
* [Listing users](/endpoints/openapi/user-management/listusers).


If sorting is supported, the endpoint will use a `?sort=` query parameter to specify the sort field. The available sort parameters will be documented for each specific endpoint.

**Examples**

* `?sort=title` — sorts by title in ascending order (default).
* `?sort=-title` — sorts by title in descending order (e.g., "Zoo" before "Animal").


You can also provide multiple sort criteria, separated by commas:


```

?sort=title,created_at
```

This sorts by `title`, and for records with the same title, it further sorts by `created_at`.

Attempting to sort using a parameter not supported by the endpoint will typically result in a 400 Bad Request error. Check each endpoint's reference documentation.