Pagination

All list endpoints use opaque cursor-based pagination. No more offset-skipping, no risk of items shifting underneath you as data updates.

Cursor-based pagination

Each list response includes a meta.page object. When has_more is true, pass the cursor to the next request.

{
  "games": [ ... ],
  "meta": {
    "count": 50,
    "page": {
      "cursor": "eyJpZCI6IjAwMjI1MDA0MTIifQ==",
      "has_more": true
    }
  }
}

Parameters

ParameterTypeDefaultDescription
limitinteger50Items per page. Max 100 on most endpoints, 500 on bulk endpoints.
cursorstringOpaque cursor from previous response. Omit on first call.
orderstringresource defaultSort direction. Cursors are tied to order — don't change mid-walk.

Walking through a list

async function fetchAll(client, params) {
  const out = [];
  let cursor = undefined;

  do {
    const page = await client.news.list({ ...params, cursor, limit: 100 });
    out.push(...page.results);
    cursor = page.meta.page.has_more ? page.meta.page.cursor : null;
  } while (cursor);

  return out;
}

Limits and defaults

Cursors expire after 24 hours. If you need to resume a walk later, persist the underlying timestamp filter rather than the cursor.