Get a RUM session's summary: the session page header, its page views and tabs, counts per event kind, acquisition context, attributes and the first events.
const url = 'https://api.siteqwality.com/rum/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/sessions/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0';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/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \ --header 'Authorization: Bearer <token>'events keeps the original timeline (detail events and page views, oldest first) up to 2,000
rows, with events_truncated when there are more; the session page pages through
/sessions/{session_id}/events. A session without a page view is returned too, with
view_count 0.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”RUM application identifier
Session identifier
Responses
Section titled “ Responses ”Session summary
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.
Detail events and page views (type: "view"), oldest first, at most 2,000 rows and
2.5 MB of JSON; page through /sessions/{session_id}/events for the rest.
object
Browser tabs, first seen first.
One browser tab of the session.
object
Page views, oldest first, at most 1,000 (views_truncated).
One page view, with its latest valid vitals.
object
Empty when unknown.
Error events on this page view, repeats included.
Stored rows per kind over the whole session, as /events returns them uncollapsed.
object
source, medium, campaign, content and term, when the first page view had them.
[width, height] in CSS pixels.
The session’s latest global attributes, without the reserved sq. keys.
object
The name passed to setUser, within the 30-day identity window.
The traits passed to setUser, within the 30-day identity window.
object
Other sessions of the same user (or anonymous visitor, without a user) that started up to 30 days before or after this one.
Example generated
{ "session": { "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 }, "events": [ { "event_id": "example", "session_id": "example", "view_id": "example", "timestamp": "example", "type": "example", "url": "example", "resource_type": "example", "resource_url": "example", "duration_ms": 1, "transfer_size": 1, "error_message": "example", "error_source": "example", "error_stack": "example", "error_fingerprint": "example", "action_type": "example", "action_target": "example", "frustration": "example", "user_id": "example", "user_email": "example" } ], "windows": [ { "window_id": "example", "first_seen": "example", "last_seen": "example" } ], "views": [ { "view_id": "example", "url": "example", "route": "example", "start": "example", "time_spent_ms": 1, "lcp_ms": 1, "inp_ms": 1, "cls": 1, "error_count": 1 } ], "views_truncated": true, "counts": { "action": 1, "network": 1, "resource": 1, "console": 1, "error": 1, "long_frame": 1, "custom": 1 }, "referrer_host": "example", "utm": "example", "channel": "example", "viewport": [ 1 ], "attributes": { "additionalProperty": "example" }, "user_name": "example", "traits": { "additionalProperty": "example" }, "other_session_count": 1, "events_truncated": true}Missing or invalid authentication
Unknown application or session
Internal server error
Query time limit exceeded; narrow the range or filters