The Skills Fest

Pagination

Collections come back in an envelope:

{
  "data": [ { "id": 1489, "object": "member" } ],
  "has_more": true,
  "next_cursor": "eyJpZCI6MTU4OH0"
}

Pass next_cursor back as ?cursor= until has_more is false. limit defaults to 50 and is clamped at 200.

Why cursors and not page numbers

People are added while you iterate. With page numbers that quietly skips or repeats rows — for a member export, a skipped row is a missing child. A cursor is a position in the data, so inserts elsewhere cannot shift it.

A bad cursor is an error

A malformed or truncated cursor returns 422. It does not silently restart at page one, which would loop forever without telling you.

CSV

Any collection accepts Accept: text/csv. CSV is not paginated; it is capped at 10,000 rows, and beyond that you get a 413 pointing back here.