Last updated
Pagination
Lists that can grow without bound are paged with an opaque cursor. Ask for a page size with limit, then pass the nextCursor of each page to get the next one.
Cursors
A paged response carries nextCursor. Send it back as the cursor query parameter for the next page; when it is null there is nothing older. Pages are newest first. Treat the cursor as opaque: its format may change.
GET /v1/live/sessions?limit=100
{ "data": { "items": [ … ], "nextCursor": "2026-10-31T07:51:44.935Z", "historyWindowDays": 365, "historyTruncated": false }}Each list sets its own limit range and default; the reference shows them next to the parameter. Every page is billed as one call.
History window
Recorded history is limited by the plan. historyWindowDays says how far back the workspace can read, and historyTruncated: true means older data exists but sits outside that window.
Short lists are not paged
Rankings boards, regions, alert rules and exports come back whole; they take a
limit where it applies but no cursor.Read every page
let cursor = null;const sessions = [];do { const params = new URLSearchParams({ limit: "100", ...(cursor ? { cursor } : {}) }); const res = await fetch(`https://api.roomscope.io/v1/live/sessions?${params}`, { headers: { Authorization: `Bearer ${process.env.ROOMSCOPE_API_KEY}` }, }); const { data } = await res.json(); sessions.push(...data.items); cursor = data.nextCursor;} while (cursor);Was this page helpful?