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

# Pagination

> Learn how to handle paginated responses in the NeetoDesk API.

## Pagination Parameters

You can control pagination using the following query parameters:

<ParamField query="page_number" type="integer">
  The page of results you want to retrieve (starting from 1)
</ParamField>

## Example Usage

Here's how to retrieve paginated results using cURL:

<CodeGroup>
  ```bash cURL theme={"system"}
  curl --request GET \
    --url "https://{your-subdomain}.neetodesk.com/api/v1/public/tickets?page_number=2" \
    --header 'X-Api-Key: your-api-key'
  ```

  ```javascript JavaScript theme={"system"}
  const response = await fetch(
    "https://{your-subdomain}.neetodesk.com/api/v1/public/tickets?page_number=2",
    {
      method: "GET",
      headers: {
        "X-Api-Key": "your-api-key",
        "Content-Type": "application/json",
      },
    }
  );

  const data = await response.json();
  console.log(data);
  ```

  ```python Python theme={"system"}
  import requests

  url = "https://{your-subdomain}.neetodesk.com/api/v1/public/tickets"
  params = {
      "page_number": 2
  }
  headers = {
      "X-Api-Key": "your-api-key",
      "Content-Type": "application/json"
  }

  response = requests.get(url, params=params, headers=headers)
  data = response.json()
  print(data)
  ```
</CodeGroup>

This retrieves the second page of tickets.

## Response Structure

Paginated responses include metadata about the pagination in JSON format:

```json Response Example theme={"system"}
{
  "tickets": [
    // ... array of ticket objects
  ],
  "pagination": {
    "total_records": 150,
    "current_page_number": 2,
    "total_pages": 6,
    "page_size": 30
  }
}
```

<ResponseField name="pagination.total_records" type="integer">
  The total number of items across all pages
</ResponseField>

<ResponseField name="pagination.current_page_number" type="integer">
  The current page number (if pagination was used)
</ResponseField>

<ResponseField name="pagination.total_pages" type="integer">
  The total number of pages available (if pagination was used)
</ResponseField>

<ResponseField name="pagination.page_size" type="integer">
  The number of items per page in the response
</ResponseField>

## Default Behavior

<Note>
  If the `page_number` parameter is not provided, default values will be applied:

  * **page\_number**: 1 (first page)
  * **page\_size**: 30 (30 items per page)
</Note>

## Best Practices

1. **Start with reasonable page sizes**: Expect \~30 items per page by default.
2. **Handle empty results**: Always check if the returned array is empty to detect the end of data.
3. **Use pagination metadata**: Use the `pagination.total_records` field to calculate the total number of pages needed.
4. **Implement error handling**: Handle cases where the requested page doesn't exist.
