Overview
List endpoints return results wrapped in a standard data / meta envelope. Each paginated response includes:
Query parameters
Basic example
First page:
Next page — pass nextCursor as cursor:
When hasMore is false (or nextCursor is null), you’ve consumed all pages.
Iterating all pages
Python
TypeScript
Time-range filtering
Use since and until to fetch a specific window without iterating your entire history:
For production polling, store the nextCursor from your last run and resume from there rather than re-fetching everything.
Notes on cursors
- Cursors are opaque — don’t parse or modify them.
- Cursors are stable — new records arriving during pagination won’t cause you to skip or re-see existing records.
- Cursors may expire after a period of inactivity. If you receive a
400 bad_request error on a cursor, start a fresh request from the beginning.