Перейти к содержимому
LinkProfit

Пагинация

Курсорная пагинация на каждом списочном эндпоинте: конверт ответа, лимиты и готовый цикл обхода.

Обновлено 13 августа 2026 г.

Каждый списочный эндпоинт разбивается на страницы непрозрачным курсором. Курсоры устойчивы к вставкам и удалениям: в отличие от номеров страниц, они никогда не пропускают и не дублируют строки во время обхода.

Конверт ответа

{
  "data": [ { "id": "lnk_…" }, { "id": "lnk_…" } ],
  "pagination": {
    "next_cursor": "eyJpZCI6Imxua19hYmMiLCJjcmVhdGVkX2F0IjoiMjAyNi0uLi4ifQ",
    "has_more": true
  }
}
  • limit — размер страницы, 1–100, по умолчанию 50.
  • cursor — значение next_cursor предыдущей страницы, передаётся без изменений.
  • next_cursor равен null на последней странице.

Относитесь к курсору как к непрозрачной строке: его формат может измениться, гарантируется только передача его обратно как есть. Некорректный курсор отвечает 400 invalid_request, а не начинает молча с первой страницы.

Обход

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

Где применяются курсоры

Курсорная пагинация доступна на /links, /events, /partner/clients и /webhooks/{id}/deliveries. Короткие списки — домены, тарифы, webhook — возвращаются одной страницей с has_more: false; платежи и выплаты фильтруются по period и ограничены 100 строками на запрос.

Порядок везде от новых к старым, кроме /partner/clients, который разбивается на страницы в устойчивом порядке идентификаторов.