Get RUM export URL. Returns an S3 pre-signed URL for the specified RUM export file. The URL expires in 10 minutes. RUM export files are done on a daily basis and contain the data from 00:00:00 to 23:59:59 UTC. Files become available after 5am UTC. If you try to access the file between midnight and 5am you'll get a URL that returns an error.

This API endpoint is not enabled by default. In order to use this endpoint, you must check the Enable RUM export API checkbox in your SpeedCurve team's RUM settings.

File Format and Schema

The RUM export file is in CSV syntax. Instead of comma, the delimiter is the caret character (^). The fields and schema are:

Page info

Field

Type

Description

luxid

BIGINT

Unique ID for this page view.

sessionid

BIGINT

Unique ID for this session.

epoch

INT

Epoch time the information was recorded.

account_id

INT

Your account/team ID.

pagelabel

VARCHAR (255)

Label for the page. If no label was specified using LUX.label the document title is used.

url

VARCHAR (500)

URL of the page.

useragent

VARCHAR (500)

Full User Agent HTTP request header.

pbrowser

VARCHAR (64)

Pretty browser name.

flags

INT

Bitmask of flags (1 = SPA page view, 2 = Nav Timing not available, 4 = User Timing not available)

Geo Info

Field

Type

continent

VARCHAR (2)

country

VARCHAR (2)

city

VARCHAR (64)

Page Stats

Field

Type

Description

extScripts

SMALLINT

Number of external scripts.

blockingExtScripts

SMALLINT

Number of blocking external scripts.

stylesheets

SMALLINT

Number of stylesheets.

blockingStylesheets

SMALLINT

Number of blocking stylesheets.

fonts

SMALLINT

Number of font files.

imagesAtf

SMALLINT

Number of images in the viewport.

avgDomDepth

SMALLINT

Average DOM depth.

numDomElements

INT

Number of DOM elements.

viewport_w

INT

Viewport width.

viewport_h

INT

Viewport height.

document_w

INT

Document width.

document_h

INT

Document height.

Navigation timing metrics

Field

Type

navigationStart

INT

redirectStart

INT

redirectEnd

INT

fetchStart

INT

domainLookupStart

INT

domainLookupEnd

INT

connectStart

INT

secureConnectionStart

INT

connectEnd

INT

requestStart

INT

responseStart

INT

responseEnd

INT

domLoading

INT

domInteractive

INT

domContentLoadedEventStart

INT

domContentLoadedEventEnd

INT

domComplete

INT

loadEventStart

INT

loadEventEnd

INT

Other timing metrics

Field

Type

Description

startRender

INT

Start render time

FID

INT

First Input Delay

cpu

VARCHAR (128)

Long Tasks timing information. Format detail.

Interaction (IX) metrics

Field

Type

Description

ixtype

VARCHAR (32)

scroll, click, or key

ixtime

INT

When the interaction occurred.

trackId

VARCHAR (32)

DOM element data-sctrack attribute or ID (only valid for click and key)

ixX

INT

The x position of the trackid DOM element.

ixY

INT

The y position of the trackid DOM element.

User timing metrics and customer data

Field

Type

Description

utname

VARCHAR (128)

Name of the mark or measure.

uttime

INT

Time of the mark (relative to navigationStart) or duration of the measure.

customerdata

VARCHAR (512)

Data specified using LUX.addData() Format detail.

Additional data

Field

Type

Description

devicetype

VARCHAR (32)

"mobile", "tablet", or "desktop".

imagesTotal

SMALLINT

Total number of IMG tags in the document.

htmlSize

INT

Transfer size (bytes) of the first HTML document.

connType

VARCHAR (32)

Connection type.

fcp

INT

First Contentful Paint.

inlinescriptsize

INT

Uncompressed inline script size (bytes).

inlinestylesize

INT

Uncompressed inline style size (bytes).

devicememory

INT

Estimated device memory (GB).

lcp

INT

Largest Contentful Paint.

elementtiming

VARCHAR (255)

Element timing data. Format detail.

dcsl

FLOAT (4)

The document cumulative layout score up until the time when RUM beacon was sent.

CPU format

The cpu field is a delimited string with this syntax:
type|total,n|count,d|median,x|max,[i|first_cpu_idle,]start|duration[,start|duration] [|type|total,n|count,d|median,x|max,start|duration[,start|duration]]

Currently the only type supported is JavaScript ("s") as this is the only data available from the Long Tasks API at this time. This example shows there were three long tasks starting at 306 ms, 448 ms, and 534 ms that totalled to 806 ms:
s|806,n|3,d|448,x|534,i|1134,306|128,448|78,534|600

Customerdata format

The customerdata field is a delimited string containing name-value tuples for each variable set using LUX.addData(). The name-value tuple is delimited by "|". The tuples are comma-delimited. An example value from speedcurve.com is:
,loggedin|yes,team|1,tvmode|0,

Elementtiming format

The elementtiming field is a delimited string containing name-value pairs for each element measured using the Element Timing API. The name-value pair is delimited by "|". The pairs are comma-delimited. An example value is:
nav-links|1409,nav-title|1409,lead-image|2255

This indicates that the nav-links element was displayed 1409 ms after navigation start, nav-title after 1409 ms, and lead-image after 2255 ms.

Data Structure

There are three types of rows in the export file: Main, User Timing, and Interaction Metrics. For a given page view, there can be multiple rows:

  • There is always one-and-only-one Main row.
  • If there are "n" User Timing marks and measures in the page, then there are "n-1" separate User Timing rows. (The first User Timing mark or measure is included in the Main row.)
  • If the user interacts with the page, there is typically a separate Interaction Metrics row. (It's possible for the interaction metrics to be in the Main row if the user interacts before the window load event.)
    In the following sections we describe each type of row.

Main rows

Main rows contain the information for the overall page:

  • Page info
  • Geo info
  • Page stats
  • Navigation Timing metrics
  • Other timing metrics

If there were any User Timing marks or measures, the Main row contains one of these metrics. Additionally, if the user interacted with the page before the window load event, the Main row contains the Interaction Metrics.

Here's an example of a Main row from speedcurve.com:
153384288740141560^153384288740141560^1533842889^1^.blog-post^https://www.speedcurve.com/blog/performance-improvement-checklist/^Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36^Chrome 68^^NA^US^95051^santa clara^10^0^4^3^^3^8^399^1032^1268^4056^1268^1533842886766^^^4^19^63^63^134^216^216^379^390^394^1088^1089^1095^2011^2011^2028^938^2^s|388,640|201,869|60,1049|57,1176|70^^^^^^speedcurvecss applied^613^,team|1,loggedin|yes,tvmode|0,

Here's the same Main row broken out by individual value:

luxid: 153384288740141560
sessionid: 153384288740141560
epoch: 1533842889
account_id: 1
pagelabel: .blog-post
url: https://www.speedcurve.com/blog/performance-improvement-checklist/
useragent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
pbrowser: Chrome 68
flags:
continent: NA
country: US
postal: 95051
city: santa clara
extScripts: 10
blockingExtScripts: 0
stylesheets: 4
blockingstylesheets: 3
fonts:
imagesAtf: 3
avgDomDepth: 8
numDomElements: 399
viewport_w: 1268
viewport_h: 1032
document_w: 1268
document_h: 4056
navigationStart: 1533842886766
redirectStart:
redirectEnd:
fetchStart: 4
domainLookupStart: 19
domainLookupEnd: 63
connectStart: 63
secureConnectionStart: 134
connectEnd: 216
requestStart: 216
responseStart: 379
responseEnd: 390
domLoading: 394
domInteractive: 1088
domContentLoadedEventStart: 1089
domContentLoadedEventEnd: 1095
domComplete: 2011
loadEventStart: 2011
loadEventEnd: 2028
startRender: 938
FID: 2
cpu: s|388,640|201,869|60,1049|57,1176|70
ixtype:
ixtime:
trackId:
ixX:
ixY:
utname: speedcurvecss applied
uttime: 613
customerdata: ,team|1,loggedin|yes,tvmode|0,

User timing rows

User Timing rows contain the User Timing metrics plus some other fields to aid in querying:

  • Page info
  • Geo info
  • User Timing metrics and Customer Data

Here's an example of a User Timing row from speedcurve.com:

153384288740141560^153384288740141560^1533842889^1^.blog-post^https://www.speedcurve.com/blog/performance-improvement-checklist/^^Chrome 68^^NA^US^95051^santa clara^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^speedcurvejs eval^23^,team|1,loggedin|yes,tvmode|0,

Here's the same User Timing row broken out by individual value. Note how most of the fields are empty.

luxid: 153384288740141560
sessionid: 153384288740141560
epoch: 1533842889
account_id: 1
pagelabel: .blog-post
url: https://www.speedcurve.com/blog/performance-improvement-checklist/
useragent:
pbrowser: Chrome 68
flags:
continent: NA
country: US
postal: 95051
city: santa clara
extScripts:
blockingExtScripts:
stylesheets:
blockingstylesheets:
fonts:
imagesAtf:
avgDomDepth:
numDomElements:
viewport_w:
viewport_h:
document_w:
document_h:
navigationStart:
redirectStart:
redirectEnd:
fetchStart:
domainLookupStart:
domainLookupEnd:
connectStart:
secureConnectionStart:
connectEnd:
requestStart:
responseStart:
responseEnd:
domLoading:
domInteractive:
domContentLoadedEventStart:
domContentLoadedEventEnd:
domComplete:
loadEventStart:
loadEventEnd:
startRender:
FID:
cpu:
ixtype:
ixtime:
trackId:
ixX:
ixY:
utname: speedcurvejs eval
uttime: 23
customerdata: ,team|1,loggedin|yes,tvmode|0,

Interaction metrics rows

Interaction Metrics rows contain the user interaction information plus some other fields to aid in querying:

  • Page info
  • Geo info
  • Interaction (IX) metrics
  • Customer Data

Here's an example of an Interaction Metrics row from speedcurve.com:

153384288740141560^153384288740141560^1533842889^1^.blog-post^https://www.speedcurve.com/blog/performance-improvement-checklist/^^Chrome 68^^NA^US^95051^santa clara^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^click^10582^nav^154^27^^^,team|1,loggedin|yes,tvmode|0,

Here's the same Interaction Metrics row broken out by individual value. Note how most of the fields are empty.

luxid: 153384288740141560
sessionid: 153384288740141560
epoch: 1533842889
account_id: 1
pagelabel: .blog-post
url: https://www.speedcurve.com/blog/performance-improvement-checklist/
useragent:
pbrowser: Chrome 68
flags:
continent: NA
country: US
postal: 95051
city: santa clara
extScripts:
blockingExtScripts:
stylesheets:
blockingstylesheets:
fonts:
imagesAtf:
avgDomDepth:
numDomElements:
viewport_w:
viewport_h:
document_w:
document_h:
navigationStart:
redirectStart:
redirectEnd:
fetchStart:
domainLookupStart:
domainLookupEnd:
connectStart:
secureConnectionStart:
connectEnd:
requestStart:
responseStart:
responseEnd:
domLoading:
domInteractive:
domContentLoadedEventStart:
domContentLoadedEventEnd:
domComplete:
loadEventStart:
loadEventEnd:
startRender:
FID:
cpu:
ixtype: click
ixtime: 10582
trackId: nav
ixX: 154
ixY: 27
utname:
uttime:
customerdata: ,team|1,loggedin|yes,tvmode|0,

Query tips

Here are some tips for querying the data.

  • Use "luxid" to get all the rows for a single page view.
  • Use "sessionid" to get all the rows for a single session.
  • To find all Main rows, query for numdomelements > 0. This is because some browsers still do not support Navigation Timing, but all pages have a non-zero number of DOM elements, and the number of DOM elements is only stored in Main rows.
  • The easiest way to find all User Timing rows is to query for uttime > 0. Note that this will return one Main row that has the first User Timing metric.
  • The easiest way to find all Interaction Metrics rows is to query for ixtime > 0. Note that this may return a Main row is the user interacted with the page before the window load event.
  • To find a specific customer data variable, prepend it with a comma. For example:
    customerdata like ',loggedin%'
Language
Authentication
Basic
base64
:
Click Try It! to start a request and see the response here!