Pagination examples
Use this guide when you are writing a sync job rather than testing a single request in the API reference.
Cursor helper
Cursor values are opaque. Store or replay them exactly as returned, and do not decode or construct them.
Code
Retry the current page on 429 or 5xx. For incremental sync, advance your
watermark only after every page in the run has completed.
People sync
Use updated_since for polling jobs. Persist the maximum updated_at seen
only after the full paginated run completes.
Code
Time-off windows
Time-off list reads should be bounded by a date window. Combine the window with status or person filters when you can.
Code
Use updated_since for reconciliation jobs that need changes since the last
run. Keep the date window if the downstream system only needs a bounded
calendar range.
Document metadata
Document endpoints return metadata only. They do not return document bytes or download URLs.
Code
Provider mappings
Provider mappings are useful when reconciling remote identifiers. They require
provider_mappings:read plus the relevant resource read scope.
Code
Webhook delivery logs
Delivery logs are paginated independently per webhook endpoint. Use filters to review failures or retry queues.
Code
Use the redelivery action only after you have fixed the receiver problem that caused the delivery to fail.
Non-paginated collections
Some endpoints return small full collections under data and do not include a
pagination object. Examples include /organisation/locations, /org-units,
/working-patterns, /custom-fields, /public-holidays, and
/reference/* dictionaries. Treat those responses as a single page.
Single-resource endpoints, such as GET /people/{personId} or
GET /webhooks/{webhookId}/deliveries/{deliveryId}, also do not paginate.