Menu

Retention 2-60 Day Report

Note:

  1. Earliest date is the day before yesterday.
  2. 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:
all (2-60 day user retention), retention_day_2 (2nd day user retention),
...
 retention_day_60 (60th day user retention)

["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:
date (Date, default value),
app (Application),

area (Country Short Code),

channel (Channel),
device (Device Type),

["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
}
 
Previous
Ltv 1-60 Days Report
Next
Impression & New Users 1-60 Days Report
Last modified: 2025-08-20Powered by