ページネーション
すべての一覧エンドポイントで使うカーソルページネーション。レスポンスの外枠、上限、そのままコピーできる反復処理のループを説明します。
2026年8月13日更新
すべての一覧エンドポイントは、不透明なカーソルでページ送りします。カーソルは挿入や削除が あっても安定していて、ページ番号と違い、反復している間に行が飛ばされたり重複したりすること はありません。
レスポンスの外枠
{
"data": [ { "id": "lnk_…" }, { "id": "lnk_…" } ],
"pagination": {
"next_cursor": "eyJpZCI6Imxua19hYmMiLCJjcmVhdGVkX2F0IjoiMjAyNi0uLi4ifQ",
"has_more": true
}
}
limit— 1ページあたりの件数。1〜100で、既定は50です。cursor— 前のページのnext_cursorを、そのまま渡します。next_cursorは、最後のページではnullになります。
カーソルは不透明な文字列として扱ってください。形式は変わる可能性があり、保証されているのは
そのまま往復させられることだけです。形式の壊れたカーソルは、黙って1ページ目から始め直すの
ではなく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とともに1ページで返ります。決済と入金はperiodで絞り込み、1リクエスト
あたり100行が上限です。
並び順は/partner/clientsを除いてどこでも新しい順で、/partner/clientsだけは安定した
id順でページ送りされます。