Pagination
The list endpoint uses opaque cursors that keep deep result sets stable as new CVEs are ingested.
Each page returns pagination.next_cursor. Pass it back as ?cursor= with the same filters and sort to fetch the next page, and stop when it comes back null. Cursors are position markers rather than numeric offsets, so a page never shifts or duplicates rows because something was inserted ahead of your position.
# Page 1
curl "https://radicalnotion.ai/api/v1/cves?severity=critical&limit=50" \
-H "Authorization: Bearer $RN_TOKEN"
# -> { "data": [...], "pagination": { "limit": 50, "next_cursor": "eyJ2IjoiMj..." } }
# Page 2 - same filters, plus the cursor
curl "https://radicalnotion.ai/api/v1/cves?severity=critical&limit=50&cursor=eyJ2IjoiMj..." \
-H "Authorization: Bearer $RN_TOKEN"A cursor is tied to the sort it was minted under. Reusing one with a different sort or incompatible filters returns invalid_cursor (400) — mint a fresh cursor by re-requesting the first page with the new parameters.