# Pagination strategies

Sales Layer APIs expose pagination parameters on list operations so clients can process large datasets in controlled batches.

The current OpenAPI specifications document:

* DAM list operations: `$top` and `$skip`
* Catalog list operations: `$top`, `$skip`, and in selected endpoints `$skipToken`

## Token-based pagination

Token-based pagination uses `$skipToken` to continue reading from a position supplied by the API.

When available, this strategy is recommended for large or frequently synchronized datasets because it avoids manually calculating offsets.

Example:

```http
GET https://api2.saleslayer.com/catalog/Products?$select=prod_ref,prod_title&$skipToken=TOKEN_VALUE
```

Use the `@nextLink` value from a response when the API provides one.

## Limit-based pagination

Limit-based pagination uses `$top` and `$skip`.

```http
GET https://api2.saleslayer.com/catalog/Products?$skip=0&$top=50
```

```http
GET https://api2.saleslayer.com/dam/images?$skip=0&$top=50
```

Use this strategy when the endpoint does not expose `$skipToken` or when the integration needs explicit page offsets.

## Choosing a strategy

| Strategy              | Use when                                                                                         |
| --------------------- | ------------------------------------------------------------------------------------------------- |
| `$skipToken`         | The endpoint returns a continuation link and the integration processes large or changing datasets. |
| `$skip` and `$top`   | The endpoint supports offset-style pagination or the integration needs predictable fixed pages.    |

## Recommendations

* Prefer continuation links when the API returns them.
* Use stable sorting when paginating with `$skip` and `$top`.
* Store progress so synchronization jobs can resume after a temporary failure.
* Respect [rate limiting](/guides/rate-limiting) during long-running jobs.

> **Note:** `$skipToken` is not compatible with `$orderby`. When using token-based pagination, omit `$orderby` from the request. Use `$skip` and `$top` with `$orderby` when sorted pagination is required.
