# Pagination

Guru Pay API endpoints that return lists of resources (e.g., transactions) support **pagination** to efficiently deliver large datasets in manageable chunks.

{% hint style="info" %}
Pagination metadata is included via **custom HTTP response headers**, not in the response body.
{% endhint %}

## Headers

| Header               | Type    | Description                                                                  |
| -------------------- | ------- | ---------------------------------------------------------------------------- |
| X-Api-Total          | integer | Total number of records.                                                     |
| X-Api-Per-Page       | integer | Number of records returned on the current page.                              |
| X-Api-Has-More-Pages | integer | Returns `1` when additional pages are available. Otherwise, returns nothing. |
| X-Api-Has-Has-Pages  | integer | Returns last page number.                                                    |
| X-Api-Page           | integer | Current page number (starts from 1).                                         |

## Example Response Headers

```http
X-Api-Total: 60
X-Api-Per-Page: 20
X-Api-Has-More-Pages: 1
X-Api-Current-Page: 1
```

## Example Usage

```http
GET /api/v1/transactions?page=1

Authorization: Bearer YOUR_API_TOKEN
```

## Best Practices

* Always check `X-Api-Has-More-Pages` before making another request.
* Avoid hardcoding limits - respect the `X-Api-Per-Page` value in case the backend changes.

{% hint style="warning" %}
Please note that paginated results are limited to the first 10,000 matching records. If you reach this limit, refine your filters to narrow the result set.
{% endhint %}
