Pular para o conteúdo
LinkProfit

Paginação

Paginação por cursor em todos os endpoints de listagem: o envelope, os limites e um laço de iteração pronto para copiar e colar.

Atualizado em 13 de agosto de 2026

Todo endpoint de listagem pagina com um cursor opaco. Os cursores são estáveis diante de inserções e exclusões: ao contrário dos números de página, eles nunca pulam nem duplicam linhas enquanto você itera.

O envelope

{
  "data": [ { "id": "lnk_…" }, { "id": "lnk_…" } ],
  "pagination": {
    "next_cursor": "eyJpZCI6Imxua19hYmMiLCJjcmVhdGVkX2F0IjoiMjAyNi0uLi4ifQ",
    "has_more": true
  }
}
  • limit — tamanho da página, de 1 a 100, padrão 50.
  • cursor — o next_cursor da página anterior, passado literalmente.
  • next_cursor é null na última página.

Trate o cursor como uma string opaca: o formato pode mudar, e a única garantia é que ele volte para a API exatamente como veio. Um cursor malformado responde 400 invalid_request em vez de recomeçar em silêncio da primeira página.

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

Onde os cursores se aplicam

A paginação por cursor está disponível em /links, /events, /partner/clients e /webhooks/{id}/deliveries. Listas curtas — domínios, planos, webhooks — vêm em uma única página com has_more: false; pagamentos e repasses são filtrados por period e limitados a 100 linhas por requisição.

A ordenação é do mais recente para o mais antigo em toda parte, exceto em /partner/clients, que pagina em ordem estável de id.