Listings do not return the full collection. The API uses two pagination styles, and each operation declares its own on its reference page along with its defaults and caps.
| style | parameters | where it appears |
|---|---|---|
| Page | page, per_page | Listings: validations, webhook deliveries, rows of an import |
| Cursor | cursor, limit | The public changelog, which grows at one end and is not walked by page number |
Both report their state in meta.pagination. The detail differs between the two styles, but the location does not.
Page
page starts at 1 and per_page sets its size. per_page is capped: it is clamped to the operation's maximum — usually 100 — rather than rejected, so a larger value does not raise an error but returns the largest page.
"meta": {
"pagination": { "page": 2, "per_page": 50, "total": 137, "total_pages": 3 }
}total is the number of items matching the filters applied, and total_pages how many pages they occupy. Walking the listing means requesting page from 1 through total_pages.
Cursor
The changelog grows at one end: new entries may appear between two requests, and counting from the start would make an item repeat or be skipped. The cursor avoids both by pointing at the exact place where the previous response stopped.
limit sets the size and cursor says where to continue. The response carries both continuation values:
"meta": {
"pagination": {
"total": 412,
"limit": 25,
"has_more": true,
"next_cursor": "eyJyZWxlYXNlX3ZlcnNpb24iOiIxLjQ3LjEiLCJlbnRyeV9pbmRleCI6MX0="
}
}Walking the feed means repeating the request with the received next_cursor sent as cursor, for as long as has_more is true. The first request is made without cursor.
The changelog also accepts page_by, which does not change the style but what limit counts: entry (the default) counts individual entries, and minor counts minor-version groups.
A parameter that does not belong is silently ignored
Each operation accepts only the parameters of its own style. The rest do not raise an error: they are discarded.
This is worth keeping in mind because the failure never announces itself. Sending offset to a page-paginated listing does not return a 400; it returns page 1, and returns it again on every request. A walk written with offset against that listing never terminates — a full page always arrives — and repeats the same items indefinitely.
When a walk fails to advance, the first thing to check is whether the parameters sent are the ones for that operation's style. Its reference page lists them.