Saltar al contenido
LinkProfit

Paginación

Paginación por cursor en todos los endpoints de listado: el envoltorio, los límites y un bucle de iteración listo para copiar.

Actualizado el 13 de agosto de 2026

Todos los endpoints de listado paginan con un cursor opaco. Los cursores son estables ante inserciones y borrados: a diferencia de los números de página, nunca se saltan ni duplican filas mientras iteras.

El envoltorio

{
  "data": [ { "id": "lnk_…" }, { "id": "lnk_…" } ],
  "pagination": {
    "next_cursor": "eyJpZCI6Imxua19hYmMiLCJjcmVhdGVkX2F0IjoiMjAyNi0uLi4ifQ",
    "has_more": true
  }
}
  • limit — tamaño de página, de 1 a 100, por defecto 50.
  • cursor — el next_cursor de la página anterior, pasado tal cual.
  • next_cursor es null en la última página.

Trata el cursor como una cadena opaca: su formato puede cambiar y lo único garantizado es devolverlo tal como llegó. Un cursor mal formado responde 400 invalid_request en lugar de reiniciar en silencio desde la primera página.

Iterar

curl -s "$LINKPROFIT_API_BASE/links?limit=100" \
  -H "Authorization: Bearer $LINKPROFIT_API_KEY"
# then with the next_cursor value from the response:
curl -s "$LINKPROFIT_API_BASE/links?limit=100&cursor=CURSOR_FROM_PREVIOUS_PAGE" \
  -H "Authorization: Bearer $LINKPROFIT_API_KEY"
async function* allLinks(base, key) {
  let cursor = null;
  do {
    const url = new URL(`${base}/links`);
    url.searchParams.set("limit", "100");
    if (cursor) url.searchParams.set("cursor", cursor);

    const response = await fetch(url, {
      headers: { Authorization: `Bearer ${key}` },
    });
    if (!response.ok) throw new Error(`HTTP ${response.status}`);

    const page = await response.json();
    yield* page.data;
    cursor = page.pagination.next_cursor;
  } while (cursor);
}

Dónde se aplican los cursores

La paginación por cursor está disponible en /links, /events, /partner/clients y /webhooks/{id}/deliveries. Las listas cortas —dominios, planes, webhooks— se devuelven en una sola página con has_more: false; los pagos y las liquidaciones se filtran por period y están topados en 100 filas por solicitud.

El orden es de más reciente a más antiguo en todas partes salvo en /partner/clients, que pagina por orden estable de id.