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

# Paginação

> Listas por cursor, com updatedSince para sincronizar. Sem número de página e sem total: siga o nextCursor até ele vir nulo.

Toda lista da API pagina por cursor. Peça a primeira página, guarde o `meta.nextCursor` e repita com `cursor=` até ele vir `null`.

| Parâmetro | O quê |
| - | - |
| `limit` | de 1 a 100; o padrão é 25 |
| `cursor` | o `meta.nextCursor` da página anterior; é opaco, não monte à mão |
| `updatedSince` | só o que mudou a partir desta data-hora, inclusive (ISO 8601); nas listas de pacientes, anamneses e atendimentos |

```json theme={null}
{
  "data": [
    { "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "name": "Amanda Ribeiro Costa", "…": "…" }
  ],
  "meta": {
    "limit": 25,
    "nextCursor": "eyJ1IjoiMjAyNi0xMC0xNVQxNDozMTowN1oiLCJpIjoiZjQ3YWMxMGIifQ"
  }
}
```

## Ordem

* **Pacientes, anamneses e atendimentos** vêm em ordem de atualização (`updatedAt`, do mais antigo para o mais novo). É a ordem certa para sincronizar: a última linha da última página é o seu próximo `updatedSince`.
* **Eventos** vêm em ordem de acontecimento (a sequência da clínica); `order=desc` traz os mais recentes primeiro. Em ordem crescente, o cursor nunca pula evento, e um evento pode levar alguns segundos a mais para aparecer; a entrega é pelo menos uma vez. Veja [eventos](https://docs.westhetics.io/webhooks/eventos.md#pela-consulta-pelo-menos-uma-vez-sem-pular).

Como `updatedSince` inclui o próprio instante, a última ficha da rodada anterior pode voltar na seguinte: trate como atualização, não como ficha nova.

```python theme={null}
import os, requests

API = "https://api.westhetics.io/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['WESTHETICS_API_KEY']}"}

def all_patients(updated_since=None):
    params = {"limit": 100}
    if updated_since:
        params["updatedSince"] = updated_since
    while True:
        page = requests.get(f"{API}/patients", headers=HEADERS, params=params, timeout=15).json()
        yield from page["data"]
        cursor = page["meta"]["nextCursor"]
        if not cursor:
            return
        params = {"limit": 100, "cursor": cursor}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.