Note:
- Earliest date is the day before yesterday.
- The report involves third-party data. It is recommended to pull yesterday's data again around 10 p.m. (third-party data may continue to be updated). Under normal circumstances, the data will be complete at this time.
1. Request URL
https://api.toponad.net/v3/retentionreport
2. Request method
POST
3. Request params
params | type | required | notes | sample |
---|---|---|---|---|
start_date | Int | Y | Start date, format: YYYYmmdd | 20190501 |
end_date | Int | Y | End date, format: YYYYmmdd | 20190506 |
appid_list | Array[String] | N | App ID list | ["a600e6fbeac98c"] |
area_list | Array[String] | N | Country Short Code | ["CN","US"] |
channel_list | Array[String] | N | Channel list | [“MyChannel”] |
time_zone | String | N | Report Timezone, UTC+8, UTC+0, UTC-8, default UTC+8 | UTC+0 |
start | Int | Y | Offset, default 0 | 0 |
limit | Int | Y | Limit row number. default 1000. [1,1000] | default 1000 |
metric | Array[String] | Y |
The requested metrics, where retention_day_xx represents the number of retained users, no longer a percentage: |
["retention_day_42","retention_day_43","retention_day_46"] |
group_by | Array[String] | Y |
Group by dimension. The default date and app dimensions are fixed. Only iOS apps support the device dimension. If the developer submits both iOS and Android apps, only iOS app data will be returned: area (Country Short Code), channel (Channel), |
["date","app","area","channel","device"] |
4. Return data
fields | type | required | notes |
---|---|---|---|
records | Array[Object] | Y | Record, object array. The structure of each record is shown in the records element structure below. It is empty when there is no data. |
count | Int | Y | Count of the row numbers |
time_zone | String | Y | UTC+8, UTC+0, UTC-8 |
records:
fields | type | required | notes |
---|---|---|---|
app | Object | Y | App |
app.app_id | String | Y | App ID |
app.name | String | Y | App name |
app.platform | Int | Y | App platform |
date | Int | Y | Date, format: YYYYmmdd |
area | String | N | Country Short Code, response by group_by select channel |
channel | String | N | Channel, response by group_by select channel |
device | String | N | Device Type, response by group_by select channel |
new_user | Int | Y | New User Count |
retention_day_xx | Float | Y | retention_day_(num) (2-60) |
5. Sample
Request sample:
curl --location --request POST 'https://api.toponad.net/v3/retentionreport' \
--header 'X-Up-Key: 877f8ae9c6e9ca82c0==5b5fff594c373axxx' \
--header 'X-Up-Signature: CE12B506DBCD868C2C6F09E08C139CBC' \
--header 'X-Up-Timestamp: 1626161553000' \
--header 'Content-Type: application/json' \
--data-raw '{
"start_date": 20200301,
"end_date": 20200301,
"appid_list":["a5c41a9ed1679c"],
"group_by":["date","area"],
"start": 0,
"limit": 30,
"metric": ["all"]
}'
Return data sample:
{
"records": [
{
"app": {
"app_id": 388,
"name": "aabbcc",
"platform": 1
},
"date": 20200424,
"retention_day_10": 32,
"retention_day_11": 20,
"retention_day_12": 21,
"retention_day_13": 19,
"retention_day_14": 0,
"retention_day_15": 0,
"retention_day_16": 0,
"retention_day_17": 0,
"retention_day_18": 0,
"retention_day_19": 0,
"retention_day_2": 297,
"retention_day_20": 0,
"retention_day_21": 0,
"retention_day_22": 0,
"retention_day_23": 0,
"retention_day_24": 0,
"retention_day_25": 0,
"retention_day_26": 0,
"retention_day_27": 0,
"retention_day_28": 0,
"retention_day_29": 0,
"retention_day_3": 169,
"retention_day_30": 0,
"retention_day_31": 0,
"retention_day_32": 0,
"retention_day_33": 0,
"retention_day_34": 0,
"retention_day_35": 0,
"retention_day_36": 0,
"retention_day_37": 0,
"retention_day_38": 0,
"retention_day_39": 0,
"retention_day_4": 104,
"retention_day_40": 0,
"retention_day_41": 0,
"retention_day_42": 0,
"retention_day_43": 0,
"retention_day_44": 0,
"retention_day_45": 0,
"retention_day_46": 0,
"retention_day_47": 0,
"retention_day_48": 0,
"retention_day_49": 0,
"retention_day_5": 75,
"retention_day_50": 0,
"retention_day_51": 0,
"retention_day_52": 0,
"retention_day_53": 0,
"retention_day_54": 0,
"retention_day_55": 0,
"retention_day_56": 0,
"retention_day_57": 0,
"retention_day_58": 0,
"retention_day_59": 0,
"retention_day_6": 50,
"retention_day_60": 0,
"retention_day_7": 45,
"retention_day_8": 35,
"retention_day_9": 32
}
],
"time_zone": "",
"count": 128
}