Pagination

All lists (/v1/addresses, /v1/rules, /v1/channels, /v1/notifications, /v1/matches, /v1/events) are paginated with a cursor and sorted newest first.

Response#

JSON
{
  "data": [ { "id": "0193a1b2-5c3d-7e4f-8a9b-0c1d2e3f4a5b", "...": "..." } ],
  "has_more": true,
  "next_cursor": "0193a1b25c3d7e4f8a9b0c1d2e3f4a5b"
}
Field Meaning
data Items of the page.
has_more true when there are more items after this page.
next_cursor Cursor of the next page, or null on the last page.

Parameters#

Parameter Meaning
limit Page size, 1 to 100. Default: 50.
cursor The previous page's next_cursor value, unchanged.

The cursor is opaque: its format may change, do not build it yourself. Keep the same filters from one page to the next. An out-of-range limit or an invalid cursor answers 400 invalid_query with details.field.

An item created while you walk the list does not show up in later pages: you get no duplicate and no gap.

Walking a full list#

cURL
curl "https://aicscan.io/v1/matches?limit=100" -H "Authorization: Bearer $AICSCAN_API_KEY"
# then, while has_more is true:
curl "https://aicscan.io/v1/matches?limit=100&cursor=0193a1b25c3d7e4f8a9b0c1d2e3f4a5b" \
  -H "Authorization: Bearer $AICSCAN_API_KEY"

Date filters#

/v1/matches, /v1/events and /v1/notifications accept since (inclusive) and until (exclusive), in ISO 8601: 2026-11-01, 2026-11-01T00:00:00Z or with a UTC offset. An unreadable date answers 400 invalid_query.

Shell
curl "https://aicscan.io/v1/matches?since=2026-11-01&until=2026-12-01&severity=critical" \
  -H "Authorization: Bearer $AICSCAN_API_KEY"