Paginación
Cómo recorrer meses de movimientos sin repetir ni saltarte filas.
Las listas se paginan por cursor, no por número de página:
curl "https://api.verifika.tech/v1/incomes?limit=50" \
-H "Authorization: Bearer vk_live_..."{
"object": "list",
"data": [ /* … 50 ingresos … */ ],
"hasMore": true,
"nextCursor": "cmtkc0rif005ysuw1mbeef235"
}Para la siguiente página, pasas ese cursor:
curl "https://api.verifika.tech/v1/incomes?limit=50&startingAfter=cmtkc0rif005ysuw1mbeef235" \
-H "Authorization: Bearer vk_live_..."Cuando hasMore es false, terminaste.
| Parámetro | Default | Máximo |
|---|---|---|
limit | 50 | 100 |
startingAfter | — | id de la última fila de la página anterior |
Por qué no hay page=2
Porque el libro de un negocio crece mientras lo recorres. Con páginas numeradas, cada venta nueva empuja las filas una posición: la página 2 te devuelve algo que ya viste en la 1, o se salta una fila que nunca vas a ver. Un proceso que sincroniza de noche termina con movimientos duplicados y sin forma de darse cuenta.
El cursor apunta a una fila concreta. Lo que ya pasó, ya pasó.
Recorrer todo
async function* todosLosIngresos(params = {}) {
let cursor = null;
do {
const url = new URL('https://api.verifika.tech/v1/incomes');
for (const [k, v] of Object.entries(params)) url.searchParams.set(k, v);
url.searchParams.set('limit', '100');
if (cursor) url.searchParams.set('startingAfter', cursor);
const res = await fetch(url, {
headers: { Authorization: `Bearer ${process.env.VERIFIKA_API_KEY}` },
});
if (!res.ok) throw new Error(`Verifika ${res.status}`);
const page = await res.json();
yield* page.data;
cursor = page.hasMore ? page.nextCursor : null;
} while (cursor);
}
for await (const ingreso of todosLosIngresos({ from: '2026-09-01' })) {
console.log(ingreso.id, ingreso.amount);
}Sincroniza por fecha, no desde el principio
Para mantener una copia al día, no recorras el histórico completo cada vez: guarda el
occurredAt del último movimiento que procesaste y arranca con ?from=. Deja un solape de
unas horas — un aviso del banco puede llegar tarde y verificar un pago de ayer.
Filtros
Los mismos que ves en el panel, para que un reporte y tu integración nunca digan cosas distintas del mismo mes:
| Parámetro | Ejemplo | Nota |
|---|---|---|
from / to | 2026-09-01 | Una fecha pelada es un día colombiano, no UTC |
status | VERIFIED | Repetible: ?status=VERIFIED&status=PENDING |
origin | WHATSAPP | WHATSAPP, BANK, API, MANUAL |
branchId | cmt7… | Repetible |
minAmount / maxAmount | 50000 | Enteros en pesos |
accountLabel | Nequi *4821 | Repetible |
q | Juan | Busca en nombre del cliente y referencia |
sort | recent | recent, oldest, amount_desc, amount_asc |