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

# Paginação e filtros

> pageNumber, pageSize, count, hasMore e filtros de data com offset de fuso.

Só `conversations`, `messages`, `contacts` e `cards` são paginados. `tags`, `pipelines`, `lost-reasons` e `connections` devolvem a lista completa, sem `count`/`hasMore` (a conta raramente tem mais que algumas dezenas desses registros).

## Parâmetros

| Parâmetro | Padrão | Máximo |
| - | - | - |
| `pageNumber` | `1` | — (1-based: a primeira página é `1`, não `0`) |
| `pageSize` | `40` | `100` |

<Note>`GET /v1/conversations/{ticketId}/messages` é exceção: `pageSize` tem default `100` e máximo `200`, porque conversas costumam ter muito mais mensagens do que outras listas têm registros.</Note>

Toda resposta paginada traz:

* `count` — total de registros que atendem ao filtro (não só os da página atual).
* `hasMore` — `true` se existe próxima página.
* o array em si, num campo com o **nome do recurso** — não existe um `data` genérico. `GET /v1/contacts` devolve `contacts`, `GET /v1/cards` devolve `cards`, `GET /v1/conversations` devolve `conversations`, `GET /v1/conversations/{ticketId}/messages` devolve `messages`.

```json theme={null}
{
  "requestId": "...",
  "count": 137,
  "hasMore": true,
  "contacts": [ ]
}
```

<Note>O nome muda por endpoint — confira a [referência](/pt/referencia/conversas/listar-conversas) do endpoint específico se não tiver certeza do campo.</Note>

## Paginação completa em Node

```js theme={null}
async function listAllContacts() {
  const all = [];
  let pageNumber = 1;
  let hasMore = true;

  while (hasMore) {
    const r = await fetch(
      `https://sua-instancia.whatix.cloud/wapi/v1/contacts?pageNumber=${pageNumber}&pageSize=100`,
      { headers: { Authorization: "Bearer wtx_live_SEU_TOKEN" } }
    );
    const { contacts, hasMore: more } = await r.json();
    all.push(...contacts);
    hasMore = more;
    pageNumber++;
  }

  return all;
}
```

## Filtros de data

Endpoints com filtro de data (como `createdAtAfter`/`createdAtBefore` em cards) exigem **offset de fuso explícito** no formato ISO-8601:

```
2026-09-01T00:00:00-03:00
```

Datas sem offset (`2026-09-01T00:00:00`) ou só a data (`2026-09-01`) são rejeitadas com `400` e `code: ERR_INVALID_DATE_FILTER`.

<Note>Um intervalo invertido (`createdAtAfter` maior que `createdAtBefore`) **não** é rejeitado — a API só valida o formato de cada data isoladamente. Nesse caso a resposta é `200` com a lista vazia, não um erro.</Note>

```bash theme={null}
curl "https://sua-instancia.whatix.cloud/wapi/v1/cards?createdAtAfter=2026-09-01T00:00:00-03:00&createdAtBefore=2026-09-30T23:59:59-03:00" \
  -H "Authorization: Bearer wtx_live_SEU_TOKEN"
```

<Warning>Use `Z` para UTC ou o offset da sua instância (ex.: `-03:00` para horário de Brasília). Nunca envie a data sem offset — mesmo que pareça funcionar em testes locais, a API sempre recusa.</Warning>
