Skip to content

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.

GET
/rum/{app_id}/sessions/{session_id}
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.

app_id
required
string format: uuid

RUM application identifier

session_id
required
string format: uuid

Session identifier

Session summary

Media type application/json
object
session
required
object
session_id
required
string
user_id
string | null
user_email
string | null
browser
required
string
os
required
string
country
required
string
device_type
required
string
first_seen
required

Earliest measure, event or replay segment of the session.

string
last_seen
required

Latest measure, event or replay segment of the session.

string
view_count
required
integer format: int64
error_count
required

Error events in the session.

integer format: int64
rage_click_count
required

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.

integer format: int64
dead_click_count
required
integer format: int64
error_click_count
required
integer format: int64
action_count
required

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.

integer format: int64
has_replay
required
boolean
duration_ms
required

last_seen minus first_seen, over the session’s whole lifetime.

integer format: int64
entry_url
required

URL of the session’s first page view.

string
live
required

Activity in the last 2 minutes.

boolean
active_ms
required

Time the user was active (input, visible tab); 0 when the SDK reported none.

integer format: int64
failed_request_count
required

Requests with status 0 or 400 and above.

integer format: int64
console_error_count
required
integer format: int64
frustration_score
required

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.

integer format: int32
anonymous_id
string | null
entry_route
required

Route of the first page view; empty when unknown.

string
exit_url

URL of the last page view.

string | null
region
string | null
release
string | null
env
string | null
service
string | null
sdk_version
string | null
replay_reason

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.

string | null
replay_bytes

Stored replay size, when has_replay.

integer | null format: int64
window_count
required

Browser tabs the session used; 0 when the SDK sent no window.

integer format: int64
viewed_by_me
required

The caller watched this session’s replay in the last 90 days.

boolean
events
required

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.

Array<object>
object
event_id
required
string
session_id
required
string
view_id
required
string
timestamp
required
string
type
required
string
url
required
string
resource_type
string | null
resource_url
string | null
duration_ms
number | null format: double
transfer_size
integer | null format: int64
error_message
string | null
error_source
string | null
error_stack
string | null
error_fingerprint
string | null
action_type
string | null
action_target
string | null
frustration
string | null
user_id
string | null
user_email
string | null
windows
required

Browser tabs, first seen first.

Array<object>

One browser tab of the session.

object
window_id
required
string
first_seen
required
string
last_seen
required
string
views
required

Page views, oldest first, at most 1,000 (views_truncated).

Array<object>

One page view, with its latest valid vitals.

object
view_id
required
string
url
required
string
route
required

Empty when unknown.

string
start
required
string
time_spent_ms
integer | null format: int64
lcp_ms
number | null format: double
inp_ms
number | null format: double
cls
number | null format: double
error_count
required

Error events on this page view, repeats included.

integer format: int64
views_truncated
required
boolean
counts
required

Stored rows per kind over the whole session, as /events returns them uncollapsed.

object
action
required
integer format: int64
network
required
integer format: int64
resource
required
integer format: int64
console
required
integer format: int64
error
required
integer format: int64
long_frame
required
integer format: int64
custom
required
integer format: int64
referrer_host
string | null
utm

source, medium, campaign, content and term, when the first page view had them.

object | null
channel
string | null
viewport

[width, height] in CSS pixels.

array | null
attributes
required

The session’s latest global attributes, without the reserved sq. keys.

object
key
additional properties
string
user_name

The name passed to setUser, within the 30-day identity window.

string | null
traits
required

The traits passed to setUser, within the 30-day identity window.

object
key
additional properties
string
other_session_count
required

Other sessions of the same user (or anonymous visitor, without a user) that started up to 30 days before or after this one.

integer format: int64
events_truncated
required
boolean
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