Skip to main content

Pagination

Most list endpoints in the API (GET /modules, GET /services, GET /tools, GET /processes, GET /logs) return the same paginated envelope:

Paging

  • Pass the previous response’s nextCursor back as the cursor query parameter to fetch the next page.
  • nextCursor is null when there are no more items; stop paging then.
  • limit is a positive integer, 1–100, defaulting to 20. Values above 100 are silently clamped to 100.
  • Items are ordered by a stable, unique sort key per endpoint (newest-first for modules, services, processes, and logs; (serviceId, id) ascending for tools). Cursors encode a position in that ordering, not the filters — restart from the first page (omit cursor) whenever the filters change.
Note: registry browse endpoints (GET /registries/:id/definitions, GET /registries/:id/modules) return { definitions | modules, nextCursor } rather than the { items, nextCursor, hasMore } envelope above, but use the same cursor/limit query parameters (limit clamped to 100, default 20).

Errors

A malformed, re-encoded, or expired cursor returns 400 with a stable error code on the body: On either error, drop the cursor and restart from the first page.
Last modified on August 25, 2026