Skip to main content
List endpoints use cursor pagination. A response has this shape:
Pass next_cursor back as cursor:

Rules

  • Treat cursors as opaque strings. Do not parse or increment them.
  • Stop when has_more is false or next_cursor is null.
  • Keep the same filters while following a cursor.
  • Process each page before requesting the next one to avoid memory spikes.
  • Checkpoint the last completed cursor in long-running backfills.
  • Make your destination writes idempotent because records can change during a scan.
Cursor pagination is not a frozen database snapshot. For ongoing sync, store Perkstar record IDs and updated_at values, and use webhooks to react to new activity between reconciliation runs.

TypeScript SDK

The official SDK follows cursors automatically: