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)
]
}