Pagination

List endpoints use cursor-based pagination. Each response includes a pagination object:

{
  "data": [
    /* items */
  ],
  "pagination": {
    "next_cursor": "eyJpZCI6IjAxSjkifQ==",
    "has_more": true
  }
}

Requesting a page

Query parameterTypeDefaultNotes
cursorstringPass the next_cursor from the previous response
limitinteger50Max 200

Example (set N24M_API_KEY to your workspace API key in the shell first):

curl --url 'https://api.not24get.me/workspaces/WS/bookmarks?limit=100' \
     --header "Authorization: Bearer ${N24M_API_KEY}" \
     --header 'X-Workspace-ID: WS'

Then for the next page:

curl --url 'https://api.not24get.me/workspaces/WS/bookmarks?limit=100&cursor=eyJpZCI6IjAxSjkifQ==' \
     --header "Authorization: Bearer ${N24M_API_KEY}" \
     --header 'X-Workspace-ID: WS'

When pagination.has_more is false, you have reached the end. next_cursor will be null or absent.

Stable ordering

Items are ordered by descending creation time, then by ID for tiebreakers. Cursors include both, so a page never shifts mid-iteration even if new items are created while you paginate.

Don't compute total counts

The API does not return a total row count by default. Counting is expensive and rarely useful in real integrations. If you need an exact count, iterate fully — but consider whether your UX really needs it.