Vai al contenuto
LinkProfit

Paginazione

Paginazione a cursore su ogni endpoint di elenco: la struttura della risposta, i limiti e un ciclo di iterazione pronto da copiare.

Aggiornato il 13 agosto 2026

Ogni endpoint di elenco pagina con un cursore opaco. I cursori restano stabili di fronte a inserimenti ed eliminazioni: a differenza dei numeri di pagina, non saltano né duplicano righe mentre le scorri.

La struttura della risposta

{
  "data": [ { "id": "lnk_…" }, { "id": "lnk_…" } ],
  "pagination": {
    "next_cursor": "eyJpZCI6Imxua19hYmMiLCJjcmVhdGVkX2F0IjoiMjAyNi0uLi4ifQ",
    "has_more": true
  }
}
  • limit — dimensione della pagina, 1–100, valore predefinito 50.
  • cursor — il next_cursor della pagina precedente, passato tale e quale.
  • next_cursor vale null sull'ultima pagina.

Tratta il cursore come una stringa opaca: il suo formato può cambiare, l'unica garanzia è che tu possa restituirlo così com'è. Un cursore malformato risponde 400 invalid_request invece di ripartire in silenzio dalla prima pagina.

Iterare

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);
}

Dove si applicano i cursori

La paginazione a cursore è disponibile su /links, /events, /partner/clients e /webhooks/{id}/deliveries. Gli elenchi brevi — domini, piani, webhook — arrivano in un'unica pagina con has_more: false; pagamenti e payout si filtrano per period e sono limitati a 100 righe per richiesta.

L'ordinamento è dal più recente al più vecchio ovunque, tranne su /partner/clients, che pagina in ordine stabile di id.