Analytics

List user analytics

GET/analytics/reports/users

Lists 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

  • limitinteger#

    Page size (1–100). Defaults to 25; values are clamped to the range.

    Default: 25
  • cursorstring#

    Opaque pagination cursor taken from a prior response's meta.next_cursor.

  • fieldsstring#

    Comma-separated top-level fields to return. id is always returned.

  • sortstring#

    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.

  • filter[q]string#

    Users whose name contains this text, ignoring case.

  • filter[type]string#

    Only users of this kind: User (an investor), Internal User, Entrepreneur or Advisor. Takes [in] and [not_in] with a comma-separated list.

    One of: User, Internal User, Entrepreneur, Advisor
  • filter[status]string#

    Only users with this status: Active, Suspended or Pending, matched whatever the stored capitalisation. Takes [in] and [not_in] with a comma-separated list.

    One of: Active, Suspended, Pending
  • filter[invite_accepted]boolean#

    true gives only users who accepted their invitation; false gives the rest.

  • filter[created_at]string (date-time)#

    Only users the analytics store first saw in a range, written filter[created_at][gte]=2026-10-01. Takes gt, gte, lt and lte.

  • filter[last_login_at]string (date-time)#

    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.

  • filter[last_active_at]string (date-time)#

    Only users who last did anything within a range, written filter[last_active_at][gte]=2026-11-06T14:30:00Z for the last hour. Takes gt, gte, lt and lte. A user who did nothing never matches.

  • filter[invite_accepted_at]string (date-time)#

    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

200

One page of user rows.

UserReportRow[]
{
  "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"
  }
}
401

Authentication failed. error.code is one of invalid_token, expired, revoked.

Error
403

Authorization failed. error.code is one of org_disabled, ip_blocked, missing_scope, scope_disabled, user_disabled.

Error
422

The request can't be processed (HTTP 422): validation_failed with one ErrorDetail per problem, or a code documented on the operation.

Error
429

Rate limit exceeded (error.code = rate_limited).

Error

Examples

curl https://your-org-domain/kong/core/api/v2/analytics/reports/users\
  -H "Authorization: Bearer $HELM_API_KEY"\
  -H "Content-Type: application/json"