Skip to content

Servers

https://api.rrweb.com
http://localhost:8787

Stream recording events

GET
/recordings/{recordingId}/events/ws

Stream recording event payloads over a WebSocket connection. This is the default method used in our Browser Client. See WebSocket event streaming for more details, or use the HTTP event collection route for a simpler method.

Note: Since browsers cannot send custom headers with WebSocket requests, the browser client automatically appends your API key as a query parameter (?token=your-api-key) to the WebSocket URL.

Please ignore reference to the Bearer HTTP Authentication header here until we can update this documentation to include support for interacting with websockets. The GET method is correct insofar as it refers to the initial upgrade part of the websocket connection negotiation.

Authorizations

Public API Key

Public API key for authentication.

Type
HTTP (bearer)
Example"Bearer public_key_rr_1Q8AX5B5218353Q1AQNF2129YH5VAH02"

Parameters

Path Parameters

recordingId*

The recording ID

Type
string
Required
Example"000e8400-e00b-00d0-a716-446655440000"
Format
"uuid"

Query Parameters

debug

Enable debug mode

Type
string
Example"true"
contentType

Payload content type. Defaults to application/x-ndjson when omitted.

Type
string
Valid values
"application/x-ndjson""application/ndjson""application/json"
Example"application/x-ndjson"
contentEncoding

Optional compression applied to the payload frames. Defaults to identity.

Type
string
Valid values
"gzip""br""zstd"
Example"gzip"

Responses

WebSocket upgraded successfully.

Playground

Server
Authorization
Variables
Key
Value

Samples


Get recording events

GET
/recordings/{recordingId}/events

Retrieve the event stream for a single recording.

Authorizations

Private API Key

Bearer token for authentication. Use your private API key as the token.

Type
HTTP (bearer)
Example"Bearer secret_key_rr_1Q6AX5B5218353Q1AQNF2129YH5VAH02"
or
TenantId|KeyId|Expires|Signature
TenantId

Your tenant (organisation) identifier. Included automatically in presigned URLs generated by the listing endpoints.

Type
API Key (query: tenantId)
+
KeyId

The name/label of the signing key configured in your rrweb Cloud account. e.g. "key-2024-12"

Type
API Key (query: keyId)
+
Expires

Expiration timestamp (UNIX seconds)

Type
API Key (query: expires)
+
Signature

SHA256 over the constructed string "GET /recordings/{recordingId} {tenantId} {expires}". Please get in contact if you need to calculate this manually.

Type
API Key (query: signature)

Parameters

Path Parameters

recordingId*

The recording ID

Type
string
Required
Example"000e8400-e00b-00d0-a716-446655440000"
Format
"uuid"

Responses

Successfully retrieved recording events

application/json
JSON
[
  
{
  
  
"type": 4,
  
  
"timestamp": 1234567890,
  
  
"data": {
  
  
  
"additionalProperties": "string"
  
  
},
  
  
"originalTimestamp": 0
  
}
]

Playground

Server
Authorization
Variables
Key
Value

Samples


Create recording events

POST
/recordings/{recordingId}/events

Append recording events in batch mode via POST. This is available for clients or environments which don't support WebSocket event streaming.

Authorizations

Public API Key

Public API key for authentication.

Type
HTTP (bearer)
Example"Bearer public_key_rr_1Q8AX5B5218353Q1AQNF2129YH5VAH02"

Parameters

Path Parameters

recordingId*

The recording ID

Type
string
Required
Example"000e8400-e00b-00d0-a716-446655440000"
Format
"uuid"

Query Parameters

debug

Enable debug mode

Type
string
Example"true"

Request Body

JSON
{
  
"type": 1,
  
"timestamp": 1714857600000,
  
"data": {
  
}
}

Responses

Successfully accepted recording events

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


Get recording metadata

GET
/recordings/{recordingId}/metadata

Retrieve only the searchable metadata key-value pairs for a single recording.

Authorizations

Private API Key

Bearer token for authentication. Use your private API key as the token.

Type
HTTP (bearer)
Example"Bearer secret_key_rr_1Q6AX5B5218353Q1AQNF2129YH5VAH02"
or
TenantId|KeyId|Expires|Signature
TenantId

Your tenant (organisation) identifier. Included automatically in presigned URLs generated by the listing endpoints.

Type
API Key (query: tenantId)
+
KeyId

The name/label of the signing key configured in your rrweb Cloud account. e.g. "key-2024-12"

Type
API Key (query: keyId)
+
Expires

Expiration timestamp (UNIX seconds)

Type
API Key (query: expires)
+
Signature

SHA256 over the constructed string "GET /recordings/{recordingId} {tenantId} {expires}". Please get in contact if you need to calculate this manually.

Type
API Key (query: signature)

Parameters

Path Parameters

recordingId*

The recording ID

Type
string
Required
Example"000e8400-e00b-00d0-a716-446655440000"
Format
"uuid"

Responses

Successfully retrieved recording metadata

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground

Server
Authorization
Variables
Key
Value

Samples


Capture metadata

POST
/recordings/{recordingId}/metadata

Attach searchable metadata to a recording so you can query recordings by customer, device, rollout state, or any other field. See Recording metadata for implementation guidance.

Authorizations

Public API Key

Public API key for authentication.

Type
HTTP (bearer)
Example"Bearer public_key_rr_1Q8AX5B5218353Q1AQNF2129YH5VAH02"

Parameters

Path Parameters

recordingId*

The recording ID

Type
string
Required
Example"000e8400-e00b-00d0-a716-446655440000"
Format
"uuid"

Request Body

application/json
JSON
{
  
"userId": "user-123",
  
"orgId": "org-9",
  
"plan": "pro",
  
"environment": "production"
}

Responses

Successfully captured recording metadata

Playground

Server
Authorization
Variables
Key
Value
Body

Samples


Get recording

GET
/recordings/{recordingId}

Retrieve a recording descriptor, including metadata and related links. Bearer-token requests can set includeEvents=true to embed the replayable event stream in the response. Presigned detail URLs remain descriptor-only; use the signed events link for presigned event access.

Authorizations

Private API Key

Bearer token for authentication. Use your private API key as the token.

Type
HTTP (bearer)
Example"Bearer secret_key_rr_1Q6AX5B5218353Q1AQNF2129YH5VAH02"

Parameters

Path Parameters

recordingId*

The recording ID

Type
string
Required
Example"000e8400-e00b-00d0-a716-446655440000"
Format
"uuid"

Query Parameters

includeSignedUrls

Include presigned recording links in the detail response.

Type
boolean
Exampletrue
includeEvents

Include the recording event stream in the detail response.

Type
boolean
Exampletrue

Responses

Successfully retrieved recording details

application/json
JSON
{
  
"recordingId": "550e8400-e29b-41d4-a716-446655440000",
  
"links": {
  
  
"self": "/recordings/550e8400-e29b-41d4-a716-446655440000",
  
  
"events": "/recordings/550e8400-e29b-41d4-a716-446655440000/events",
  
  
"player": "/recordings/550e8400-e29b-41d4-a716-446655440000/player",
  
  
"screenshot": "/recordings/550e8400-e29b-41d4-a716-446655440000/screenshot",
  
  
"eventsSigned": "/recordings/550e8400-e29b-41d4-a716-446655440000/events?expires=1735689600&keyId=key-2024-12&signature=a1b2c3d4e5f6...",
  
  
"playerSigned": "/recordings/550e8400-e29b-41d4-a716-446655440000/player.html?expires=1735689600&keyId=key-2024-12&signature=a1b2c3d4e5f6...",
  
  
"screenshotPngSigned": "/recordings/550e8400-e29b-41d4-a716-446655440000/screenshot.png?expires=1735689600&keyId=key-2024-12&signature=a1b2c3d4e5f6..."
  
},
  
"metadata": {
  
  
"additionalProperties": "string"
  
}
}

Playground

Server
Authorization
Variables
Key
Value

Samples


Compose replay

GET
/replays

Get events corresponding to one or more recordingIds from rrweb Cloud in a replayable stream.

By default intermingled events from multiple recordings are grouped according to page view (FullSnapshot), and recordings are split up so that each page view plays in full before moving on to the next page view, which may come from a different recording depending on which one occurred first.

Recording timestamps are renumbered from zero to support the new ordering, and the original absolute timestamp is transferred into the originalTimestamp key.

Authorizations

Private API Key

Bearer token for authentication. Use your private API key as the token.

Type
HTTP (bearer)
Example"Bearer secret_key_rr_1Q6AX5B5218353Q1AQNF2129YH5VAH02"

Parameters

Query Parameters

metadata

A recording metadata parameter (or a set of parameters) by which you want to compose a single replay. Use metadata[key]=value syntax.

Type
object
Example{ "sessionId": "session-123" }

Responses

Successfully retrieved recording events

application/json
JSON
[
  
{
  
  
"type": 4,
  
  
"timestamp": 1234567890,
  
  
"data": {
  
  
  
"additionalProperties": "string"
  
  
},
  
  
"originalTimestamp": 0
  
}
]

Playground

Server
Authorization
Variables
Key
Value

Samples


Get replay

GET
/replays/{groupingProp}/{replayValue}

Retrieve merged metadata and replayable events for recordings sharing a metadata key and value.

Authorizations

Private API Key

Bearer token for authentication. Use your private API key as the token.

Type
HTTP (bearer)
Example"Bearer secret_key_rr_1Q6AX5B5218353Q1AQNF2129YH5VAH02"
or
TenantId|KeyId|Expires|Signature
TenantId

Your tenant (organisation) identifier. Included automatically in presigned URLs generated by the listing endpoints.

Type
API Key (query: tenantId)
+
KeyId

The name/label of the signing key configured in your rrweb Cloud account. e.g. "key-2024-12"

Type
API Key (query: keyId)
+
Expires

Expiration timestamp (UNIX seconds)

Type
API Key (query: expires)
+
Signature

SHA256 over the constructed string "GET /recordings/{recordingId} {tenantId} {expires}". Please get in contact if you need to calculate this manually.

Type
API Key (query: signature)

Parameters

Path Parameters

groupingProp*

The metadata key used to group recordings into replays

Type
string
Required
Example"sessionId"
Min Length
1
Max Length
100
replayValue*

The metadata value identifying this replay group

Type
string
Required
Example"sess-123"
Min Length
1
Max Length
500

Responses

Successfully retrieved replay metadata and events

application/json
JSON
{
  
"metadata": {
  
  
"additionalProperties": "string"
  
},
  
"events": [
  
  
{
  
  
  
"type": 4,
  
  
  
"timestamp": 1234567890,
  
  
  
"data": {
  
  
  
  
"additionalProperties": "string"
  
  
  
},
  
  
  
"originalTimestamp": 0
  
  
}
  
]
}

Playground

Server
Authorization
Variables
Key
Value

Samples


Get replay events

GET
/replays/{groupingProp}/{replayValue}/events

Retrieve only the replayable event stream for a replay group.

Authorizations

Private API Key

Bearer token for authentication. Use your private API key as the token.

Type
HTTP (bearer)
Example"Bearer secret_key_rr_1Q6AX5B5218353Q1AQNF2129YH5VAH02"
or
TenantId|KeyId|Expires|Signature
TenantId

Your tenant (organisation) identifier. Included automatically in presigned URLs generated by the listing endpoints.

Type
API Key (query: tenantId)
+
KeyId

The name/label of the signing key configured in your rrweb Cloud account. e.g. "key-2024-12"

Type
API Key (query: keyId)
+
Expires

Expiration timestamp (UNIX seconds)

Type
API Key (query: expires)
+
Signature

SHA256 over the constructed string "GET /recordings/{recordingId} {tenantId} {expires}". Please get in contact if you need to calculate this manually.

Type
API Key (query: signature)

Parameters

Path Parameters

groupingProp*

The metadata key used to group recordings into replays

Type
string
Required
Example"sessionId"
Min Length
1
Max Length
100
replayValue*

The metadata value identifying this replay group

Type
string
Required
Example"sess-123"
Min Length
1
Max Length
500

Responses

Successfully retrieved replay events

application/json
JSON
[
  
{
  
  
"type": 4,
  
  
"timestamp": 1234567890,
  
  
"data": {
  
  
  
"additionalProperties": "string"
  
  
},
  
  
"originalTimestamp": 0
  
}
]

Playground

Server
Authorization
Variables
Key
Value

Samples


Get replay metadata

GET
/replays/{groupingProp}/{replayValue}/metadata

Retrieve only the merged metadata for a replay group.

Authorizations

Private API Key

Bearer token for authentication. Use your private API key as the token.

Type
HTTP (bearer)
Example"Bearer secret_key_rr_1Q6AX5B5218353Q1AQNF2129YH5VAH02"
or
TenantId|KeyId|Expires|Signature
TenantId

Your tenant (organisation) identifier. Included automatically in presigned URLs generated by the listing endpoints.

Type
API Key (query: tenantId)
+
KeyId

The name/label of the signing key configured in your rrweb Cloud account. e.g. "key-2024-12"

Type
API Key (query: keyId)
+
Expires

Expiration timestamp (UNIX seconds)

Type
API Key (query: expires)
+
Signature

SHA256 over the constructed string "GET /recordings/{recordingId} {tenantId} {expires}". Please get in contact if you need to calculate this manually.

Type
API Key (query: signature)

Parameters

Path Parameters

groupingProp*

The metadata key used to group recordings into replays

Type
string
Required
Example"sessionId"
Min Length
1
Max Length
100
replayValue*

The metadata value identifying this replay group

Type
string
Required
Example"sess-123"
Min Length
1
Max Length
500

Responses

Successfully retrieved replay metadata

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground

Server
Authorization
Variables
Key
Value

Samples


List replays

GET
/replays/{groupingProp}

List replay groups for a metadata key. Each replay group represents one metadata value and one or more recordings sharing that value.

Authorizations

Private API Key

Bearer token for authentication. Use your private API key as the token.

Type
HTTP (bearer)
Example"Bearer secret_key_rr_1Q6AX5B5218353Q1AQNF2129YH5VAH02"

Parameters

Path Parameters

groupingProp*

The metadata key used to group recordings into replays

Type
string
Required
Example"sessionId"
Min Length
1
Max Length
100

Query Parameters

limit

Maximum number of replays to return (1-100, default: 50)

Type
string
Example"50"
offset

Number of replays to skip (default: 0)

Type
string
Example"0"
includeSignedUrls

Include presigned replay URLs in the response.

Type
boolean
Exampletrue

Responses

Successfully listed replays grouped by metadata value

application/json
JSON
{
  
"groupingProp": "userId",
  
"replays": [
  
  
{
  
  
  
"replayValue": "user-123",
  
  
  
"recordingCount": 5,
  
  
  
"latestTimestamp": 1234567890000,
  
  
  
"links": {
  
  
  
  
"replay": "/replays/userId/user-123",
  
  
  
  
"replaySigned": "/replays/userId/user-123?tenantId=tenant-abc&expires=1735689600&keyId=key-2024-12&signature=a1b2c3..."
  
  
  
}
  
  
}
  
]
}

Playground

Server
Authorization
Variables
Key
Value

Samples


List recordings

GET
/recordings

Query recordings by metadata filters or by most recent. Multiple filters are combined with AND logic.

Authorizations

Private API Key

Bearer token for authentication. Use your private API key as the token.

Type
HTTP (bearer)
Example"Bearer secret_key_rr_1Q6AX5B5218353Q1AQNF2129YH5VAH02"

Parameters

Query Parameters

metadata

Filter recordings by metadata key-value pairs. Use metadata[key]=value syntax (URL-encode keys and values with encodeURIComponent). eg. metadata[userId]=user-123&metadata[plan]=pro

Type
object
Example{ "userId": "user-123", "plan": "pro" }
limit

Maximum number of results to return (1-100, default: 50)

Type
string
Example"50"
offset

Number of results to skip (default: 0)

Type
string
Example"0"
includeSignedUrls

Include presigned event URLs in the response.

Type
boolean
Exampletrue

Responses

Successfully retrieved recordings

application/json
JSON
{
  
"recordings": [
  
  
{
  
  
  
"recordingId": "550e8400-e29b-41d4-a716-446655440000",
  
  
  
"timestamp": 1234567890,
  
  
  
"links": {
  
  
  
  
"self": "/recordings/550e8400-e29b-41d4-a716-446655440000",
  
  
  
  
"events": "/recordings/550e8400-e29b-41d4-a716-446655440000/events",
  
  
  
  
"eventsSigned": "/recordings/550e8400-e29b-41d4-a716-446655440000/events?expires=1735689600&keyId=key-2024-12&signature=a1b2c3d4e5f6..."
  
  
  
},
  
  
  
"metadata": {
  
  
  
  
"additionalProperties": "string"
  
  
  
}
  
  
}
  
]
}

Playground

Server
Authorization
Variables
Key
Value

Samples


Get recording statistics

GET
/statistics

Get statistics about recordings including total count, count for this month, and storage usage.

Authorizations

Private API Key

Bearer token for authentication. Use your private API key as the token.

Type
HTTP (bearer)
Example"Bearer secret_key_rr_1Q6AX5B5218353Q1AQNF2129YH5VAH02"

Responses

Successfully retrieved recording statistics

application/json
JSON
{
  
"totalRecordings": 1234,
  
"recordingsThisMonth": 56,
  
"totalStorageBytes": 1073741824
}

Playground

Server
Authorization

Samples


Get recording player

GET
/recordings/{recordingId}/player

Serves the recording player HTML page. Request /recordings/{recordingId}/player.html or send Accept: text/html for the HTML representation. File extensions take precedence over the Accept header when both are present.

Authorizations

Private API Key

Bearer token for authentication. Use your private API key as the token.

Type
HTTP (bearer)
Example"Bearer secret_key_rr_1Q6AX5B5218353Q1AQNF2129YH5VAH02"
or
TenantId|KeyId|Expires|Signature
TenantId

Your tenant (organisation) identifier. Included automatically in presigned URLs generated by the listing endpoints.

Type
API Key (query: tenantId)
+
KeyId

The name/label of the signing key configured in your rrweb Cloud account. e.g. "key-2024-12"

Type
API Key (query: keyId)
+
Expires

Expiration timestamp (UNIX seconds)

Type
API Key (query: expires)
+
Signature

SHA256 over the constructed string "GET /recordings/{recordingId} {tenantId} {expires}". Please get in contact if you need to calculate this manually.

Type
API Key (query: signature)

Parameters

Path Parameters

recordingId*

The recording ID

Type
string
Required
Example"000e8400-e00b-00d0-a716-446655440000"
Format
"uuid"

Query Parameters

controls

Show the control bar (default: true).

Type
string
Example"true"
autoplay

Autoplay on load (default: false).

Type
string
Example"false"
mode

Player display mode. standard renders the full player page, minimal strips surrounding chrome for embeds, and capture uses the full-viewport layout optimized for screenshots.

Type
string
Example"standard"
speed

Playback speed from 0.25 to 4 (default: 1). Values outside this range return 400.

Type
string
Example"1"
time

Playback position selector. Supports offset, percent, and epoch formats: offset:5000, offset:-5000, percent:50, or epoch:1702900000000. Defaults to offset:0.

Type
string
Example"offset:0"
eventsUrl

Optional same-origin or relative events URL override. Used internally with presigned event URLs for player and screenshot rendering.

Type
string
Example"https://api.example.com/recordings/000e8400-e00b-00d0-a716-446655440000/events?tenantId=tenant-123&expires=1700000000&keyId=key-2025-12&signature=abcdef"

Responses

Recording player HTML page

text/html
JSON
"<!doctype html>"

Playground

Server
Authorization
Variables
Key
Value

Samples


Get recording screenshot

GET
/recordings/{recordingId}/screenshot

Generates a screenshot of a recording at a specific playback position. Supports extension-based negotiation via /recordings/{recordingId}/screenshot.png, .jpeg, or .webp; file extensions take precedence over the Accept header. This endpoint exposes only time, width, height, quality, and the negotiated output format from the underlying browser-rendering service.

Authorizations

Private API Key

Bearer token for authentication. Use your private API key as the token.

Type
HTTP (bearer)
Example"Bearer secret_key_rr_1Q6AX5B5218353Q1AQNF2129YH5VAH02"
or
TenantId|KeyId|Expires|Signature
TenantId

Your tenant (organisation) identifier. Included automatically in presigned URLs generated by the listing endpoints.

Type
API Key (query: tenantId)
+
KeyId

The name/label of the signing key configured in your rrweb Cloud account. e.g. "key-2024-12"

Type
API Key (query: keyId)
+
Expires

Expiration timestamp (UNIX seconds)

Type
API Key (query: expires)
+
Signature

SHA256 over the constructed string "GET /recordings/{recordingId} {tenantId} {expires}". Please get in contact if you need to calculate this manually.

Type
API Key (query: signature)

Parameters

Path Parameters

recordingId*

The recording ID

Type
string
Required
Example"000e8400-e00b-00d0-a716-446655440000"
Format
"uuid"

Query Parameters

time

Playback position selector. Supports offset, percent, and epoch formats: offset:5000, offset:-5000, percent:50, or epoch:1702900000000. Defaults to offset:0.

Type
string
Example"offset:0"
width

Width in pixels from 1 to 4096. Defaults to 1280 when omitted. If height is provided and width is omitted, width is derived from the recording viewport ratio when metadata is available. Values outside this range return 400.

Type
string
Example"1280"
height

Height in pixels from 1 to 4096. Defaults to 720 when omitted and recording viewport metadata is unavailable. If width is provided or both dimensions are omitted, height is derived from the recording viewport ratio when metadata is available. Values outside this range return 400.

Type
string
Example"720"
quality

Quality from 1 to 100 for JPEG and WebP output (default: 80). Ignored for PNG.

Type
string
Example"80"

Responses

Screenshot image

Playground

Server
Authorization
Variables
Key
Value

Samples


Powered by VitePress OpenAPI