API interface description
Interface method
Base URL
- China: https://cn.apitd.net/device/v3
- America: https://us.apitd.net/device/v3
- Singapore: https://sg.apitd.net/device/v3
- Germany: https://de.apitd.net/device/v3
- Indonesia: https://id.apitd.net/device/v3
- Pakistan: https://pk.apitd.net/device/v3
- Thailand: https://th.apitd.net/device/v3
- HongKong China: https://hk.apitd.net/device/v3
API
| URL | Request method | Content-Type | Output format | Character set |
|---|---|---|---|---|
| api-base-url?partner_code=xxx&partner_key=xxx | POST | application/json | JSON | UTF-8 |
Authentication
| Field | Type | Meaning | Required fields | Remarks |
|---|---|---|---|---|
| partner_code | String | Partner identify | Yes | Provided by TD |
| partner_key | String | Partner secret key | Yes | Provided by TD |
Request
| Field | Type | Meaning | Required fields | Remarks |
|---|---|---|---|---|
| black_box | String | Vouchers for access to device information | Yes | Obtain from SDK |
| behavior | String | The Behavior data payload returned by the collect method of the Terminal TDBehavior SDK. | Not necessary | Obtain through SDK |
Example Request
{
"black_box": "aGPH1658920283672ropYaFxT7",
"behavior": "O-vbT-U9ZE2EhrqwgdnwicS0ckarzkkXH4mutX_WrYYujof29benGjFu29hzCxziQjnYGYHmia7QcKNwOfn8Pk57JhMJj4ehl58fFZvyM2VIdm9uVRRYj_A7fiWSbdZPwyVDFlcm1APji3lnb_DTApq9I5c6n3HqRsGLkx_rG_0IXjBRUR3izPjLr-kz7jDqGyoXmrvRfvPIS0TwdjWYa677OHoUr_-2RtAX5ljkknSfMxZQ36rzYN_1RH1ZDyu7akDSg2Pg9AxjYWOaMsxVu6vXWCPwGlbgHyu8h06PO87uoQ3-iYAYr15zcZY-mSsbPi-X8cxH4FlN2b0BoqfoFjWCnCFOR5nRmsEKyNfGsQH-ph9YPUsJVZPNdZZwow_5tWqENMO82yMIc-G2PxZTQXkwQA_9xGtuvsmy6loxYNB_a2qJa3HMHGkoxb7vb1flIaYgCTG2zPRnUWCF7ujBMT6TJq-V0DOtSzmNEBbHfQ7vC4lWGs51shpynfgnJ6bW8FGlrq5veqpFgnGKkJNdONz-8x-TvOs6n17KHDXLVUuXppNdfkeWUY3eRTtrjd_MxYcKN_eFCKn0HezOYURQ9WyP8szoDA-zE3OKj_cUWAwvIKANuV8CHWvWhB6T7PO9y1HlIYJynNqGjwI4jdjIQ6A6HeFqK2wXXNrCbxyCHfz3EeaBDVeWxFcbBnDggd7W"
}
Response
| Field | Type | Meaning | Output situation | Remarks |
|---|---|---|---|---|
| code | Integer | interface response status codes | All | Refer to the status code description |
| message | String | status Info | All | Specific reasons for an exception |
| sequence_id | String | unique Identifier ID | All | A unique identifier for each request-response |
| device_id | String | device unique ID | All | Unique identification of the device |
| device_os | String | device type | All | Android、Harmony、iOS、Web |
| channel | String | channel | All | channel |
| device_detail | Object | device details | All | Please refer to the description of the device details |
| ip_location | Object | location information corresponding to the IP of the device | All | Please refer to the IP location information description |
| device_risk_score | Integer | device risk score | All | Range 0 - 10000,supports customization. For documentation, refer to risk score |
| device_risk_label | Array | device risk label list | All | Please refer to the description of the device risk label |
| device_risk_tools | Object | device risk tools | All | Please refer to the description of the device risk tools |
| device_history_risk_label | Array | device history risk label list | All | Please refer to the description of the device history risk labels |
| vpn_true_ip_location | Object | location information corresponding to the VPN real IP of the device | All | Please refer to the VPN True IP location information description |
| behavior_detail | Object | Behavior Collection Data Details | Output When the behavior parameter is passed | Reference below Behavior collection information |
Device Details
There are differences in the device fields corresponding to different device types and the following lists the field descriptions for the different device types
Android
| Field | Type | Meaning | Remarks |
|---|---|---|---|
| app_version | String | app versions | E.g. "4.1.6" |
| system_version | String | android system versions | E.g. "6.0.1" |
| api_version | String | android API versions | E.g. "23" |
| fp_version | String | SDK versions | E.g. "4.1.6" |
| model | String | device model | E.g. "2014811" |
| brand | String | device Brand | E.g. "Xiaomi" |
| device_name | String | device name | E.g. "HM2014811" |
| network_type | String | network type | E.g. "2g"、"3g"、"4g"、"5g"、"wifi"、"mobile"、"bluetooth_tethering"、"unknown" |
| ip | String | IP address | E.g. "123.157.153.130" |
| time_zone | String | time zone | E.g. "UTC+08:00" |
| startup_time | Long | boot time | E.g. 1741660150575 |
| up_time | Long | uptime | E.g. "568273951" |
| charge_state | String | charging status | E.g. "charging"、"full"、"not_charging"、"discharging"、"unknown" |
| battery_level | Integer | electrical quantities | Range 0 - 100 |
| screen_resolution | String | screen resolution | Width x Height,Example:"720x1280" |
| screen_brightness | Integer | screen brightness | Range -1 - 256 |
| total_memory | Long | total memory size | Bytes |
| available_memory | Long | available memory size | Bytes |
| total_storage | Long | total storage size | Bytes |
| available_storage | Long | available storage size | Bytes |
| latitude | Double | latitude | Accuracy to 6 decimal places, Example 30.282331 |
| longitude | Double | longitude | Accuracy to 6 decimal places, Example 120.011395 |
| accuracy | Double | GPS Horizontal Positioning Accuracy (Error Radius, Unit: m) | E.g. 15.0 |
| carrier | String | carrier | E.g. "Viettel" |
| bssid | String | bssid | E.g. "00:1a:8c:a0:69:0a" |
| wifi_ip | String | wifi ip | E.g. "10.57.3.135" |
| wifi_list | String | wifi list | E.g. "[["38:17:c3:c0:0a:53","Test-Firewall",-49]]" |
| device_svn | String | device svn | E.g. "07" |
| hardware | String | hardware | E.g. "qcom" |
| dns_address | String | dns address | E.g. "211.137.32.178" |
| product | String | product | E.g. "A37T" |
| host | String | host | E.g. "qh-miui-ota-offline07" |
| sim_operator | String | sim operator | E.g. "Viettel,VinaPhone" |
| ssid | String | ssid | E.g. "xiaoming 的 wifi" |
| vpn_ip | String | vpn ip | E.g. "10.251.37.229" |
| cell_ip | String | cell ip | E.g. "10.3.4.9" |
| current_time | Long | current time | E.g. "1687764437374" |
| package_name | String | package name | E.g. "cn.tongdun. android&3.0.0" |
| language | String | language | E.g. "zh" |
| android_id | String | android id | E.g. "952b0b1edda80b44" |
| cpu_hardware | String | cpu hardware | E.g. "ARMv7 Processor rev 0 (v7l)" |
| cpu_type | String | cpu type | E.g. "Qualcomm Technologies" |
| baseband_version | String | baseband version | E.g. "MPSS.DPM.1.0.c7. 18-00023" |
| mnc | String | mobile network code | E.g. "01" |
| mcc | String | mobile country code | E.g. "460" |
| installed_packages | String | installed packages | E.g. "[{\"package\":\"com.miui.screenrecorder\",\"name\":\"-\"},{\"package\":\"com.miui.fm\",\"name\":\"-\"}]" |
| running_packages | String | running packages | E.g. "com.xiaomi.shop" |
| ipv6 | String | ipv6 | E.g. "fe80::bfd7:21d8:318a:693b" |
| sign_md5 | String | sign md5 | E.g. "6fb472cac420436b773a6325d4cdd7bd" |
| proxy_info | String | proxy info | E.g. "42.235.30.24:8080" |
| country_iso | String | iso country code | E.g. "cn,cn" |
| aid | String | google advertising id | E.g. "db13e159-1058-46fc-a4dc-4d2f8197f3af" |
| vpn_true_ip | String | vpn true ip address | E.g. "123.157.153.130" |
| audio_mode | Integer | audio mode | E.g. 0 - Normal mode,1 - Ringtone mode,2 - Call mode,3 - Communication mode,4 - Call screening is in progress |
| first_seen_at | Long | first seen at | E.g. 1734342323000 |
| app_install_time | Long | app install time | E.g. 1743587909428 |
iOS
| Field | Type | Meaning | Remarks |
|---|---|---|---|
| app_version | String | app versions | E.g. "1.0.3" |
| system_version | String | ios system versions | E.g. "10.2.1" |
| fp_version | String | SDK versions | E.g. "4.1.2" |
| model | String | device model | E.g. "iPhone 6s" |
| device_name | String | device name | E.g. "iPhone" |
| network_type | String | network type | E.g. "2g"、"3g"、"4g"、"5g"、"wifi"、"mobile"、"bluetooth_tethering"、"unknown" |
| ip | String | IP address | E.g. "123.157.153.130" |
| time_zone | String | time zone | E.g. "UTC+08:00" |
| startup_time | Long | boot time | E.g.1741660150575 |
| up_time | Long | uptime | E.g. 568273951 |
| charge_state | String | charging status | E.g. "charging"、"unplugged"、"unknown" |
| battery_level | Integer | electrical quantities | Range 0 - 100 |
| screen_resolution | String | screen resolution | Width x Height,Example:"720x1280" |
| screen_brightness | Integer | screen brightness | Range 0 - 100 |
| total_memory | Long | total memory size | Bytes |
| total_storage | Long | total storage size | Bytes |
| available_storage | Long | available storage size | Bytes |
| latitude | Double | latitude | Accuracy to 6 decimal places, Example 30.282331 |
| longitude | Double | longitude | Accuracy to 6 decimal places, Example 120.011395 |
| accuracy | Double | GPS Horizontal Positioning Accuracy (Error Radius, Unit: m) | E.g. 15.0 |
| current_time | String | current time | E.g. "1687764437374" |
| cell_ip | String | cell ip | E.g. "10.5.2.39" |
| wifi_ip | String | wifi ip | E.g. "192.168.10.111" |
| language | String | language | E.g. "en" |
| carrier | String | carrier | E.g. "Viettel,VinaPhone" |
| mnc | String | mobile network code | E.g. "0" |
| mcc | String | mobile country code | E.g. "460" |
| country_iso | String | iso country code | E.g. "cn" |
| bundle_id | String | bundle id | E.g. "cn.fraudmetrix. FMDeviceManager" |
| proxy_info | String | proxy info | E.g. "10.2.3.4:8080" |
| ssid | String | ssid | E.g. "TP-LINK_03FE" |
| bssid | String | bssid | E.g. "80:2f:3e:dd:03:fe" |
| dns_address | String | dns address | E.g. "192.168.10.1" |
| vpn_ip | String | vpn ip | E.g. "10.32.3.98" |
| ipv6 | String | ipv6 | E.g. "fe08:393ed3" |
| idfa | String | identifier for dvertisers | E.g. "5D26C201-7FEF-44A6-B57A-1D10E2E2EC63" |
| idfv | String | Identifier for Vendor | E.g. "C767FCBE-6135-4F23-82EB-BBF35E493CDF" |
| issue_region | String | issue region | E.g. "CH/A" |
| vpn_true_ip | String | vpn true ip address | E.g. "123.157.153.13 |
| microphone_use_state | Integer | microphone use state | E.g.-1: No available microphone,0: Not in a call state,1: In a call state |
| first_seen_at | Long | first seen at | E.g. 1734342323000 |
| app_install_time | Long | app install time | E.g. 1743587909428 |
Harmony
| Field | Type | Meaning | Remarks |
|---|---|---|---|
| fp_version | String | device type | E.g. "1.0.2" |
| screen_resolution | String | screen resolution | E.g. "1344x2772" |
| current_time | Long | current time | E.g. 1711594081876 |
| startup_time | Long | boot time | E.g. 1741660150575 |
| up_time | Long | up time | E.g. 3503141 |
| time_zone | String | time zone | E.g. UTC+08:00 |
| language | String | language | E.g. "zh-Hans" |
| charge_state | String | charging status | E.g. "unknown"、"charging"、"unplugged、"unplugged"、"full" |
| battery_level | Integer | battery level | E.g. 20 |
| network_type | string | network type | E.g. "wifi" |
| total_storage | Long | total storage size | E.g. 243041042432 |
| available_storage | Long | available storage size | E.g. 231078236160 |
| cell_ip | String | cell ip | E.g. "10.24.207.224" |
| wifi_ip | String | wifi ip | E.g. "192.168.101.38" |
| vpn_ip | String | vpn ip | E.g. "198.18.0.1" |
| proxy_info | string | proxy info | E.g. "10.57.241.80:8888" |
| device_type | String | device type | E.g. "phone" |
| brand | String | device brand | E.g. "HUAWEI" |
| market_name | String | market name | E.g. "HUAWEI Mate 40 Pro" |
| model | String | model | E.g. "NON-AN00" |
| hardware | String | hardware | E.g. "HN1NOAHM" |
| serial_no | String | serial no | E.g. "05b37354f0dd7f2e" |
| system_version | String | system version | E.g. "2.1.6.6(Beta2)" |
| api_version | String | API versions | E.g. "11" |
| udid | String | udid | E.g. "default" |
| package_name | string | package name | E.g. "com.example.harmonyosdemo" |
| app_version | string | app versions | E.g. "1.0.1" |
| sign_md5 | string | sign md5 | E.g. "8CC29B99116E11A24A7762539327BB566D65773CB64C1521D68E67316DE1923F" |
| country_iso | string | iso country code | E.g. "cn,-" |
| sim_operator | string | sim operator | E.g. "Viettel,VinaPhone" |
| latitude | double | latitude | Accuracy to 6 decimal places, Example 30.282331 |
| longitude | double | longitude | Accuracy to 6 decimal places, Example 120.011395 |
| ip | String | IP address | 223.104.160.62 |
| audio_mode | Integer | audio mode | 0 - Default,1 - Ringing mode,2 - Telephone mode,3 - Voice mode |
| first_seen_at | Long | first seen at | E.g. 1734342323000 |
| app_install_time | Long | app install time | E.g. 1743587909428 |
Web
| Field | Type | Meaning | Remarks |
|---|---|---|---|
| browser_name | String | browser name | E.g. "Chrome" |
| browser_version | String | browser version | E.g. "56.0.2924.87" |
| fp_version | String | SDK versions | E.g."3.8.5" |
| user_agent | String | browser userAgent | E.g. "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" |
| url | String | uniform resource locator | E.g. "file:///Users/td/Documents/td/fp/demo_web.html" |
| device_type | String | device type | E.g. "Mac" |
| os | String | device operating system | E.g. "Mac OS" |
| ip | String | ip addresses | E.g. "123.157.153.130" |
| time_zone | String | time zone | E.g. "UTC+08:00" |
| screen_resolution | String | screen resolution | Width x Height,Example:"720x1280" |
| language | String | language | E.g. "zh-CN" |
| referer | String | referer | E.g."http://10.57.30.164:8088/" |
| canvas | String | canvas | E.g. "c8a8455d02d7cec9e dbe980b6b9e0ff8" |
| current_time | Long | current time | E.g. "1481694227762" |
| vpn_true_ip | String | vpn true ip address | E.g. "123.157.153.13 |
| latitude | Double | latitude | Accuracy to 6 decimal places, Example 30.282331 |
| longitude | Double | longitude | Accuracy to 6 decimal places, Example 120.011395 |
| first_seen_at | Long | first seen at | E.g. 1734342323000 |
IP Location Information
| Field | Type | Meaning | Remarks |
|---|---|---|---|
| continent | String | continent | E.g. "North America" |
| country | String | country | E.g. "The United States" |
| country_id | String | country code | E.g. "US" |
| region | String | province/state/region | E.g. "Virginia" |
| city | String | city | E.g. "Ashburn" |
| accuracy_radius | Double | Positioning Error Radius Value, Unit: m | E.g. 35.6001 |
| latitude | Double | IP latitude | E.g. 30.384272 |
| longitude | Double | IP longitude | E.g. 119.987002 |
Device Risk Label
Device Risk Tools
| Field | type | Description | Remarks |
|---|---|---|---|
| installed_risk_tools_type | Array | installation risk tool Type description | Please refer to installation risk tool Type description |
| running_risk_tools_type | Array | description of the type of risk tool running | Please refer to the description of the type of risk tool running |
Installation Risk Tools
| Field | Applicable platform | Description | |
|---|---|---|---|
| quick_macro | Android, iOS | auto click tool | |
| cydia | Android, iOS | Cydia | |
| agent_app | Android, iOS | agent app | |
| more_open | Android | double open tool | |
| machine_change_tools | Android, iOS | hook tools | |
| code_receiving_platform | Android | code receiving platform | |
| magisk | Android | Magisk | |
| group_control_software | Android | group control software | |
| virtual_app | Android | VirtualApp | |
| virtual_positioning | Android, iOS | GPS location fake | |
| xposed | Android | Xposed | |
| game_transmission | Android | game transmission | |
| game_modifier | Android, iOS | game modifier | |
| cloud_simulator | Android | cloud simulator | |
| crowdsourcing_app | Android | crowdsourcing app | |
| skip_ads | Android | skip ads | |
| anti_crash_frame | Android | anti crash frame | |
| capture_tool | Android | capture tool | |
| frida | Android, iOS | frida | |
| troll_store | iOS | TrollStore | |
| cloud_phone | iOS | cloud phone | |
| root_manager | Android | root manager | |
| remote_control | Android | remote control | |
| screen_casting_software | Android | screen casting software | |
| face_spoofing | Android | face spoofing |
Running Risk Tools
| Field | Applicable platform | Description |
|---|---|---|
| quick_macro | Android, iOS | auto click tool |
| machine_change_tools | iOS | hook tools |
| cydia | Android | Cydia |
| magisk | Android | Magisk |
| test_frame | Android | TestFrame |
| virtual_app | Android | VirtualApp |
| xposed | Android | Xposed |
| capture_tool | Android | capture tool |
| frida | Android,iOS | frida |
| troll_store | iOS | TrollStore |
Device History Risk Labels
| Field | type | Description | Remarks |
|---|---|---|---|
| label | String | risk label | Reference device history risk label list "f" |
| last_time | String | last time | 13 digit timestamp |
Device History Risk Label List
VPN True IP Location Information
| Field | Type | Meaning | Remarks |
|---|---|---|---|
| continent | String | continent | E.g. "North America" |
| country | String | country | E.g. "The United States" |
| country_id | String | country code | E.g. "US" |
| region | String | province/state/region | E.g. "Virginia" |
| city | String | city | E.g. "Ashburn" |
| accuracy_radius | Double | Positioning Error Radius Value, Unit: m | E.g. 35.6001 |
| latitude | Double | IP latitude | E.g. 30.384272 |
| longitude | Double | IP longitude | E.g. 119.987002 |
Behavior collection information
When the behavior parameter is included in the request, the response returns a behavior_detail map. Behavior fields are not directly flattened under behavior_detail; instead, they are placed in the corresponding sub map by category. Different client platforms may return different fields.
Top-level fields of behavior_detail
behavior_detail| Field | Type | Description | Platform |
|---|---|---|---|
behavior_risk_label | Array | Risk labels for behavior collection. Default value: []. Currently supports rapid_input, indicating excessively fast input. | iOS、Android、Flutter、Web |
bot_confidence | Float | Bot behavior confidence score. Value range: [0, 1]; default value: 0. A higher value indicates higher confidence that the behavior is bot-generated. | iOS、Android、Flutter、Web |
anomaly | Map | Abnormal behavior statistics. See the anomaly type for fields. | iOS、Android、Flutter、Web |
finger | Map | Touch, swipe, mouse, and other gesture behavior data. See the finger type for fields. | iOS、Android、Flutter、Web |
interactions | Map | Application or page interaction behavior data. See the interactions type for fields. | iOS、Android、Flutter、Web |
sport | Map | Accelerometer, gyroscope, and device orientation data. See the sport type for fields. | iOS、Android、Flutter |
typing | Map | Text input and keyboard behavior data. See the typing type for fields. | iOS、Android、Flutter、Web |
Behavior collection information anomaly type
anomaly type| Field | Type | Description | Platform |
|---|---|---|---|
scale_rage_actions_count | int | Number of times scale event speed exceeds a threshold per second, e.g., if current unit speed exceeds 5 scale events/second (> 5 events/s), count +1. | iOS、Android、Flutter |
scroll_rage_actions_count | int | Number of times scroll event speed exceeds a threshold per second, e.g., if current unit speed exceeds 5 scroll events/second (> 5 events/s), count +1. | iOS、Android、Flutter |
swipe_rage_actions_count | int | Number of times swipe event speed exceeds a threshold per second, e.g., if current unit speed exceeds 5 swipe events/second (> 5 events/s), count +1. | iOS、Android、Flutter |
text_input_rage_actions_count | int | Number of times text input event speed exceeds a threshold per second, e.g., if current unit speed exceeds 5 text input events/second (> 5 events/s), count +1. | iOS、Android、Flutter |
touch_rage_actions_count | int | Number of times touch event speed exceeds a threshold per second, e.g., if current unit speed exceeds 5 touch events/second (> 5 events/s), count +1. | iOS、Android、Flutter、Web |
keyboard_rage_actions_count | int | Number of times keyboard event speed exceeds a threshold per second, e.g., if current unit speed exceeds 5 keyboard events/second (> 5 events/s), count +1. | Web |
mouse_rage_actions_count | int | Number of times mouse event speed exceeds a threshold per second, e.g., if current unit speed exceeds 5 mouse events/second (> 5 events/s), count +1. | Web |
click_rage_actions_count | int | Number of times click event speed exceeds a threshold per second, e.g., if current unit speed exceeds 5 click events/second (> 5 events/s), count +1. | Web |
Behavior collection information finger type
finger type| Field | Type | Description | Platform |
|---|---|---|---|
scale_total_events_count | int | Total number of scale events. | iOS, Android, Flutter |
scroll_path_length | float | Total distance of scroll events, unit: logical pixels, example: 100.0 | iOS, Android, Flutter |
swipe_path_length | float | Total distance of swipe events, unit: logical pixels, example: 100.0 | iOS, Android, Flutter |
swipe_total_events_count | int | Total number of swipe events. | iOS, Android, Flutter |
text_input_total_events_count | int | Total number of text input events. | iOS, Android, Flutter |
touch_total_events_count | int | Total number of touch events. | iOS, Android, Flutter, Web |
scroll_total_events_count | int | Total number of scroll events. | iOS, Android, Flutter, Web |
touch_actions_speed | float | Touch event speed, unit: events/s, example: 10.0 | iOS, Android, Flutter, Web |
click_total_events_count | int | Total number of click events. | Web |
mouse_moving_path_length | float | Total distance of mouse movement events, unit: logical pixels, example: 100.0 | Web |
mouse_moving_speed | float | Mouse movement speed, unit: logical pixels/s, example: 100.0 | Web |
mouse_hover_total_events_count | int | Total time spent in mouse hover state. A mouse hover event is triggered when the mouse remains stationary for more than 500 milliseconds ( > 500 ms). | Web |
mouse_hover_time_spent_total | int | Total time spent in mouse hover state. A mouse hover event is triggered when the mouse remains stationary for more than 500 milliseconds ( > 500 ms). Unit: milliseconds, example: 10000 | Web |
touch_time_seq | string(int) | Touch event timestamp sequence, example: "2,30,40,55,569" | iOS, Android, Flutter |
touch_in_main_area_ratio | float | Ratio of touch events located in the main touch area. Value range: [0, 1]. | iOS, Android, Flutter |
touch_main_area_center | string(float) | Center point of the main touch area, example: "112.0100,206.2022" | iOS, Android, Flutter |
touch_repeatseq_length | int | Length of the repeated control sequence in touch events. | iOS, Android, Flutter |
touch_repeat_seq_count | int | Number of repeated control sequences in touch events. | iOS, Android, Flutter |
touch_repeat_seq_similar | float | Similarity of repeated control sequences in touch events. | iOS, Android, Flutter |
touch_center_offset_list | string(float) | List of distances from touch points to the control center, example: "1.6250,5.0389,10.4231,7.1948,6.3258,5.0760" | iOS, Android, Flutter |
scroll_curve_length | float | Curve distance of scroll events, unit: logical pixels, example: 160.0 | iOS, Android, Flutter |
mouse_moving_curve_length | float | Curve distance of mouse movement events, unit: logical pixels, example: 160.0 | Web |
touch_deep_list | string(float) | Touch intensity list, example: "0.3000,0.0167,0.0333,0.1167,0.1333,0.0833" | iOS, Android |
touch_deep_area_list | string(float) | Touch contact area list, example: "0.0000,25.6476" | iOS, Android |
Behavior collection information interactions type
interactions type| Field | Type | Description | Platform |
|---|---|---|---|
application_as_background_count | int | Number of times the application enters background. | iOS, Android, Flutter |
application_as_foreground_count | int | Number of times the application enters foreground. | iOS, Android, Flutter |
application_navi_count | int | Number of application interface switches. | iOS, Android, Flutter |
client_activity_session_time_spent_total | int | Time spent by the application in foreground, unit: milliseconds, example: 10000 | iOS, Android, Flutter |
client_interactions_time_spent_total | int | Total time of input field cursor focus within the application, unit: milliseconds, example: 10000 | iOS, Android, Flutter、Web |
client_interactions_tracked_events_count | int | Number of events triggered during input field cursor focus within the application. Event types include touch, scroll, screenEdgePan, swipe, and textInput. | iOS, Android, Flutter、Web |
text_input_text_removed_all_count | int | Number of complete text deletion input events among text input events; requires text length > 1 before deletion. | iOS, Android, Flutter |
input_delete_actions_count | int | Number of delete operation input events when a letter was deleted in the "usual" way during field filling (1 character per event). | iOS, Android, Flutter, Web |
input_insert_actions_count | int | Number of insert operation input events when a letter was inserted in the "usual" way during field filling (1 character per event). | iOS, Android, Flutter, Web |
input_cut_actions_count | int | Number of cut operation input events among text input events. | Web |
input_copy_actions_count | int | Number of copy operation input events among text input events. | Web |
input_paste_actions_count | int | Number of paste operation input events among text input events. | iOS, Android, Flutter, Web |
application_navi_info | string | Information on application interface switching, including interface name and dwell time(milliseconds), example: "Main0,3306,SignIn0,7399". | iOS, Android, Flutter, Web |
Behavior collection information sport type
sport type| Field | Type | Description | Platform |
|---|---|---|---|
accelerometer_g_rage_actions_count | int | For time-sorted accelerometer data, take a fixed number of accelerometer data points and calculate whether the variance of g values exceeds a threshold. If yes, count +1. | iOS, Android, Flutter |
gyroscope_x_rage_actions_count | int | For time-sorted gyroscope data, take a fixed number of gyroscope data points and calculate whether the variance of x values exceeds a threshold. If yes, count +1. | iOS, Android, Flutter |
gyroscope_y_rage_actions_count | int | For time-sorted gyroscope data, take a fixed number of gyroscope data points and calculate whether the variance of y values exceeds a threshold. If yes, count +1. | iOS, Android, Flutter |
gyroscope_z_rage_actions_count | int | For time-sorted gyroscope data, take a fixed number of gyroscope data points and calculate whether the variance of z values exceeds a threshold. If yes, count +1. | iOS, Android, Flutter |
orientation_total_events_count | int | Number of times device orientation changes. | iOS, Android, Flutter |
orientation_rage_actions_count | int | Number of times device rotation event speed exceeds a threshold per minute, e.g., if current unit speed exceeds 5 device rotation events/minute, count +1. | iOS, Android, Flutter |
Behavior collection information typing type
typing type| Field | Type | Description | Platform |
|---|---|---|---|
text_input_chars_except_num_and_letters_count | int | Number of characters when any other character (including symbols, punctuation, marks, and separators) was typed in the field or when the number of pasted characters was greater than one per event (including date selection from a calendar picker). | iOS, Android, Flutter |
text_input_speed | float | Text input speed, unit: characters/s. | iOS, Android, Flutter |
keyboard_total_keys_pressed_count | int | Total number of keyboard key press events. | Web |
keyboard_backspace_key_pressed_count | int | Number of backspace key press events. | Web |
keyboard_shift_key_pressed_count | int | Number of shift key press events. | Web |
keyboard_delete_key_pressed_count | int | Number of delete key press events. | Web |
keyboard_symbol_key_pressed_count | int | Number of symbol key press events. | Web |
keyboard_cut_keys_pressed_count | int | Number of "ctrl + x" key combination press events. | Web |
keyboard_copy_keys_pressed_count | int | Number of "ctrl + c" key combination press events. | Web |
keyboard_paste_keys_pressed_count | int | Number of "ctrl + v" key combination press events. | Web |
keyboard_shift_delete_actions_count | int | Number of "shift + delete" key combination press events. | Web |
keyboard_ctrl_alt_delete_actions_count | int | Number of "ctrl + alt + delete" key combination press events. | Web |
keyboard_typing_speed | int | Keyboard event speed, unit: events/s. | Web |
keyboard_is_trusted_key_count | int | Number of trusted input events in the application flow among keyboard events, i.e., total events where event.isTrusted == true. | Web |
input_from_inside_count | int | Total number of times users input values within the field during interaction with the input box (position > 1 and position < string length). | Web |
input_from_end_count | int | Total number of times users input values at the end of the string during first interaction with the input box. | Web |
input_from_beginning_count | int | Number of times users start input from the first position of the field during interaction with the input box. | Web |
touch_prop_force_max | float | Touch event maximum pressure value, example: 0.8 | Web |
touch_prop_force_avg | float | Touch event average pressure value, example: 0.5 | Web |
touch_prop_force_min | float | Touch event minimum pressure value, example: 0.2 | Web |
text_input_count | int | Total number of characters in all text input events. | iOS, Android, Flutter, Web |
text_input_source | int | Input source, 32-bit bitmap. From right to left: bit 1: unknown source; bit 2: keyboard input; bit 3: paste; bit 4: autofill (passwords, verification codes, etc.); bit 5: app program fill; bit 6: third-party SDK injection; Example: 5 = 0b101, indicating paste and unknown source. | iOS, Android, Flutter, Web |
text_input_interval_cv_list | string(float) | Input rhythm list, example: "0.5051,0.7367" | iOS, Android, Flutter, Web |
See Example of response below for the full behavior collection information returned by the API
Example of response below for the full behavior collection information returned by the APIStatus Code
| Status Code | Suggestion | Charged |
|---|---|---|
| 200 | Yes | |
| 306 | No available traffic, please contact operations | No |
| 406 | Wrong region,Version is not support | No |
| 500 | Application exception, reserved errors, can be ignored | No |
| 512 | Service not purchased, please contact operations | No |
| 513 | Traffic disabled, please contact operations | No |
| 514 | Service expired, please contact operations | No |
| 515 | Lack of traffic, please contact operations | No |
| 9150 | Wrong region,device os not support | No |
| 9151 | Authentication failed, please check the authentication parameters | No |
| 9152 | Service exception, reserved errors, can be ignored | No |
| 9153 | black_box is illegal,please mark | No |
| 9154 | SDK exception, please check the integration | No |
| 9155 | Replay, please mark | No |
| 9156 | Missing file, reserved errors, please check the integration | No |
| 9157 | Time out, please retry | No |
| 9158 | BlackBox forgery, please mark | No |
| 9159 | Missing blackBox, please check your code | No |
| 9160 | Wrong environment, confusion between production and testing environments | No |
| 9161 | BlackBox expired, prohibit caching blackBox | No |
| 9162 | Content type is not support | No |
| 9163 | Wrong region,Wrong address | No |
| 9164 | SDK init exception, please check the apiStatus returned by the SDK | No |
Example of response
{
"device_risk_score": 8,
"code": 200,
"device_id": "c1nG3793-Z5a0-p97J-180N-0nC1DYQh12Yj",
"channel": "apitest",
"device_risk_label": [
"no_sim",
"adb_link"
],
"device_risk_tools": {
"running_risk_tools_type": [],
"installed_risk_tools_type": []
},
"device_detail": {
"app_version": "4.8.0.2",
"language": "zh",
"installed_packages": "[{\"package\":\"cn.tongdun.mobrisk.demo\",\"name\":\"-\"}]",
"mcc": "",
"gps_location": {
"address": "",
"province": "",
"city": "",
"region": "",
"township": ""
},
"wifi_ip": "",
"device_svn": "20",
"available_storage": 137275531264,
"cpu_type": "",
"dns_address": "",
"host": "cn-west-hcd-5a-acab910141717386065435-588c6955d6-48x72",
"model": "OXF-AN10",
"brand": "HONOR",
"hardware": "kirin990",
"longitude": 0,
"cell_ip": "",
"ip": "183.129.232.236",
"screen_resolution": "1080x2400",
"cpu_hardware": "",
"charge_state": "charging",
"up_time": 82841770,
"audio_mode": 0,
"aid": "",
"startup_time": 1757472801887,
"bssid": "",
"latitude": 0,
"running_packages": "cn.tongdun.mobrisk.demo",
"proxy_info": "",
"device_name": "HWOXF",
"total_memory": 7868047360,
"vpn_true_ip": "",
"ipv6": "",
"system_version": "12",
"baseband_version": "21C93B398S000C000",
"fp_version": "4.8.0.2",
"country_iso": "cn,-",
"current_time": 1757555643657,
"product": "OXF-AN10",
"mnc": "",
"sim_operator": "-,-",
"battery_level": 67,
"first_seen_at": 1735097180012,
"vpn_ip": "",
"api_version": "31",
"time_zone": "UTC+08:00",
"sign_md5": "03ce925f76ceb40e1c2ed8bfe3fcdd0c480a7ba8689ff814c601edfbf79e339e",
"screen_brightness": 71,
"carrier": "-,-",
"app_install_time": 1757482908393,
"package_name": "cn.tongdun.mobrisk.demo",
"available_memory": 3286253568,
"total_storage": 245389852672,
"android_id": "0828e7ca28dae28c",
"network_type": "wifi",
"wifi_list": "[{\"wifi_bssid\":\"28:6c:07:47:c3:bb\",\"wifi_ssid\":\"ZD_5G\",\"wifi_level\":-54},{\"wifi_bssid\":\"dc:f0:90:33:02:92\",\"wifi_ssid\":\"nunu\",\"wifi_level\":-58},{\"wifi_bssid\":\"e8:ac:23:cb:34:76\",\"wifi_ssid\":\"tdiot\",\"wifi_level\":-69},{\"wifi_bssid\":\"e8:ac:23:cb:34:74\",\"wifi_ssid\":\"TD-Phone\",\"wifi_level\":-69},{\"wifi_bssid\":\"e8:ac:23:cb:34:73\",\"wifi_ssid\":\"TD-GUEST\",\"wifi_level\":-69},{\"wifi_bssid\":\"e8:ac:23:cb:34:72\",\"wifi_ssid\":\"Tongdun\",\"wifi_level\":-69},{\"wifi_bssid\":\"e8:ac:23:cb:34:71\",\"wifi_ssid\":\"TrustDecision\",\"wifi_level\":-69},{\"wifi_bssid\":\"e8:ac:23:cb:34:70\",\"wifi_ssid\":\"Zhongboxin\",\"wifi_level\":-69},{\"wifi_bssid\":\"76:8d:2a:32:71:49\",\"wifi_ssid\":\"608-TDXT\",\"wifi_level\":-75},{\"wifi_bssid\":\"e8:ac:23:ca:89:a2\",\"wifi_ssid\":\"Tongdun\",\"wifi_level\":-91}]",
"accuracy": 15.0,
"ssid": "ZD_5G",
"oaid": "f976d3ee-7168-4f06-a7a5-4dea08a9662a"
},
"behavior_detail": {
"behavior_risk_label": [
"rapid_input"
],
"bot_confidence": 0.3,
"anomaly": {
"scroll_rage_actions_count": 0,
"touch_rage_actions_count": 0,
"scale_rage_actions_count": 0,
"text_input_rage_actions_count": 9,
"swipe_rage_actions_count": 0
},
"finger": {
"touch_center_offset_list": "10.6719,15.3659",
"touch_time_seq": "849,29582",
"touch_actions_speed": 0.0675,
"touch_repeat_seq_similar": 0,
"swipe_total_events_count": 4,
"touch_total_events_count": 2,
"scroll_path_length": 358.48,
"touch_in_main_area_ratio": 0.5,
"scroll_total_events_count": 5,
"touch_deep_list": "0.0000;0.0000",
"touch_main_area_center": "364.3333,346.6667",
"swipe_path_length": 254.9274,
"touch_deep_area_list": "0.0000,12.1039;6.0519",
"touch_repeat_seq_length": 0,
"text_input_total_events_count": 56,
"touch_repeat_seq_count": 1,
"scroll_curve_length": 359.2585,
"scale_total_events_count": 0
},
"interactions": {
"input_delete_actions_count": 0,
"application_as_background_count": 0,
"client_interactions_tracked_events_count": 57,
"input_insert_actions_count": 56,
"input_paste_actions_count": 0,
"client_activity_session_time_spent_total": 29583,
"client_interactions_time_spent_total": 15199,
"application_navi_count": 0,
"application_navi_info": "TDMain0,29583",
"text_input_text_removed_all_count": 0,
"application_as_foreground_count": 0
},
"sport": {
"accelerometer_g_rage_actions_count": 0,
"orientation_total_events_count": 0,
"gyroscope_z_rage_actions_count": 0,
"gyroscope_y_rage_actions_count": 0,
"gyroscope_x_rage_actions_count": 0,
"orientation_rage_actions_count": 0
},
"typing": {
"text_input_count": 56,
"text_input_source": 2,
"text_input_interval_cv_list": "0.4273",
"text_input_chars_except_num_and_letters_count": 0,
"text_input_speed": 5.253
}
},
"message": "success",
"device_os": "Android",
"ip_location": {
"continent": "Asia",
"country": "China",
"city": "Hangzhou",
"region": "Zhejiang",
"country_id": "CN",
"latitude": 30.384272,
"accuracy_radius": 35.6001,
"longitude": 119.987002
},
"vpn_true_ip_location": {
"continent": "",
"country": "",
"city": "",
"region": "",
"country_id": "",
"latitude": 0.0,
"accuracy_radius": 0.0,
"longitude": 0.0
},
"device_history_risk_label": [
{
"last_time": "1749105497989",
"label": "app_multiple_running"
},
{
"last_time": "1753944006009",
"label": "vpn_detected"
},
{
"last_time": "1749105497989",
"label": "camera_fake"
},
{
"last_time": "1757555625652",
"label": "no_sim"
},
{
"last_time": "1742286486244",
"label": "short_uptime"
},
{
"last_time": "1757555625652",
"label": "adb_link"
},
{
"last_time": "1749105497989",
"label": "gps_fake"
},
{
"last_time": "1746762648790",
"label": "repackaged"
},
{
"last_time": "1753944006009",
"label": "device_info_tampered"
},
{
"last_time": "1757498166978",
"label": "abnormal_time"
},
{
"last_time": "1748338101708",
"label": "cloud_phone"
},
{
"last_time": "1753944006009",
"label": "proxy_detected"
},
{
"last_time": "1757498166978",
"label": "replay_attacks"
}
],
"sequence_id": "1757555737405256F8BD761B87527878"
}
