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

# Pagination

> Learn how to handle paginated responses in the NeetoForm 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>

<ParamField query="page_size" type="integer">
  The number of items to return per page
</ParamField>

## Example Usage

Here's how to retrieve paginated results:

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

  ```javascript JavaScript theme={"system"}
  const response = await fetch('https://{your-subdomain}.neetoform.com/api/external/v1/forms?page_number=2&page_size=25', {
    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}.neetoform.com/api/external/v1/forms"
  params = {
      "page_number": 2,
      "page_size": 25
  }
  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 forms, with 25 results per page.

## Response Structure

Paginated responses include pagination metadata:

```json Response Example theme={"system"}
{
  "forms": [
    // ... array of form objects
  ],
  "pagination": {
    "total_records": 150,
    "total_pages": 6,
    "current_page_number": 2,
    "page_size": 25
  },
  "total_count": 150
}
```

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

<ResponseField name="pagination" type="object">
  Pagination metadata. Contains `total_records` (total items), `total_pages`, `current_page_number`, and `page_size`.
</ResponseField>

## Default Behavior

<Note>
  If pagination parameters are 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**: Use page sizes between 10-100 items for optimal performance.
2. **Handle empty results**: Always check if the returned array is empty to detect the end of data.
3. **Use total\_count**: Use the `total_count` field to calculate the total number of pages needed.
4. **Implement error handling**: Handle cases where the requested page doesn't exist.
