List user sessions for a RUM application.
const url = 'https://api.siteqwality.com/rum/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/sessions';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.siteqwality.com/rum/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/sessions \ --header 'Authorization: Bearer <token>'A listed session has a measure in [from, to] and a page view in its extended range. Each session is summarized
over its whole lifetime, so duration_ms, first_seen and last_seen are never clipped by
the range. total and total_with_replay count every session matching the query exactly.
Page with next_cursor; the cursor keeps the first page’s range, so new sessions never
shift later pages. Filters use the RUM filter grammar in f; the older single-filter
parameters still work and combine with them. Filtering on console_message needs body access; without it,
error_message and search skip errors captured from the console.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”RUM application identifier
Query Parameters
Section titled “Query Parameters ”ISO 8601. Sessions active in [from, to] are listed. Default: 30 days before to.
ISO 8601. Default: now.
Case-insensitive match on any user id or email the session carried, a session id prefix, any visited URL or any error message in the session.
Same as f=browser:eq:<value>.
Same as f=os:eq:<value>.
ISO 3166-1 alpha-2 code. Same as f=country:eq:<value>.
Same as f=device:eq:<value>.
Case-insensitive substring of any URL the session visited. Same as f=url:contains:<value>.
Only sessions with an error event in this group. Same as f=error_issue:eq:<value>.
true keeps sessions with at least one error event.
true keeps sessions with a replay that can still be played.
true keeps sessions carrying at least one frustration signal (rage, dead or error
click). false and absent mean no filter.
started (default), duration, active_time, errors, frustration (the score),
friction (rage, dead and error clicks) or pages.
desc (default) or asc.
Page size, default 50, at most 100.
Rows to skip, at most 10,000. Prefer cursor; the two cannot be combined.
Filters in the RUM filter grammar, <field>:<op>[:<value>], repeatable, at most 20. All
must hold. See the RUM reference for the fields and operators.
next_cursor of the previous page. The query must otherwise be the same; from and to
may be left out, and then come from the cursor.
Opaque analytics cohort from a returned session_query. Keeps exact view membership.
Responses
Section titled “ Responses ”Sessions
object
object
Earliest measure, event or replay segment of the session.
Latest measure, event or replay segment of the session.
Error events in the session.
Frustration signals the SDK detects on click actions and stores in
rum_events.frustration. Always present, never null: a session with
none reports 0.
serde(default) is deserialization-side robustness only. The
serializer always emits these, so schema(required = true) keeps the
generated OpenAPI honest: without it utoipa infers optional from the
serde default and the published contract disagrees with the real one.
Total user actions in the session, summed from rum_measures.
Reads 0 for sessions recorded by SDKs that hardcode action_count: 0 on
their measures. Not rendered in the dashboard for that reason.
last_seen minus first_seen, over the session’s whole lifetime.
URL of the session’s first page view.
Activity in the last 2 minutes.
Time the user was active (input, visible tab); 0 when the SDK reported none.
Requests with status 0 or 400 and above.
0 to 100: round(100 * (1 - exp(-(3 * rage + 2 * error clicks + dead + 2 * errors + failed requests) / 10))). The inputs are the counts on this row.
Route of the first page view; empty when unknown.
URL of the last page view.
Why there is no replay: expired (past the replay retention), or the SDK’s reason:
not_sampled, consent, gpc, opted_out, privacy_url, too_large,
request_budget. Absent when there is a replay or no reason is known.
Stored replay size, when has_replay.
Browser tabs the session used; 0 when the SDK sent no window.
The caller watched this session’s replay in the last 90 days.
Every session matching the query, exact.
Sessions in total with a replay that can still be played.
Pass as cursor for the next page; absent on the last page.
Example generated
{ "sessions": [ { "session_id": "example", "user_id": "example", "user_email": "example", "browser": "example", "os": "example", "country": "example", "device_type": "example", "first_seen": "example", "last_seen": "example", "view_count": 1, "error_count": 1, "rage_click_count": 1, "dead_click_count": 1, "error_click_count": 1, "action_count": 1, "has_replay": true, "duration_ms": 1, "entry_url": "example", "live": true, "active_ms": 1, "failed_request_count": 1, "console_error_count": 1, "frustration_score": 1, "anonymous_id": "example", "entry_route": "example", "exit_url": "example", "region": "example", "release": "example", "env": "example", "service": "example", "sdk_version": "example", "replay_reason": "example", "replay_bytes": 1, "window_count": 1, "viewed_by_me": true } ], "total": 1, "total_with_replay": 1, "next_cursor": "example"}Invalid query parameter or cursor
Missing or invalid authentication
A filter on console messages without body access
Application not found
Internal server error
Query time limit exceeded; narrow the range or filters