Events & ExportGrouped exception issues

Grouped exception issues

The error-tracking issue list. $exception events (uncaught JS errors and unhandled promise rejections captured by the SDK) are grouped into issues by a stable server-side fingerprint: issue_id = v1: + md5(exception_type + normalized message, with digits stripped so per-instance values collapse). The v1: prefix versions the grouping algorithm — a future change ships as v2:, a clean migration rather than a silent remint of your saved state. The fingerprint deliberately excludes the stack trace, so minified frame names churning across deploys can never mint a new id — persist your own resolve/ignore state against issue_id and it stays put.

Each row carries occurrences / sessions / users, first_seen / last_seen, a culprit (top in-app stack frame, for the list subtitle), and a volume_series bucketed to the window (hourly for short ranges, else daily) for the sparkline.

Time window: date_from/date_to, or hours_back for a window ending now. Segment scoping: pass segment_id to count only errors from that segment's members.

curl -X GET "https://mythic-analytics.gulp.workers.dev/client/v1/data/exceptions/issues?location_id=example_string&date_from=2024-12-25&date_to=2024-12-25&hours_back=42&search=example_string&sort_by=last_seen&order=desc&segment_id=123e4567-e89b-12d3-a456-426614174000&exclude_segment_id=123e4567-e89b-12d3-a456-426614174000&limit=50&offset=0" \
  -H "Content-Type: application/json" \
  -H "X-Location-Id: example_string" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
{
  "success": true,
  "data": [
    {
      "issue_id": "v1:1d908dc6145bd8dc7982aff9366b5042",
      "exception_type": "TypeError",
      "message": "Cannot read properties of null (reading 'addEventListener')",
      "culprit": "handler in app.js",
      "first_seen": "2024-12-25T10:00:00Z",
      "last_seen": "2024-12-25T10:00:00Z",
      "occurrences": 366,
      "sessions": 204,
      "users": 183,
      "volume_series": [
        {
          "bucket": "2024-12-25T10:00:00Z",
          "count": 10
        }
      ]
    }
  ],
  "rows": 42
}
GET
/exceptions/issues
GET
Base URLstring

Target server for requests. Edit to use your own host.

Bearer Token
Bearer Tokenstring
Required

Agency key (ak_) or location secret key (sk_) as a bearer token. Format: Bearer ak_... or Bearer sk_.... Scoped keys (mcp_) are accepted too and need the read scope of the family the route belongs to (people, events, sessions, replays, exceptions, heatmaps or bigquery_export). See Using an mcp_ key over HTTP.

Agency key (ak_) or location secret key (sk_) as a bearer token. Format: Bearer ak_... or Bearer sk_.... Scoped keys (mcp_) are accepted too and need the read scope of the family the route belongs to (people, events, sessions, replays, exceptions, heatmaps or bigquery_export). See Using an mcp_ key over HTTP.
query
location_idstring

Alternative to the X-Location-Id header for agency (ak_) keys. Ignored for secret (sk_) keys.

query
date_fromstring

Start date (YYYY-MM-DD).

Format: date
query
date_tostring

End date (YYYY-MM-DD).

Format: date
query
hours_backinteger

Alternative to date_from — window of the last N hours ending now.

query
sort_bystring

Sort column. Default last_seen.

Options: last_seen, occurrences, sessions, users
query
orderstring
Options: asc, desc
query
segment_idstring

Scope results to members of a saved segment (created via the Segments API). Two independent time filters apply: the segment decides WHICH PEOPLE qualify (a live definition, evaluated at query time — not stored membership), and date_from/date_to decides WHICH OF THEIR ROWS are returned. A person who qualifies today contributes all their sessions/events inside the date window — including ones unrelated to how they qualified; there is no "only rows from while they were a member". For first/last attribution scopes membership runs through the identity graph (a row counts when its distinct_id maps to a matching person); a segment with attribution: "session" instead matches visitors directly against the sessions store ("ever had a session that arrived via X"), with no identity-graph dependency. Composable with all other filters. Unknown or foreign id → 404 segment_not_found.

Format: uuid
query
exclude_segment_idstring

Scope results OUT — exclude rows from members of a saved segment (the inverse of segment_id, evaluated the same live way). Fully composable with segment_id: scope to one segment and exclude another simultaneously. The primary use is stripping your own QA/test traffic — which is often anonymous, so a rule-based segment (email domain, known ids) catches it with no SDK changes on the client's site. Unknown or foreign id → 404 exclude_segment_not_found.

Format: uuid
query
limitinteger

Max rows. Default 50, min 1, max 200.

Min: 1 • Max: 200
query
offsetinteger

Row offset for pagination.

header
X-Location-Idstring

Location to scope the request to. Required for agency (ak_) keys on the event routes. Ignored for secret (sk_) keys, which resolve their own location, and not used by /export.

Request Preview
Response

Response will appear here after sending the request

Authentication

header
Authorizationstring
Required

Bearer token. Agency key (ak_) or location secret key (sk_) as a bearer token. Format: Bearer ak_... or Bearer sk_.... Scoped keys (mcp_) are accepted too and need the read scope of the family the route belongs to (people, events, sessions, replays, exceptions, heatmaps or bigquery_export). See Using an mcp_ key over HTTP.

Query Parameters

location_idstring

Alternative to the X-Location-Id header for agency (ak_) keys. Ignored for secret (sk_) keys.

date_fromstring

Start date (YYYY-MM-DD).

date_tostring

End date (YYYY-MM-DD).

hours_backinteger

Alternative to date_from — window of the last N hours ending now.

sort_bystring

Sort column. Default last_seen.

Allowed values:last_seenoccurrencessessionsusers
orderstring
Allowed values:ascdesc
segment_idstring

Scope results to members of a saved segment (created via the Segments API). Two independent time filters apply: the segment decides WHICH PEOPLE qualify (a live definition, evaluated at query time — not stored membership), and date_from/date_to decides WHICH OF THEIR ROWS are returned. A person who qualifies today contributes all their sessions/events inside the date window — including ones unrelated to how they qualified; there is no "only rows from while they were a member". For first/last attribution scopes membership runs through the identity graph (a row counts when its distinct_id maps to a matching person); a segment with attribution: "session" instead matches visitors directly against the sessions store ("ever had a session that arrived via X"), with no identity-graph dependency. Composable with all other filters. Unknown or foreign id → 404 segment_not_found.

exclude_segment_idstring

Scope results OUT — exclude rows from members of a saved segment (the inverse of segment_id, evaluated the same live way). Fully composable with segment_id: scope to one segment and exclude another simultaneously. The primary use is stripping your own QA/test traffic — which is often anonymous, so a rule-based segment (email domain, known ids) catches it with no SDK changes on the client's site. Unknown or foreign id → 404 exclude_segment_not_found.

limitinteger

Max rows. Default 50, min 1, max 200.

offsetinteger

Row offset for pagination.

Headers

X-Location-Idstring

Location to scope the request to. Required for agency (ak_) keys on the event routes. Ignored for secret (sk_) keys, which resolve their own location, and not used by /export.

Responses

successboolean
dataarray
rowsinteger

Number of rows returned.