Funnel Analysis model API
For how to call the API, see the calling method described in the Open API document.
To learn about usage scenarios, read Funnel Analysis in the User Guide.
1. Funnel Analysis query
Endpoint URL
/open/funnel-analyze?token=xxx
Request method
POST
Content-Type
application/json
Request query parameters
| Parameter name | Example value | Parameter type | Required | Description |
|---|---|---|---|---|
| token | xxx | String | Yes | Query key |
Request body parameters
{
"eventView":{
"endTime":"2021-10-31 23:59:59",
"filts":[
{
"columnDesc":"City",
"columnName":"city",
"comparator":"equal",
"filterType":"SIMPLE",
"ftv":[
"Shanghai",
"Beijing",
"Guangzhou",
"Shenzhen"],
"specifiedClusterDate":"2022-01-24",
"tableType":"user",
"timeUnit":""
}],
"groupBy":[
{
"columnDesc":"City",
"columnName":"city",
"propertyRange":"",
"specifiedClusterDate":"2022-01-24",
"tableType":"user"
}],
"recentDay":"",
"relation":"and",
"startTime":"2021-10-01 00:00:00",
"taIdMeasureVo":{
"columnDesc":"User unique ID",
"columnName":"#user_id",
"tableType":"event"
},
"windows_gap":1,
"windows_gap_tu":"hour"
},
"events":[
{
"eventName":"register",
"eventNameDisplay":"",
"filts":[
{
"columnDesc":"App version",
"columnName":"app_version",
"comparator":"equal",
"filterType":"SIMPLE",
"ftv":[
"V1.0"],
"specifiedClusterDate":"2022-01-26",
"tableType":"event",
"timeUnit":""
}],
"relation":"and"
},
{
"eventName":"login",
"eventNameDisplay":"",
"filts":[
],
"relation":"and"
},
{
"eventName":"activity_attend",
"eventNameDisplay":"",
"filts":[
],
"relation":"and"
},
{
"eventName":"logout",
"eventNameDisplay":"",
"filts":[
],
"relation":"and"
}
],
"projectId":377,
"limit": 2,
"timeoutSeconds": 10,
"useCache": true,
"zoneOffset": 10
}
Request parameters
| $$Parameter name | Example value | Parameter type | Required | Description |
|---|---|---|---|---|
| eventView | - | Object | Yes | Common properties of the metrics |
| eventView.endTime | 2021-10-31 23:59:59 | String | No | End time (format: yyyy-MM-dd HH:mm:ss). Takes effect when the relative time is empty |
| eventView.filts | - | List | No | Global filters |
| eventView.filts.columnDesc | City | String | No | Field display name |
| eventView.filts.columnName | city | String | Yes | Field name |
| eventView.filts.comparator | equal | String | Yes | See Filter expressions in the Query API |
| eventView.filts.filterType | SIMPLE | String | No | Filter mode. SIMPLE: simple, COMPOUND: compound |
| eventView.filts.ftv | ["Shanghai"] | List | No | Literal constants used as boundaries for property comparison |
| eventView.filts.specifiedClusterDate | 2022-01-24 | String | No | Uses the historical version of the tag for the specified date |
| eventView.filts.tableType | user | String | Yes | Table type enum values |
| eventView.filts.timeUnit | String | No | Unit of the property comparison value, valid only for relativeEvent*: day, hour, minute | |
| eventView.groupBy | - | List | No | Group-by properties. There can be zero or more |
| eventView.groupBy.columnDesc | City | String | No | Field display name |
| eventView.groupBy.columnName | city | String | Yes | Field name |
| eventView.groupBy.propertyRange | String | No | Custom property range | |
| eventView.groupBy.specifiedClusterDate | 2022-01-24 | String | No | Uses the historical version of the tag for the specified date |
| eventView.groupBy.tableType | user | String | Yes | Table type enum values |
| eventView.recentDay | String | No | Relative time (this item, the start time, and the end time can't all be empty) | |
| eventView.relation | and | String | No | Logical relation. and: logical AND, or: logical OR |
| eventView.startTime | 2021-10-01 00:00:00 | String | No | Start time (format: yyyy-MM-dd HH:mm:ss). Takes effect when the relative time is empty |
| eventView.taIdMeasureVo | - | Object | No | Analysis entity configuration |
| eventView.taIdMeasureVo.columnDesc | User Unique ID | String | No | Field display name |
| eventView.taIdMeasureVo.columnName | #user_id | String | Yes | Field name |
| eventView.taIdMeasureVo.tableType | event | String | Yes | Table type enum values |
| eventView.windows_gap | 1 | Long | No | Window length |
| eventView.windows_gap_tu | hour | String | No | Unit of the window length:
|
| events | - | List | Yes | List of event metrics |
| events.eventName | register | String | Yes | Event name of the metric. You can use anyEvent to represent any event |
| events.eventNameDisplay | String | No | Display name of the custom metric | |
| events.filts | - | List | No | List of filter conditions |
| events.filts.columnDesc | App version | String | No | Field display name |
| events.filts.columnName | app_version | String | Yes | Field name |
| events.filts.comparator | equal | String | Yes | See Filter expressions in the Query API |
| events.filts.filterType | SIMPLE | String | No | Filter mode. SIMPLE: simple, COMPOUND: compound |
| events.filts.ftv | ["V1.0"] | List | No | Literal constants used as boundaries for property comparison |
| events.filts.specifiedClusterDate | 2022-01-26 | String | No | Uses the historical version of the tag for the specified date |
| events.filts.tableType | event | String | Yes | Table type enum values |
| events.filts.timeUnit | String | No | Time unit of the filter | |
| events.relation | and | String | No | Logical relation. and: logical AND, or: logical OR |
| projectId | 377 | Integer | Yes | Project ID |
| limit | 2 | Integer | No | Maximum number of groups per analysis object. Optional. Defaults to 1000, with a maximum of 10000 |
| timeoutSeconds | 10 | Integer | No | Request timeout. The query task is canceled when it times out |
| useCache | true | Boolean | Yes | true means the cache is used |
| zoneOffset | 10 | Integer | No | Time zone |
Success response example
{
"data": {
"result_generate_time": "2022-01-26 19:23:51",
"total": 5,
"x": [
"2021-10-01",
"2021-10-02",
"2021-10-03",
"2021-10-04",
"2021-10-05",
"2021-10-06",
"2021-10-07",
"2021-10-08",
"2021-10-09",
"2021-10-10",
"2021-10-11",
"2021-10-12",
"2021-10-13",
"2021-10-14",
"2021-10-15",
"2021-10-16",
"2021-10-17",
"2021-10-18",
"2021-10-19",
"2021-10-20",
"2021-10-21",
"2021-10-22",
"2021-10-23",
"2021-10-24",
"2021-10-25",
"2021-10-26",
"2021-10-27",
"2021-10-28",
"2021-10-29",
"2021-10-30",
"2021-10-31"
],
"y": [
{
"Overall": {
"col1": [
5666,
197,
197,
197
],
"col2": [
[
208,
10,
10,
10
],
[
205,
4,
4,
4
],
[
189,
5,
5,
5
],
[
229,
10,
10,
10
],
[
217,
6,
6,
6
],
[
257,
10,
10,
10
],
[
233,
6,
6,
6
],
[
207,
7,
7,
7
],
[
204,
7,
7,
7
],
[
248,
14,
14,
14
],
[
217,
4,
4,
4
],
[
207,
9,
9,
9
],
[
219,
8,
8,
8
],
[
220,
4,
4,
4
],
[
193,
10,
10,
10
],
[
218,
9,
9,
9
],
[
232,
7,
7,
7
],
[
222,
10,
10,
10
],
[
220,
8,
8,
8
],
[
203,
6,
6,
6
],
[
217,
8,
8,
8
],
[
239,
3,
3,
3
],
[
214,
5,
5,
5
],
[
197,
11,
11,
11
],
[
199,
8,
8,
8
],
[
135,
7,
7,
7
],
[
73,
1,
1,
1
],
[
33,
0,
0,
0
],
[
11,
0,
0,
0
],
[
0,
0,
0,
0
],
[
0,
0,
0,
0
]
]
}
},
{
"Beijing": {
"col1": [
2028,
70,
70,
70
],
"col2": [
[
79,
1,
1,
1
],
[
71,
2,
2,
2
],
[
65,
0,
0,
0
],
[
74,
3,
3,
3
],
[
72,
2,
2,
2
],
[
89,
3,
3,
3
],
[
88,
2,
2,
2
],
[
75,
3,
3,
3
],
[
66,
4,
4,
4
],
[
95,
1,
1,
1
],
[
60,
1,
1,
1
],
[
68,
5,
5,
5
],
[
80,
5,
5,
5
],
[
68,
2,
2,
2
],
[
67,
6,
6,
6
],
[
84,
4,
4,
4
],
[
84,
1,
1,
1
],
[
87,
1,
1,
1
],
[
79,
6,
6,
6
],
[
76,
1,
1,
1
],
[
81,
3,
3,
3
],
[
85,
1,
1,
1
],
[
89,
2,
2,
2
],
[
75,
3,
3,
3
],
[
74,
5,
5,
5
],
[
49,
2,
2,
2
],
[
26,
1,
1,
1
],
[
16,
0,
0,
0
],
[
6,
0,
0,
0
],
[
0,
0,
0,
0
],
[
0,
0,
0,
0
]
]
}
}
],
"z": [
"register",
"login",
"activity_attend",
"logout"
]
},
"return_code": 0,
"return_message": "success"
}
Response parameters
| $$Parameter name | Example value | Parameter type | Description |
|---|---|---|---|
| return_code | 0 | Integer | Return code |
| return_message | success | String | Return message |
| data | - | Object | Returned result |
| data.result_generate_time | 2022-01-01 00:00:00 | String | Result generation time |
| data.total | 5 | Integer | Total count |
| data.x | ["2021-10-01"] | List | Time list |
| data.y | - | List<Map> | Data list |
| data.z | ["register"] | List | Event name list |
Error response example
{
"return_code": -1008,
"return_message": "Parameter (token) is empty"
}
| Parameter name | Example value | Parameter type | Description |
|---|---|---|---|
| return_code | -1008 | Integer | Return code |
| return_message | Parameter (token) is empty | String | Return message |
2. Funnel Analysis full download
Endpoint URL
/open/streaming-download/funnel-analyze?token=xxx
Request method
POST
Content-Type
application/json
Request query parameters
| Parameter name | Example value | Parameter type | Required | Description |
|---|---|---|---|---|
| token | xxx | String | Yes | Query key |
Request body parameters
{
"eventView": {
"endTime": "2022-03-07 17:27:29",
"filts": [],
"groupBy": [],
"recentDay": "1-7",
"relation": "and",
"startTime": "2022-03-01 17:27:29",
"taIdMeasureVo": {
"columnDesc": "User ID",
"columnName": "#user_id",
"tableType": "event"
},
"windows_gap": 1,
"windows_gap_tu": "day"
},
"events": [{
"eventName": "Login",
"eventNameDisplay": "",
"filts": [],
"relation": "and"
}, {
"eventName": "LogOut",
"eventNameDisplay": "",
"filts": [],
"relation": "and"
}],
"projectId": 319,
"timeView": "TOTAL_TIME",
"resultType": "CONVERSION",
"zoneOffset": 10
}
Request parameters
| $$Parameter name | Example value | Parameter type | Required | Description |
|---|---|---|---|---|
| eventView | - | Object | Yes | Same as the parameters of the Funnel Analysis query API |
| events | - | List | Yes | Same as the parameters of the Funnel Analysis query API |
| projectId | 377 | Integer | Yes | Project ID |
| timeView | TOTAL_TIME | String | No | Time perspective: TOTAL_TIME (Total), PER_DATE (Daily) |
| resultType | CONVERSION | String | No | Result type: CONVERSION (conversion), DROP_OFF (churn) |
| zoneOffset | 10 | Integer | No | Time zone |
Response
Same as the Funnel Analysis full download in AE
3. Funnel Analysis user list
Endpoint URL
/open/funnel-user-list?token=xxx
Request method
POST
Content-Type
application/json
Request query parameters
| Parameter name | Example value | Parameter type | Required | Description |
|---|---|---|---|---|
| token | xxx | String | Yes | Query key |
| projectId | 0 | Integer | Yes | Project ID |
Request body parameters
{
"projectId": 0,
"eventView": {
"startTime": "2019-11-23 00:00:00",
"endTime": "2019-11-26 00:00:00",
"recentDay": "1-4",
"relation": "and",
"timeParticleSize": "day",
"filts": [
{
"columnName": "user_level",
"comparator": "equal",
"ftv": [
"5"
],
"tableType": "user"
}
],
"groupBy": [
{
"columnName": "#province",
"tableType": "event"
}
]
},
"events": [
{
"eventName": "obtain_item",
"relation": "and",
"filts": [
{
"columnName": "#province",
"comparator": "equal",
"ftv": [
"Jiangsu",
"Shanghai"
],
"tableType": "event"
}
]
}
],
"sliceFunnelStep": 1,
"sliceGroupVal": "['Shanghai']",
"timeoutSeconds": 10,
"zoneOffset": 10
}
Request parameters
| $$Parameter name | Example value | Parameter type | Required | Description |
|---|---|---|---|---|
| projectId | 0 | String | Yes | Description |
| eventView | - | Object | Yes | Same as the parameters of the Funnel Analysis query API |
| events | List | Yes | Same as the parameters of the Funnel Analysis query API | |
| sliceFunnelStep | 1 | Integer | Yes | Funnel step to drill down into, starting from 1 |
| sliceGroupVal | "['Shanghai']" | List | No | Group to drill down into |
| sliceWastageUser | false | Boolean | No | Whether the users churned. true: yes; false: no |
| timeoutSeconds | 10 | Integer | No | Request timeout. The query task is canceled when it times out |
| zoneOffset | 10 | Integer | No | Time zone |
Success response example
{
"data": {
"datalist": [
{
"#account_id": "u78082246",
"#distinct_id": "u145009846",
"user_level": 5,
"register_time": "2019-11-26 09:59:34",
"diamond_num": 1006,
"latest_login_time": "2019-11-26 11:14:12",
"channel": "Xiaomi GetApps",
"#user_id": 33463846
},
{
"#account_id": "k77655236",
"#distinct_id": "k144216836",
"user_level": 5,
"register_time": "2019-11-24 08:53:09",
"diamond_num": 1012,
"latest_login_time": "2019-11-24 10:02:38",
"channel": "Wandoujia",
"#user_id": 33280836
},
{
"#account_id": "a77648226",
"#distinct_id": "a144203826",
"user_level": 5,
"register_time": "2019-11-24 08:21:19",
"diamond_num": 1006,
"latest_login_time": "2019-11-24 09:32:31",
"channel": "Tencent MyApp",
"#user_id": 33277826
}
],
"columMeta": {
"#account_id": "Account ID",
"#distinct_id": "Distinct ID",
"user_level": "User level",
"register_time": "Registration time",
"diamond_num": "Current diamonds",
"first_recharge_time": "First top-up time",
"latest_login_time": "Last login time",
"channel": "Channel"
}
},
"return_code": 0,
"return_message": "success"
}
Response parameters
| $$Parameter name | Example value | Parameter type | Description |
|---|---|---|---|
| return_code | 0 | Integer | Return code |
| return_message | success | String | Return message |
| data | - | Object | Returned result |
| data.datalist | - | List<Map> | User information |
| data.columMeta | - | Map | Mapping of field meanings |
Error response example
{
"return_code": -1008,
"return_message": "Parameter (token) is empty"
}
| Parameter name | Example value | Parameter type | Description |
|---|---|---|---|
| return_code | -1008 | Integer | Return code |
| return_message | Parameter (token) is empty | String | Return message |
4. Funnel Analysis user list download
Endpoint URL
/open/streaming-download/funnel-user-list?token=xxx
Request method
POST
Content-Type
application/json
Request query parameters
| Parameter name | Example value | Parameter type | Required | Description |
|---|---|---|---|---|
| token | xxx | String | Yes | Query key |
Request body parameters
{
"eventView": {
"endTime": "2022-03-07 17:27:29",
"filts": [],
"groupBy": [],
"recentDay": "1-7",
"relation": "and",
"startTime": "2022-03-01 17:27:29",
"taIdMeasureVo": {
"columnDesc": "User ID",
"columnName": "#user_id",
"tableType": "event"
},
"windows_gap": 1,
"windows_gap_tu": "day"
},
"events": [{
"eventName": "Login",
"eventNameDisplay": "",
"filts": [],
"relation": "and"
}, {
"eventName": "LogOut",
"eventNameDisplay": "",
"filts": [],
"relation": "and"
}],
"projectId": 319,
"sliceFunnelStep": 1,
"sliceWastageUser": false,
"selectedColumns": ["#account_id", "#distinct_id"],
"zoneOffset": 10
}
Request parameters
| $$Parameter name | Example value | Parameter type | Required | Description |
|---|---|---|---|---|
| projectId | 0 | String | Yes | Description |
| eventView | - | Object | Yes | Same as the parameters of the Funnel Analysis query API |
| events | List | Yes | Same as the parameters of the Funnel Analysis query API | |
| sliceFunnelStep | 1 | Integer | Yes | Funnel step to drill down into, starting from 1 |
| sliceGroupVal | "['Shanghai']" | List | No | Group to drill down into |
| sliceWastageUser | false | Boolean | No | Whether the users churned. true: yes; false: no |
| selectedColumns | ["#account_id", "#distinct_id"] | Array | No | Columns to download |
| zoneOffset | 10 | Integer | No | Time zone |
Response
Same as the Funnel Analysis user list download in AE

