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

# Pagination

For some of our resources (eg. transactions), a "list" endpoint exists to fetch resources in bulk.

These endpoints use a "cursor-based pagination", which means you can use the `per_page` and `cursor` query parameters to step through large collections page by page.

### Requests

Requests to paginated "list" endpoints accept the following query parameters:

| Parameter  | Type               | Description                                                       |
| ---------- | ------------------ | ----------------------------------------------------------------- |
| `cursor`   | String (optional)  | Cursor pointing to the beginning of a page                        |
| `per_page` | Integer (optional) | Amount of resources that should be returned. (1-100. Default: 25) |

### Responses

All requests to those paginated "list" endpoints have the following response properties:

| Property      | Type           | Description                                                                                                                  |
| ------------- | -------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `items`       | Array          | Array containing the listed resources (eg. transactions)                                                                     |
| `hasMore`     | Boolean        | Whether or not there are more resources to be fetched after this page                                                        |
| `perPage`     | Integer        | Amount of resources returned per page                                                                                        |
| `count`       | Integer        | Amount of resources on the current page                                                                                      |
| `nextCursor`  | String \| Null | Cursor pointing to the beginning of the next page (Use the `cursor` query parameter value to get the next page of resources) |
| `nextPageUrl` | String \| Null | URL pointing to the next page of resources (prebuilt for your convenience)                                                   |

**Example Response:**

<CodeGroup>
  ```json json theme={null}
  {
    "items": [
      {...},
      {...}
    ],
    "hasMore": true,
    "perPage": 50,
    "count": 50,
    "nextCursor": "kdfhh87sdkfjslasdf7hsbadf",
    "nextPageUrl": "https://api.procuros.io/v2/transactions?cursor=kdfhh87sdkfjslasdf7hsbadf"
  }
  ```
</CodeGroup>

### Workflow

1. Make a request to the "list" endpoint without the `cursor` query parameter to fetch the first page of resources. Optionally use the `per_page` query parameter to limit the number of resources to fetch. Example: `GET https://api.procuros.io/v2/transactions`

2. From the response, read the `hasMore` property to determine if there are more resources to fetch on subsequent pages.

3. If more resources are available, use the `nextCursor` property on the response to build the URL of your next request. Alternatively, use the `nextPageUrl` that we've prebuilt for you. Example: `GET https://api.procuros.io/v2/transactions?cursor=kdfhh87sdkfjslasdf7hsbadf`

4. Continue with step 2.
