iOS
Insights Overview
| № | Name | API Code | API tag | Required Module |
|---|---|---|---|---|
| 1 | Device | deviceInfo | features | Core Module |
| 2 | Velocity | velocity | features | Core Module |
| 3 | IP Info | ipInfo | features | Core Module |
| 4 | Apps Info | application | features | Core Module |
| 5 | Permissions | permissions | features | Core Module |
| 6 | Calendar Events | calendar | features | Calendar Events Module |
| 7 | Calendar Reminders | reminders | features | Calendar Reminders Module |
| 8 | Contacts | contacts | features | Contact Module |
| 9 | Images | images | features | Media Module |
| 10 | Video | video | features | Media Module |
| 11 | UI Interactions | uiInteractions | features | Behavioral Module |
| 12 | Typing | typing | features | Behavioral Module |
| 13 | Finger Gestures | fingerGestures | features | Behavioral Module |
| 14 | Touches | touches | features | Behavioral Module |
| 15 | Anomaly | anomaly | features | Behavioral Module |
Accessing API FieldsDiscover how to retrieve the API fields listed below through the Dataset Insights API.
NoteOur API typically returns non-null values as
string. For type spec on each field, see the Data Type column in the tables below.For detailed type specifications, check out the Type Specification
Device
Requires integration of Core Module
| Field | Data Type | Description |
|---|---|---|
deviceId | string | Unique device identifier. Max length: 100 |
deviceIsSimulator | boolean | Indicates whether the device is simulator or not |
deviceIsJailBroken | boolean | Indicates whether the device is JailBroken or not |
deviceBrand | string | Brand or manufacturer of the device. Max length: 100 |
deviceModel | string | Model of the device. Max length: 100 |
deviceOsVersion | string | Operating System version of the device. Max length: 100 |
deviceScreenSize | string | Screen size. Max length: 100 |
deviceMainStorageTotal | float | Total main storage in Megabytes |
deviceMainStorageFree | float | Free main storage in Megabytes |
deviceRamTotalSize | float | Total RAM size |
deviceLocationEnabled | boolean | Indicates if location is enabled |
deviceAllowsVOIP | boolean | Indicates if VOIP is allowed |
deviceAllowsVOIP2 | boolean | Indicates if VOIP is allowed on a second SIM card |
deviceCurrencyCode | string | Currency code. Max length: 100 |
deviceNetworkConnectionType | string | Active network connection type. Max length: 100 |
deviceLanguageCode | string | Code for the primary language. Max length: 100 |
deviceRegionCode | string | Code for the region or country based on locale settings of the device. Max length: 100 |
deviceTimeZoneId | string | Time zone setting of the device. Max length: 100 |
deviceLocaleDisplayLanguage | string | Language for displaying text and UI. Max length: 100 |
deviceBatteryIsCharging | boolean | Indicates whether the battery is charging or not |
deviceBatteryStatus | float | Indicates the current battery level in percentage (for ios only in case the battery monitoring is enabled) |
deviceCPUType | string | The name of CPU type. Max length: 100 |
deviceIsLying | boolean | The approximate device position: is lying flat or not |
deviceIsAngled | boolean | The approximate device position: is angled or not |
deviceIsStanding | boolean | The approximate device position: is standing or not |
Response body example (application/json)
{
"code":"deviceInfo",
"value":{
"deviceId":"B01634BF-C7E6-4BA1-9384-3D862E8DF050",
"deviceIsSimulator":"false",
"deviceIsJailBroken":"false",
"deviceBrand":"iPhone",
"deviceModel":"iPhone12,5",
"deviceOsVersion":"16.5",
"deviceScreenSize":"2688x1242",
"deviceMainStorageTotal":"60907.11328125",
"deviceMainStorageFree":"38180.22265625",
"deviceRamTotalSize":"3750.15625",
"deviceLocationEnabled":"true",
"deviceAllowsVOIP":"true",
"deviceCurrencyCode":"UAH",
"deviceNetworkOperatorName":"--",
"deviceNetworkConnectionType":"wifi",
"deviceSimCountryIso":"--",
"deviceLanguageCode":"en",
"deviceRegionCode":"UA",
"deviceTimeZoneId":"Europe/Kiev",
"deviceLocaleDisplayLanguage":"en_UA",
"deviceBatteryIsCharging":"true",
"deviceBatteryStatus":null,
"deviceCPUType":"ARM_64",
"deviceIsLying":"true",
"deviceIsAngled":"false",
"deviceIsStanding":"false"
},
"calculatedDate":"2023-08-14T08:29:27.853634Z"
}Velocity
Requires integration of Core Module
Note: If a dataset IP address cannot be classified as an end-user IP (for example VPN was used), the associated feature will be null.
| Field | Data Type | Description |
|---|---|---|
datasetsCountFromDeviceIdLastYear | integer | Total number of datasets uploaded from the same device during last year |
datasetsCountFromIpLastYear | integer | Total number of datasets uploaded from the same IP during last year |
datasetsCountFromDeviceIdAndIpLastYear | integer | Total number of datasets uploaded from the same device and IP during last year |
datasetsUniqueIpFromDeviceIdLastYear | integer | Unique IP addresses for given device during last year |
datasetsUniqueDeviceIdFromIpLastYear | integer | Unique devices for given IP address during last year |
Response body example (application/json)
{
"code":"velocity",
"value":{
"datasetsCountFromDeviceIdLastYear": "10",
"datasetsCountFromIpLastYear": "5",
"datasetsCountFromDeviceIdAndIpLastYear": "1",
"datasetsUniqueIpFromDeviceIdLastYear": "10",
"datasetsUniqueDeviceIdFromIpLastYear": "2"
},
"calculatedDate":"2023-08-14T07:29:46.3156019Z"
}IP Info
Requires integration of Core Module
NoteIf you're using a Proxy or Reverse Proxy configuration with the IP Info, ensure you submit the actual device IP address in your request
| Field | Data Type | Description |
|---|---|---|
ip | string | Unique identifier assigned to a device on a network. Max length: 100 |
hostname | string | Host name of an IP address. Max length: 100 |
city | string | Urban area where an IP address is located. Max length: 100 |
region | string | Geographical subdivision of a country where an IP address is situated. Max length: 100 |
country | string | Country where an IP address is registered. Max length: 100 |
loc | string | GPS location of area where an IP address is registered. Max length: 100 |
postal | string | Postal code associated with an IP address's location. Max length: 100 |
timezone | string | Standard time of an IP address's geographical area. Max length: 100 |
privacyVpn | boolean | Connection via VPN (IP address masking) |
privacyProxy | boolean | Connection via proxy (IP address masking) |
privacyTor | boolean | Connection via tor (IP address masking) |
privacyRelay | boolean | Connection via privat relay (IP address masking) |
privacyHosting | boolean | Connection via hosting provider (IP address masking) |
Response body example (application/json)
{
"code":"ipInfo",
"value":{
"ip":"62.216.42.130",
"hostname":null,
"city":"Kyiv",
"region":"Kyiv City",
"country":"UA",
"loc":"50.4547,30.5238",
"postal":"03027",
"timezone":"Europe/Kyiv",
"privacyVpn":"true",
"privacyProxy":"false",
"privacyTor":"false",
"privacyRelay":"false",
"privacyHosting":"false"
},
"calculatedDate":"2023-08-14T08:29:27.8536353Z"
}Apps Info
Requires integration of Core Module
| Field | Data Type | Description |
|---|---|---|
isInstalled | integer | Indicates whether an application of the particular URL Schema is installed |
urlSchemaName | string | Name of the URL Schema |
Response body example (application/json)
{
"code":"application",
"value":[
{
"isInstalled":"0",
"urlSchemaName":"th.co.amoney"
},
{
"isInstalled":"0",
"urlSchemaName":"com.ntl.cxm-mobile"
},
{
"isInstalled":"0",
"urlSchemaName":"mtls"
},
{
"isInstalled":"0",
"urlSchemaName":"kbank.kplus"
},
{
"isInstalled":"0",
"urlSchemaName":"scbeasy"
},
{
"isInstalled":"1",
"urlSchemaName":"ktbnext"
},
{
"isInstalled":"0",
"urlSchemaName":"tmbtouch"
},
{
"isInstalled":"0",
"urlSchemaName":"krungsri-kma"
},
{
"isInstalled":"0",
"urlSchemaName":"bblapptoappmbanking"
},
{
"isInstalled":"0",
"urlSchemaName":"chaiyomobile"
},
{
"isInstalled":"0",
"urlSchemaName":"line3rdp.com.ccc.game.pcr"
},
{
"isInstalled":"0",
"urlSchemaName":"com.gameindy.dummyth"
},
{
"isInstalled":"0",
"urlSchemaName":"bornrich"
},
{
"isInstalled":"0",
"urlSchemaName":"goldwing-global"
},
{
"isInstalled":"1",
"urlSchemaName":"gsbmymo"
},
{
"isInstalled":"0",
"urlSchemaName":"com.scbabacus.l2020"
},
{
"isInstalled":"0",
"urlSchemaName":"monix"
},
{
"isInstalled":"0",
"urlSchemaName":"ghb-allgen"
},
{
"isInstalled":"0",
"urlSchemaName":"srisawadapp"
},
{
"isInstalled":"0",
"urlSchemaName":"com.huoys.royalcasinoonline"
},
{
"isInstalled":"0",
"urlSchemaName":"fb507039520732712"
}
],
"calculatedDate":"2023-08-14T08:29:27.8536343Z"
}Permissions
Requires integration of Core Module
| Field | Data Type | Description |
|---|---|---|
NSAppleMusicUsageDescription | integer | Permission that allows reading metadata related to music and music albums |
NSContactsUsageDescription | integer | Permission that allows reading metadata related to Contacts and Contacts Group |
NSRemindersUsageDescription | integer | Permission that allows reading metadata related to Calendar reminders |
NSCalendarsUsageDescription | integer | Permission that allows reading metadata related to Calendar events |
NSPhotoLibraryUsageDescription | integer | Permission that allows reading metadata related to images and videos |
Response body example (application/json)
{
"code":"permissions",
"value":{
"NSAppleMusicUsageDescription":"1",
"NSContactsUsageDescription":"1",
"NSRemindersUsageDescription":"1",
"NSCalendarsUsageDescription":"1",
"NSPhotoLibraryUsageDescription":"1"
},
"calculatedDate":"2023-08-14T08:29:27.8536343Z"
}
Permission Value Description
| Value | Description |
|---|---|
null | The corresponding SDK module is not integrated |
0 | Permission is not granted |
1 | Permission is granted |
Calendar Events
Requires integration of Calendar Events Module
| Field | Data Type | Description |
|---|---|---|
CalendarEventsPastCount | integer | Total number of past events |
calendarEventsTotalCount | integer | Total number of calendar events |
calendarEventsAsOrganizerCount | integer | Total number of organized calendar events |
calendarEventsStatusConfirmedCount | integer | Total number of calendar events with confirmed status |
calendarEventsDuringWeekdayCount | integer | Total number of calendar events during the weekday |
calendarEventsMoreThan1AttendeeCount | integer | Total number of calendar events with more than 1 attendee |
calendarEventsDifferentTimeZonesCount | integer | Total number of calendar events in different time zone |
calendarEventsLast30DaysCount | integer | Total number of calendar events in the last 30 days |
calendarEventsNext30DaysCount | integer | Total number of events in the next 30 days |
calendarEventsLast30DaysRepetitiveCount | integer | Total number of repetitive calendar events in the last 30 days |
calendarEventsDuringWeekdayLast30DaysCount | integer | Total number of calendar events during the weekday in the last 30 days |
The values in the API response will benullif the permission is not granted or there is no data available
Response body example (application/json)
{
"code":"calendar",
"value":{
"calendarEventsPastCount":" 5993",
"calendarEventsTotalCount":"6461",
"calendarEventsAsOrganizerCount":"1",
"calendarEventsStatusConfirmedCount":"3985",
"calendarEventsDuringWeekdayCount":"6455",
"calendarEventsMoreThan1AttendeeCount":"1",
"calendarEventsDifferentTimeZonesCount":"1",
"calendarEventsLast30DaysCount":"0",
"calendarEventsNext30DaysCount":"418",
"calendarEventsLast30DaysRepetitiveCount":"0",
"calendarEventsDuringWeekdayLast30DaysCount":"0"
},
"calculatedDate":"2023-08-14T08:29:27.8536346Z"
}Calendar Reminders
Requires integration of Calendar Reminders Module
| Field | Data Type | Description |
|---|---|---|
remindersTotalCount | integer | Total number of reminders |
remindersDuringWeekdayCount | integer | Total number of reminders during the weekdays |
remindersMoreThan1AttendeeCount | integer | Total number of reminders with more than one attendee |
remindersDifferentTimeZonesCount | integer | Total number of reminders with different time zones |
remindersLast30DaysCount | integer | Total number of reminders in last 30 days |
remindersLast30DaysRepetitiveCount | integer | Total number of reminders for repetitive events in last 30 days |
remindersDuringWeekdayLast30DaysCount | integer | Total number of reminders during the weekday in last 30 days |
The values in the API response will benullif the permission is not granted or there is no data available
Response body example (application/json)
{
"code":"reminders",
"value":{
"remindersTotalCount":"7",
"remindersDuringWeekdayCount":"7",
"remindersMoreThan1AttendeeCount":"0",
"remindersDifferentTimeZonesCount":"0",
"remindersLast30DaysCount":"7",
"remindersLast30DaysRepetitiveCount":"0",
"remindersDuringWeekdayLast30DaysCount":"7"
},
"calculatedDate":"2023-08-14T08:29:27.8536354Z"
}Contacts
Requires integration of Contact Module
| Field | Data Type | Description |
|---|---|---|
contactsTotalCount | integer | Total number of contacts |
contactsWithoutNumberCount | integer | Total number of contacts without any phone number |
contactsMultipleNumbersCount | integer | Total number of contacts with multiple associated phone numbers |
contactsWithPictureCount | integer | Total number of contacts with associated picture |
phoneNumberTotalCount | integer | Total number of phone numbers |
contactsEmailCount | integer | Total number of contacts with email address |
contactsWorkCount | integer | Total number of contacts with company name |
The values in the API response will benullif the permission is not granted or there is no data available
Response body example (application/json)
{
"code":"contacts",
"value":{
"contactsTotalCount":"3",
"contactsWithoutNumberCount":"1",
"contactsMultipleNumbersCount":"1",
"contactsWithPictureCount":"0",
"phoneNumberTotalCount":"3",
"contactsEmailCount":"2",
"contactsWorkCount":"1"
},
"calculatedDate":"2023-08-14T08:29:27.8536345Z"
}Images
Requires integration of Media Module
| Field | Data Type | Description |
|---|---|---|
imagesCount | integer | Total number of images |
imagesCountWithLocation | integer | Total number of images with location property |
imageResolution | string | Most frequent image resolution. Max length: 100 |
imagesLast30DaysCount | integer | Total number of images created in the last 30 days |
imagesLast360DaysCount | integer | Total number of images created in the last 360 days |
imagesFirstMonth10Images | string | First month with more than 10 images. Max length: 100 |
The values in the API response will benullif the permission is not granted or there is no data available
Response body example (application/json)
{
"code":"images",
"value":{
"imagesCount":"73",
"imagesCountWithLocation":"6",
"imageResolution":"3024x4032",
"imagesLast30DaysCount":"0",
"imagesLast360DaysCount":"72",
"imagesFirstMonth10Images":"2021-03"
},
"calculatedDate":"2023-08-08T13:40:16.3508145Z"
}Video
Requires integration of Media Module
| Field | Data Type | Description |
|---|---|---|
videoCount | integer | Total number of video files |
videoLast30DaysCount | integer | Total number of video files created in the last 30 days |
The values in the API response will benullif the permission is not granted or there is no data available
Response body example (application/json)
{
"code":"video",
"value":{
"videoCount":"4",
"videoLast30DaysCount":"1"
},
"calculatedDate":"2023-08-14T08:29:27.8536352Z"
}UI Interactions
Requires integration of Behavioral Module
| Field | Data Type | Description | Is available on Flutter? |
|---|---|---|---|
inputDeleteActionsCount | integer | Qty of all delete actions | Yes |
inputInsertActionsCount | integer | Qty of all insert actions | Yes |
inputDeleteTextActionsCount | integer | Qty of delete text actions | No |
inputInsertTextActionsCount | integer | Qty of insert text actions | No |
textInputTextPrefilledCount | integer | Qty of tracked first interaction with the element, and text input before length > 0. Could be affected by the date selection from the calendar picker | Yes |
applicationAsBackgroundCount | integer | Qty of times when application was in the background | Yes |
applicationAsForegroundCount | integer | Qty of times when application was in the foreground | Yes |
textInputTextRemovedAllCount | integer | Qty of events when all text was removed | Yes |
clientInteractionsTimeSpentTotal | float | The actual time spent on the direct interaction with the fields, excluding gaps between screens, seconds | Yes |
clientInteractionsTrackedEventsCount | integer | Total count of tracked events during application form filling. Events = touch, pan, edge pan, swipe, text input | Yes |
Response body example (application/json)
{
"code": "uiInteractions",
"calculatedDate": "2025-06-02T08:57:27.21084",
"value": {
"inputDeleteActionsCount": "1",
"inputInsertActionsCount": "1",
"inputDeleteTextActionsCount": "0",
"inputInsertTextActionsCount": "1",
"textInputTextPrefilledCount": "1",
"applicationAsBackgroundCount": "4",
"applicationAsForegroundCount": "3",
"textInputTextRemovedAllCount": "1",
"clientInteractionsTimeSpentTotal": "7.48899984359741",
"clientInteractionsTrackedEventsCount": "15"
}
}Typing
Requires integration of Behavioral Module
| Field | Data Type | Description | Is available on Flutter? |
|---|---|---|---|
textInputSpeed | float | Only text input insert events are taken into the account, text inputs per second | Yes |
textInputLettersCount | integer | Qty of events when a letter was typed in the "usual" way during fields filling (1 letter per 1 event) | Yes |
textInputNumbersCount | integer | Qty of events when a number was typed in the "usual" way during fields filling (1 number per 1 event) | Yes |
inputStartWithLowerCount | integer | Qty of times when user started to type field with a lower letter | Yes |
inputStartWithUpperCount | integer | Qty of times when user started to type field with a upper letter | Yes |
inputStartWithNumberCount | integer | Qty of times when user started to type field with a number | Yes |
textInputCharsExceptNumAndLettersCount | integer | Qty of events when any other character (among symbols, punctuations, marks & separators) was typed in the field or when the number of pasted characters was greater than one per 1 event (incl. the date selection from the calendar picker) | Yes |
Response body example (application/json)
{
"code": "typing",
"calculatedDate": "2025-06-02T08:57:27.210839",
"value": {
"textInputSpeed": "10.5633803053381",
"textInputLettersCount": "8",
"textInputNumbersCount": "0",
"inputStartWithLowerCount": "1",
"inputStartWithUpperCount": "0",
"inputStartWithNumberCount": "0",
"textInputCharsExceptNumAndLettersCount": "1"
}
}Finger Gestures
Requires integration of Behavioral Module
| Field | Data Type | Description | Is available on Flutter? |
|---|---|---|---|
panPathLength | float | Distance between all points of pan events | Yes |
swipePathLength | float | Distance between all points of swipe events | Yes |
panTotalEventsCount | integer | Total count of text input insert events | Yes |
scaleTotalEventsCount | integer | Total count of scale events | No |
swipeTotalEventsCount | integer | Total count of swipe events (similar to fling in Android) | Yes |
touchTotalEventsCount | integer | Total count of touch events | Yes |
textInputTotalEventsCount | integer | Total count of text input insert events | Yes |
touchActionsSpeed | float | Measure of the performing of the touch actions, touches per second. Flutter only, for touchActionsSpeed on native iOS see Touches. | Yes |
Response body example (application/json)
{
"code": "fingerGestures",
"calculatedDate": "2025-06-02T08:57:27.210839",
"value": {
"panPathLength": null,
"swipePathLength": null,
"panTotalEventsCount": null,
"scaleTotalEventsCount": null,
"swipeTotalEventsCount": null,
"touchTotalEventsCount": "9",
"textInputTotalEventsCount": "9"
"touchActionsSpeed": "8.41908321031396",
}
}Touches
Requires integration of Behavioral Module
| Field | Data Type | Description | Is available on Flutter? |
|---|---|---|---|
touchActionsSpeed | float | Measure of the performing of the touch actions, touches per second | Yes |
panTotalNumberOfTouchesCount | integer | Qty of touches during pan events | No |
scaleTotalNumberOfTouchesCount | integer | Qty of touches during scale events | No |
Response body example (application/json)
{
"code": "touches",
"calculatedDate": "2025-06-02T08:57:27.210839",
"value": {
"touchActionsSpeed": "8.41908321031396",
"panTotalNumberOfTouchesCount": null,
"scaleTotalNumberOfTouchesCount": null
}
}Anomaly
Requires integration of Behavioral Module
| Field | Data Type | Description | Is available on Flutter? |
|---|---|---|---|
touchRageActionsCount | integer | Qty of times when user made touch more than 5 times per second | Yes |
textInputRageActionsCount | integer | Qty of times when user made text input more than 5 times per second | Yes |
Response body example (application/json)
{
"code": "anomaly",
"calculatedDate": "2025-06-02T08:57:27.210837",
"value": {
"touchRageActionsCount": "0",
"textInputRageActionsCount": "1"
}
}Type Specification
Type | Description | Example |
|---|---|---|
| A string is a sequence of characters. It can include letters, numbers, symbols, and spaces. |
|
| Boolean represents values |
|
| Float represents decimal numbers with fractional parts |
|
| Integer represents whole numbers without decimals |
|
| Date and time values expressed in UTC and have the following format
|
|
Updated 3 days ago
