Pagination
Pagination par curseur sur chaque endpoint de liste : l’enveloppe, les limites et une boucle d’itération prête à copier.
Mis à jour le 13 août 2026
Chaque endpoint de liste pagine avec un curseur opaque. Les curseurs sont stables face aux insertions et aux suppressions : contrairement aux numéros de page, ils ne sautent ni ne dupliquent jamais de lignes pendant que vous itérez.
L’enveloppe
{
"data": [ { "id": "lnk_…" }, { "id": "lnk_…" } ],
"pagination": {
"next_cursor": "eyJpZCI6Imxua19hYmMiLCJjcmVhdGVkX2F0IjoiMjAyNi0uLi4ifQ",
"has_more": true
}
}
limit— taille de page, de 1 à 100, 50 par défaut.cursor— lenext_cursorde la page précédente, transmis tel quel.next_cursorvautnullsur la dernière page.
Traitez le curseur comme une chaîne opaque : son format peut changer, seule sa
restitution à l’identique est garantie. Un curseur mal formé répond
400 invalid_request plutôt que de repartir silencieusement de la première page.
Itérer
curl -s "$LINKPROFIT_API_BASE/links?limit=100" \
-H "Authorization: Bearer $LINKPROFIT_API_KEY"
# puis avec la valeur next_cursor renvoyée par la réponse :
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);
}
Où les curseurs s’appliquent
La pagination par curseur est disponible sur /links, /events,
/partner/clients et /webhooks/{id}/deliveries. Les listes courtes —
domaines, forfaits, webhooks — reviennent en une seule page avec
has_more: false ; les paiements et versements sont filtrés par period et
plafonnés à 100 lignes par requête.
Le tri est du plus récent au plus ancien partout, sauf sur /partner/clients,
qui pagine dans un ordre d’identifiants stable.