Please note that the "Session API" will be deprecated by the end of 2020. You can switch to the new "UXCam Data Access API" to access your data. For details follow the link here.
Basics
To get direct access to your session data via API calls you need to create a public API key in your app settings.
Using your app ID together with your API key you can now retrieve a list of your sessions by making a HTTP GET request to the following url:
https://dashboardapi.uxcam.com/public/session
apikey |
UXCam API Key (available from UXCam dashboard) |
string |
apikey=0a0c0faa-f41e-4de1-844e-958c8332b787 |
appid |
To show the sessions details belonging to the appid |
string |
appid=5d4a550f3596b9016670fc04 |
For instance the following HTTP request will return the first 20 sessions of app with appid 5d4a550f3596b9016670fc04 and the private API key 0a0c0faa-f41e-4de1-844e-958c8332b787. Using :
Filters
The returned sessions can be filtered by the following data fields. The data type determines the types of filter operators that are allowed, and these filters are described in a table below
Parameter |
Description |
Data type |
Example |
page |
The page index to retrieve. Each page contains up to 100 results |
unsigned int |
page=1 |
sessiondate |
Date on which the session was uploaded |
date 'yyyy-mm-dd' |
(all sessions between "2019/12/12" and "2019-1-23") |
countrycode |
2 letter country code of session country based on device IP address. |
string |
Only sessions from Nepal |
country |
Country name based on device IP address |
string |
Only sessions from Nepal |
appversion |
App version on the device when session was run |
string |
Only sessions with app version 1.0 |
video |
Is there a video for the session? |
bool (true/false) |
Only sessions with videos |
uxcamuserid |
UXCam User ID of user |
string |
sessions from users other than “5cf7a0572297ba3cfed1fff3” |
platform |
iOS or Android device |
platform_dt |
Only sessions from Android |
sessionhashofuser |
count of session for the particular user |
unsigned int |
Show only first sessions of users |
osversion |
Device operating system version |
string |
Only sessions with OS version “9” |
crashed |
Show only sessions that are crashed / not crashed |
bool (true/false) |
Filter for sessions that are crashed |
eventname |
List of events that occurred during the session |
list |
Only sessions where event “ragetap” did not occurr |
screenname |
List of screens visited during the session |
list |
Sessions where any of the screens “ActivityUserDetails” or “activitycrash” was visited |
sdkversion |
UXCam SDK version on device |
string |
Only sessions from sdkversion 3.0.5 |
sessionlength |
Total session length in seconds |
float |
Only sessions of longer than 18 s |
totalgesture |
Total gesture count |
Unsigned int |
Only sessions having totalgesture greater than or equal to 9 |
screencount |
Total number of screens visited |
Unsigned int |
Only sessions having screencount greater than or equal to 2 |
useridentity |
UXCam unique user identifier |
string |
Only sessions where useridentity is not "Steve Smith" |
alias |
Alias |
string |
Only sessions where random alias is "Siddhartha Pandey" |
username |
User Name |
string |
Only sessions where set user name is not "priya" |
Filter operators
Depending on the data type of the data field, the following operators are defined and can be used in the query:
Data type lhs |
Operator symbol |
Data type rhs |
Name |
operator name |
Example |
integer |
(e.g. screen number) |
||||
= |
float |
equal to |
is |
totalgesture={"operator":"is"","value":5}
|
|
!= |
float |
not equal to |
isnot |
totalgesture={"operator":"isnot","value":5}
|
|
> |
float |
greater than |
gt |
totalgesture={"operator":"gt","value":5}
|
|
>= |
float |
greater than or equal to |
gteq |
totalgesture={"operator":"gteq","value":5}
|
|
< |
float |
less than |
lt |
totalgesture={"operator":"lt","value":5}
|
|
<= |
float |
Less than or equal to |
lteq |
totalgesture={"operator":"lteq","value":5}
|
|
∈ |
list (float) |
is in list |
in |
totalgesture={"operator":"in","value":[5,6,7]}
|
|
∉ |
list (float) |
is not in list |
notin |
totalgesture={"operator":"notin","value":[5,6,7]}
|
|
float |
(e.g. session duration) |
||||
> |
float |
greater than |
gt |
sessionlength={"operator":'gt',"value": 30}
|
|
< |
float |
less than |
lt |
sessionlength={"operator":'lt',"value":30}
|
|
string |
(e.g. appversion) |
||||
= |
string |
equals |
is |
appversion={"operator":"is","value":"10.2.3"}
|
|
≠ |
string |
not equal to |
isnot |
appversion={"operator":"isnot","value":"10.2.3"}
|
|
∈ |
list (string) |
is in list |
in |
appversion={"operator":"in","value":["10.2.3","10.2.4"]}
|
|
∉ |
list (string) |
is not in list |
notin |
appversion={"operator":"notin","value":["10.2.3","10.2.4"]}
|
|
contains |
string |
contains substring |
contains |
appversion={"operator":"contains","value":"10"}
|
|
contains not |
string |
does not contain substring |
containsnot |
appversion={"operator":"containsnot","value":"10"}
|
|
list (string) |
(e.g. eventlist, uniquescreen) |
||||
has any |
list (string) |
has any of the following |
hasany |
eventname={"operator":"hasany","value":["purchaseEvent","abortCartEvent"]}
|
|
not has any |
list (string) |
has none of the following |
nothasany |
eventname={"operator":"nothasany","value":["purchaseEvent","abortCartEvent"]}
|
|
has all |
list (string) |
has all of the following |
hasall |
eventname={"operator":"hasall","value":["purchaseEvent","abortCartEvent"]}
|
|
not has all |
list (string) |
has not all of the following |
nothasall |
eventname={"operator":"nothasall","value":["purchaseEvent","abortCartEvent"] }
|
|
date (day format) |
(e.g. uploadedon) |
||||
= |
date string |
was on |
on |
sessiondate={"operator":"on","value":"2019-04-21"}
|
|
!= |
date string |
was not on |
noton |
sessiondate={"operator":"noton","value":"2019-04-21"}
|
|
> |
date string |
was after |
after |
sessiondate={"operator":"after","value":"2019-04-21"}
|
|
>= |
date string |
was after or on |
from |
sessiondate={"operator":"from","value":"2019-04-21"}
|
|
< |
date string |
was before |
before |
sessiondate={"operator":"before","value":"2019-04-21"}
|
|
<= |
date string |
was before or on |
to |
sessiondate={"operator":"to","value":"2019-04-21"}
|
|
∈ |
list(date string) |
was any of the following |
in |
sessiondate={"operator":"in","value":["2019-04-14","2019-04-21","2019-04-28"]}
|
|
∉ |
list(date string) |
was none of the following |
notin |
sessiondate={"operator":"notin","value":["2019-04-14","2019-04-21","2019-04-28"]}
|
|
between |
(date string, date string) |
was between |
between |
sessiondate={"operator":"between","value":["2019-04-14","2019-04-21"]}
|
|
platform_dt |
(e.g. platform) |
|
|
|
|
is Android |
|
is Android |
isandroid |
platform={"operator":"isandroid","value":""}
|
|
is iOS |
|
is iOs |
isios |
platform={"operator":"isios","value":""}
|
Usage examples
For an exemplary app with:
appid = 5d4a550f3596b9016670fc04
API key = 0a0c0faa-f41e-4de1-844e-958c8332b787
Basic request
Contains only appid, API key and page number
Filter by date
Show first 1400-1500 sessions (page 15) that occured in May 2019
Filter by Events
Show first 100 sessions (page 1) that had at least one event named ‘purchase’
https://dashboardapi.uxcam.com/public/session?apikey=0a0c0faa-f41e-4de1-844e-958c8332b787&appid=5cdba062fca891024e4b7a76&eventname={‘operator’:'hasall’,‘value’:[‘purchase’]}&page=15
Filter by session length
Show first 100 sessions (page 1) that were longer than one minute:
Return format
{
'success': 'true',
'data': [
{
"id": "3902r2hhoif290",
"session": {
"uploaded_server_time": "2019/01/31, 12:01:34",
"verified_server_time": "2019/01/31, 11:14:59",
"recorded_device_time": "2019/01/31, 14:03:44",
"weekday_device": "Wed",
"offline_recorded": 0,
"is_crashed": 1,
"has_video": 1,
"duration_sec": 134.3,
"screen_count": 2,
"gesture_count": 53,
"unresponsive_gesture_count": 12,
"rage_gesture_count": 36
},
"location": {
"country_code": "US",
"city": "New York City",
"latitude": 315.231,
"longitude": 231.311
},
"user": {
"name": "steve@gmail.com",
"session_number": 13,
"random_alias": "Martin Meyers",
"uxcam_id": "3149ry02ryh2"
},
"device": {
"id": "rh3r829ry8923yri",
"producer": "Samsung",
"model": "S6",
"type": "phone",
"class": "Android Large",
"height": 432,
"width": 300,
"dpi": 1024,
"language": "French",
"app_version": "3.1.3",
"os_version": "Android 5.3",
"sdk_version": "3.1.1",
"carrier_name": "Vodafone",
"total_ram_kb": 368137,
"free_ram_kb": 480,
"total_storage_in_kb": 3029072,
"country": "France",
"time_zone": "+4",
"is_rooted": 0,
"notification_enabled": 1
},
"flow": [
{
"activity_name": "ActivityUserDetails",
"start_time": 0,
"end_time": 24.867,
"total_time": 24.867,
"gestures": [
{
"type": "Single Tap",
"time": 0.748,
"rage": 1,
"view": {
"name": "StartButton",
"id": "start_button_301",
"class": "Button",
"responsive": 1
}
},
{
"type": "Double Tap",
"time": 12.748,
"rage": 1,
"view": {
"name": "StartButton",
"id": "start_button_301",
"class": "Button",
"responsive": 0
}
}
],
"events": [
{
"time": 12.314,
"type": "user_defined",
"name": "purchase",
"params": {
"value": 13,
"object": "car"
}
},
{
"time": 12.314,
"type": "uxcam",
"name": "rage_tap",
"params": {
"screen_name": "ActivityUserDetails"
}
},
{
"time": 31.314,
"type": "user_defined",
"name": "cancel_cart",
"params": {
"reason": "unclear"
}
}
]
}
],
"properties": {
"referrer": "Facebook",
"MixpanelID": "342h98r2h"
}
},
{
"id": "3902r2h0oif290",
"session": {
"uploaded_server_time": "2019/01/31, 12:01:34",
"verified_server_time": "2019/01/31, 11:14:59",
"recorded_device_time": "2019/01/31, 14:03:44",
"weekday_device": "Wed",
"offline_recorded": 0,
"is_crashed": 1,
"has_video": 1,
"duration_sec": 134.3,
"gesture_count": 53,
"screen_count": 53,
"unresponsive_gesture_count": 36,
"rage_gesture_count": 36
},
"location": {
"country_code": "US",
"city": "New York City",
"latitude": 315.231,
"longitude": 231.311
},
"user": {
"name": "steve@gmail.com",
"session_number": 13,
"random_alias": "Martin Meyers",
"uxcam_id": "3149ry02ryh2"
},
"device": {
"id": "rh3r829ry8923yri",
"producer": "Samsung",
"model": "S6",
"type": "phone",
"class": "Android Large",
"height": 432,
"width": 300,
"language": "French",
"app_version": "3.1.3",
"os_version": "Android 5.3",
"sdk_version": "3.1.1",
"carrier_name": "Vodafone",
"total_ram_kb": 368137,
"free_ram_kb": 368137,
"total_storage_in_kb": 3029072,
"country": "France",
"time_zone": "+4",
"dpi": 1024,
"is_rooted": 0,
"notification_enabled": 1
},
"flow": [
{
"activity_name": "ActivityUserDetails",
"start_time": 0,
"end_time": 24.867,
"total_time": 24.867,
"gestures": [
{
"type": "Single Tap",
"time": 0.748,
"rage": 1,
"view": {
"name": "StartButton",
"id": "start_button_301",
"class": "Button",
"responsive": 1
}
},
{
"type": "Double Tap",
"time": 12.748,
"rage": 1,
"view": {
"name": "StartButton",
"id": "start_button_301",
"class": "Button",
"responsive": 0
}
}
],
"events": [
{
"time": 12.314,
"type": "user_defined",
"name": "purchase",
"params": {
"value": 13,
"object": "car"
}
},
{
"time": 12.314,
"type": "uxcam",
"name": "rage_tap",
"params": {
"screen_name": "ActivityUserDetails"
}
},
{
"time": 31.314,
"type": "user_defined",
"name": "cancel_cart",
"params": {
"reason": "unclear"
}
}
]
}
],
"properties": {
"referrer": "Google",
"MixpanelID": "392u0ry8y"
}
},
… (further session jsons)
]
}