List user analytics
/analytics/reports/usersLists one row per user of your organisation: when invited, accepted, last logged in and last active, and counts of logins, views, enquiries and commitments over all time. Views, enquiries and commitments count only deals GET /deals lists for you, without negated or deleted events or settled enquiries. Deleted users are left out; a token whose organisation no longer exists gets an empty list. An entrepreneur is refused with 403 forbidden. Figures trail live data. Use GET /analytics/users/{user_id}/activity for one user. It only reads.
Query parameters
- Default:
Page size (1–100). Defaults to 25; values are clamped to the range.
25 Opaque pagination cursor taken from a prior response's
meta.next_cursor.Comma-separated top-level fields to return.
idis always returned.Comma-separated fields to sort by: name, type, status, created_at, last_login_at, last_active_at, logins, views, enquiries or commitments. Prefix a field with
-for descending. Defaults to-created_at. A user who never logged in or did anything sorts as the oldest.Users whose name contains this text, ignoring case.
- One of:
Only users of this kind: User (an investor), Internal User, Entrepreneur or Advisor. Takes
[in]and[not_in]with a comma-separated list.User,Internal User,Entrepreneur,Advisor - One of:
Only users with this status: Active, Suspended or Pending, matched whatever the stored capitalisation. Takes
[in]and[not_in]with a comma-separated list.Active,Suspended,Pending truegives only users who accepted their invitation;falsegives the rest.Only users the analytics store first saw in a range, written
filter[created_at][gte]=2026-10-01. Takes gt, gte, lt and lte.Only users who last logged in within a range, written
filter[last_login_at][gte]=2026-10-01. Takes gt, gte, lt and lte. A user who never logged in never matches.Only users who last did anything within a range, written
filter[last_active_at][gte]=2026-11-06T14:30:00Zfor the last hour. Takes gt, gte, lt and lte. A user who did nothing never matches.Only users who last accepted an invitation within a range, written
filter[invite_accepted_at][gte]=2026-10-01. Takes gt, gte, lt and lte. A user with no acceptance event never matches.
Responses
{
"data": [
{
"id": "9a9d1c5e-4f2b-4c8e-9a7d-2f1e6b3c4d5a",
"name": "string",
"type": "User",
"status": "Active",
"invite_accepted": true,
"invited_at": "2026-06-12T10:00:00+00:00",
"invite_accepted_at": "2026-06-12T10:00:00+00:00",
"last_login_at": "2026-06-12T10:00:00+00:00",
"last_active_at": "2026-06-12T10:00:00+00:00",
"logins": 1,
"views": 1,
"enquiries": 1,
"commitments": 1,
"created_at": "2026-06-12T10:00:00+00:00",
"updated_at": "2026-06-12T10:00:00+00:00"
}
],
"meta": {
"limit": 1,
"next_cursor": "string",
"prev_cursor": "string"
}
}Authorization failed. error.code is one of org_disabled,
ip_blocked, missing_scope, scope_disabled, user_disabled.
The request can't be processed (HTTP 422): validation_failed with one ErrorDetail per
problem, or a code documented on the operation.
Examples
curl https://your-org-domain/kong/core/api/v2/analytics/reports/users\
-H "Authorization: Bearer $HELM_API_KEY"\
-H "Content-Type: application/json"