---
updatedAt: 2026-04-09T13:58:43.000Z
---

Fetch the complete documentation index at: https://developer.productboard.com/llms.txt. Use this file to discover all available pages before exploring further. Append .md to any documentation page URL to get its markdown version.

# Pagination

Some endpoints in the Productboard REST API v2 return paginated results. Instead of returning all records at once, the response includes a limited set of results along with a link to the next page (if more results are available).

The Productboard REST API uses cursor-based pagination for all endpoints that return a list of results.
Instead of using page numbers, we return a `pageCursor` that points to the next set of results.

## 🔍 How It Works

* Responses include a `links.next` field if there’s another page of results available.
* This link contains a `pageCursor` query parameter that you can pass in your next request.
* If `links.next` is not present, you’ve reached the end of the results.

### Example request

```curl
GET http://api.productboard.com/v2/notes?pageCursor=some_cursor
Authorization: Bearer YOUR_ACCESS_TOKEN
Accept: application/json
```

### Example response

```
{
  "data": [
    { ..., "title": "Customer Feedback – March", ... }
  ],
  "links": {
    "next": "https://api.productboard.com/v2/notes?pageCursor=next_cursor_value"
  }
}
```

## Fetching the Next Page

### Example request

```curl
GET https://api.productboard.com/v2/notes?pageCursor=next_cursor_value
Authorization: Bearer YOUR_ACCESS_TOKEN
Accept: application/json
```

## Paginated attribute values

* Some attribute values in a response (e.g. relationships which are part of entity response) can be paginated
* In this case the shape of the attribute value is the same as that of the list of results as described above
* `links.next` then points to a separate endpoint providing listing of resources referenced by the attribute

## 💡 Best Practices

* Always check for links.next before making another request.
* Treat the `pageCursor` as an opaque string — don’t try to parse or modify it.
* Continue paging until links.next is no longer returned.