REST API

Pagination

Cursor pagination (recommended) and offset pagination (deprecated; sunset 2026-11-04).

All GET collection endpoints are paginated. We support two modes side-by-side: cursor pagination (recommended) and offset pagination (deprecated; sunset 2026-11-04).

Cursor pagination uses an opaque token to walk forward through results. It is significantly faster than offset pagination on large collections because it does not need to count total records.

To opt in, send page[cursor]= (an empty cursor returns the first page). The response includes meta.page.next_cursor — pass that value back as page[cursor] to fetch the next page.

Parameter Default Description
page[cursor] empty Opaque cursor token returned by the previous request. Send empty (page[cursor]=) for the first page.
page[size] 10 How many records to return per page. Maximum 100 (or per-resource limit).

Sample cursor request

curl -X GET \
  'https://app.guestmanager.com/api/public/v2/events?page[cursor]=&page[size]=25' \
  -H 'Authorization: Token abcdefg' \
  -H 'Content-Type: application/json'

Sample cursor response

{
  "data": [...],
  "meta": {
    "count": 25,
    "page": {
      "size": 25,
      "next_cursor": "WyIyMDI2LTA1LTAxVDEyOjMwOjAwWiIsNDIxXQ",
      "last": false,
      "first": true
    },
    "links": {
      "self": "https://app.guestmanager.com/api/public/v2/events?page[cursor]=&page[size]=25",
      "next": "https://app.guestmanager.com/api/public/v2/events?page[cursor]=WyIyMDI2LTA1LTAxVDEyOjMwOjAwWiIsNDIxXQ&page[size]=25"
    }
  }
}

Cursor response meta

Field Type Description
meta.count integer Number of records returned in this response.
meta.page.size integer The page size.
meta.page.next_cursor string Opaque token for the next page. null when there are no more pages.
meta.page.last boolean true when this is the last page (next_cursor is null).
meta.page.first boolean true when this is the first page (no cursor was sent in the request).
meta.links.self URL The original request URL.
meta.links.next URL URL to fetch the next page. null when there are no more pages.

Sort behavior under cursor pagination

Cursor pagination orders by (updated_at DESC, id DESC) for SQL-backed endpoints, or your provided sort= parameter with id always appended as a tiebreaker. For Elasticsearch-backed endpoints (search), the cursor encodes the search_after sort values returned by Elasticsearch.

The cursor token is opaque — do not parse, modify, or persist it across API versions. Treat it as a black box that the API gives you and you give back unchanged.

Offset pagination (deprecated)

Deprecation: this mode emits Deprecation: true, Sunset: Wed, 04 Nov 2026 00:00:00 GMT, and a Link rel="deprecation" header on every response. Migrate to cursor pagination before the sunset date.

Parameter Default Description
page[number] 1 The page to return records for.
page[size] 10 How many records to return per page. Maximum 100 (or per-resource limit).

Sample offset response

{
  "data": [...],
  "meta": {
    "count": 10,
    "total": 14633,
    "page": {
      "number": 1,
      "size": 10,
      "next": 2,
      "prev": null,
      "total": 1464,
      "last": false,
      "first": true,
      "out_of_range": false
    },
    "links": {
      "self": ".../api/public/v2/events?page[number]=1",
      "next": ".../api/public/v2/events?page[number]=2",
      "prev": null,
      "last": ".../api/public/v2/events?page[number]=1464",
      "first": ".../api/public/v2/events?page[number]=1"
    }
  }
}