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

# Paginación

> Cómo paginar resultados con page-based y cursor-based.

## Dos modelos de paginación

La API usa dos modelos según el recurso:

| Modelo           | Recursos                 | Cuándo usarlo                       |
| ---------------- | ------------------------ | ----------------------------------- |
| **Page-based**   | Contactos, Templates     | Listas estáticas, acceso por página |
| **Cursor-based** | Conversaciones, Mensajes | Listas que cambian frecuentemente   |

***

## Page-based

### Parámetros

| Parámetro  | Default | Rango | Descripción           |
| ---------- | ------- | ----- | --------------------- |
| `page`     | `1`     | 1+    | Número de página      |
| `pageSize` | `20`    | 1–100 | Resultados por página |

### Ejemplo

```bash theme={null}
curl "https://api.waspytech.com/api/v2/contacts?page=2&pageSize=50" \
  -H "Authorization: Bearer wspy_..."
```

### Respuesta

```json theme={null}
{
  "data": [ ... ],
  "meta": {
    "requestId": "...",
    "page": 2,
    "pageSize": 50,
    "total": 142
  }
}
```

Para saber si hay más páginas: `page * pageSize < total`.

***

## Cursor-based

### Parámetros

| Parámetro | Default   | Rango | Descripción                     |
| --------- | --------- | ----- | ------------------------------- |
| `cursor`  | `null`    | opaco | Cursor de la respuesta anterior |
| `limit`   | `20`–`50` | 1–100 | Resultados por página           |

### Ejemplo

Primera request (sin cursor):

```bash theme={null}
curl "https://api.waspytech.com/api/v2/conversations?limit=20" \
  -H "Authorization: Bearer wspy_..."
```

Página siguiente (con cursor):

```bash theme={null}
curl "https://api.waspytech.com/api/v2/conversations?limit=20&cursor=2026-04-13T14:32:00.000Z|uuid" \
  -H "Authorization: Bearer wspy_..."
```

### Respuesta

```json theme={null}
{
  "data": [ ... ],
  "meta": {
    "requestId": "...",
    "cursor": "2026-04-13T14:32:00.000Z|uuid-del-ultimo",
    "hasMore": true
  }
}
```

* Si `hasMore` es `true`, usá el `cursor` devuelto para la próxima request.
* Si `hasMore` es `false`, llegaste al final.

***

## Orden de resultados

| Recurso                  | Orden                                        |
| ------------------------ | -------------------------------------------- |
| Conversaciones           | Más recientes primero                        |
| Mensajes en conversación | Más antiguos primero                         |
| Contactos                | Por fecha de creación, más recientes primero |
| Templates                | Por fecha de creación, más recientes primero |

<Info>
  El cursor es un valor opaco. No lo modifiques ni lo construyas manualmente — usá siempre el que devuelve la API.
</Info>
