Conceptos
Paginación
Las operaciones que listan objetos devuelven páginas con un cursor. El orden es fijo: lo más nuevo primero.
Parámetros
limitintegerCantidad de objetos a devolver, entre 1 y 100. Default 10.
Default:
10startingAfterstringCursor: id del último objeto de la página anterior. Devuelve los siguientes.
endingBeforestringCursor: id del primer objeto de la página actual. Devuelve los anteriores.
Se usa startingAfter o endingBefore, no los dos a la vez. El cursor es el id de un objeto: si no existe, la respuesta es 400 con parameter_invalid.
La respuesta
objectstringdataarray de objetosUn paciente de la organización.
hasMorebooleanSi hay más objetos después de esta página.
urlstring
{
"object": "list",
"data": [
{
"id": "pat_cm1a2b3c4d5e6f7g8h9i0j",
"object": "patient",
"fullName": "Paciente Demo",
"phone": "+5493425550000",
"email": "paciente.demo@example.com",
"dni": "11111111",
"externalId": "HC-1234",
"dateOfBirth": null,
"stage": "pending_follow_up",
"optedOut": false,
"createdAt": "2026-10-01T17:30:00.000Z",
"updatedAt": "2026-10-01T17:30:00.000Z"
}
],
"hasMore": false,
"url": "/v1/patients"
}El orden es por fecha de creación, de la más nueva a la más vieja. La paginación es por cursor, no por número de página: si se crean objetos mientras se recorre la lista, las páginas siguientes no se corren ni repiten elementos.
Pedir la página siguiente
Con hasMore: true, la página siguiente se pide con startingAfter igual al id del último objeto recibido.
curl -G https://www.kuida.ar/api/v1/patients \
-H "Authorization: Bearer kd_test_…" \
-d limit=3 \
-d startingAfter=pat_cm1a2b3c4d5e6f7g8h9i0jRecorrer una lista completa
Sin SDK, se piden páginas de 100 hasta que hasMore sea false. Los SDKs tienen un iterador que hace ese recorrido solo, pidiendo cada página cuando hace falta:
import { Kuida } from "@kuida/sdk";
const kuida = new Kuida("kd_test_…");
// El SDK pide las páginas a medida que hacen falta.
for await (const patient of kuida.patients.list({ limit: 100 })) {
console.log(patient.id);
}Filtros
Cada lista acepta filtros como parámetros de consulta con el nombre del campo, por ejemplo GET /v1/appointments?patient=pat_…&status=confirmed o GET /v1/patients?phone=…. Los filtros de cada lista están en la referencia:
- GET /v1/patients:
phone,dni,externalId - GET /v1/doctors:
active,externalId - GET /v1/appointments:
patient,status,externalId,startAtGte,startAtLt - GET /v1/visits:
patient,externalId - GET /v1/intake_requests:
status,patient - GET /v1/treatments:
patient,active - GET /v1/events:
type,status,source - GET /v1/webhook_endpoints
- GET /v1/webhook_deliveries:
webhookEndpoint,status