Stream the rrweb recording and narration events used by the replay player

Returns the ordered player event rows for one task, test run, exploration, or Replay recording. The stream contains rrweb DOM events plus the thought, note, error, and system events shown as replay subtitles. It excludes injected diagnostic streams such as network-exchange and layout-geometry.

Rendering the rrweb stream

  1. Fetch pages in order. When next_cursor is non-null, make the same request again with its after_task_id and after_seq; stop when next_cursor is null.
  2. Reassemble rrweb-chunk rows before rendering. Each chunk payload is { chunk_id, index, total, data }. Group by chunk_id, order all total pieces by index, concatenate data, and JSON.parse the result. Treat the completed row as event_type: "rrweb". Keep the incomplete-chunk map across page requests because one event can span pages.
  3. Select rows whose event_type is rrweb, in their returned order, and pass their payload values to rrweb. The array must include rrweb Meta and FullSnapshot events before it can render:
import { Replayer } from 'rrweb'
import 'rrweb/dist/style.css'

const events = joinedRows.filter(row => row.event_type === 'rrweb').map(row => row.payload)
const replayer = new Replayer(events, { root: document.querySelector("#replay") })
replayer.play()

For a recording that is still running, retain the Replayer and call replayer.addEvent(row.payload) for new rrweb rows instead of rebuilding it. Sort by payload.timestamp only if events were accumulated from multiple live polls that may have arrived out of timestamp order.

Rendering narration

thought, note, error, and system rows are subtitles, not rrweb events. Use client_ts as the subtitle timestamp, falling back to Date.parse(created_at) when it is null. Their text is normally in payload.text or payload.message; note payloads with kind: "step" also carry the action and step index.

get/api/v1/projects/{project_id}/recording-events

Request

  • Base URL: https://qa.replay.io
  • URL: https://qa.replay.io/api/v1/projects/{project_id}/recording-events
  • Auth: HTTP bearer

Path parameters

project_idstring required

Query parameters

task_idstring

Exactly one source identifier is required.

test_run_idstring

Exactly one source identifier is required.

exploration_idstring

Exactly one source identifier is required.

recording_idstring

Exactly one source identifier is required.

after_task_idstring

Opaque task cursor returned by next_cursor.

after_seqinteger

Sequence cursor returned by next_cursor.

limitinteger

Response

A byte-bounded page containing events and next_cursor.

sourceobject required

The source identifier supplied in the request.

countinteger required

Changes

No recorded changes to this operation across all 1 revision of this API.