概要:群组报告API能让广告主以程序化的方式来获取群组数据。您可以使用该API将群组数据集成到您的BI以及营销自动化系统中。
群组报告API
群组报告API用于从AppsFlyer平台获取不同用户群组的投放效果数据,其功能相当于群组面板。
开发人员注意事项
- 日期:这里的日期或日期范围是指生命周期价值(LTV)维度的日期,即用户被归因(激活转化)的日期,而不是具体用户行为发生的日期。
- 布尔值:true或false(区分大小写)。
- 透明或不透明的代理流量:由代理的渠道带来的流量总是显示为代理的流量,而非具体渠道。这与目前的群组面板有所不同。
- 仅限单个应用:群组报告API是一个单应用解决方案。这与群组面板不同,面板可一次调用多个应用的数据。
- 数据时效性:详情请见特点和局限性部分。
API使用指南
本节主要讲解如何生成并使用群组报告API。
群组报告API要点简介
概述 | 群组报告API的调用由路径、header、以及包含数据查询的JSON组成,并默认以CSV文件的形式返回数据。 |
路径 |
|
路径参数(必须配置) |
|
查询参数 (可选) |
以CSV或JSON格式返回数据。CSV格式是纯文本的表格,而JSON格式则更为结构化。 |
HTTP方法 | POST |
适用格式 | application/json |
授权 |
|
日期限制 |
|
拉取频次限制 |
|
布尔值 | 总是以小写字母显示:true、false |
Request header(请求头)
键 |
值 | 是否必须配置 |
---|---|---|
Content-Type | application/json |
是 |
Authorization | Bearer api_token_placeholder |
是 |
Accept | application/json |
是 |
筛选及分组参数
您可以使用下列参数筛选出您需要的数据。
参数名称 |
说明 | 是否必须配置 |
---|---|---|
cohort _type |
可能出现的群组归因(转化)类型为:
|
是 |
min_cohort_size |
群组体量下限可排除用户数量较少的群组,从而减少返回的数据条数。也就是说用户KPI的值不小于您指定的群组体量下限。
|
否 |
from |
LTV归因日期范围的开始日期,最早可设为当前日期之前的720天。
|
是 |
to |
LTV归因日期范围的截止日期
|
是 |
granularity |
过去72小时的数据颗粒度可精确到小时数。如需查看精确到小时数的数据,请发送
"granularity": "hour",
"from": "2021-12-01 14:00:00", "to": "2021-12-03 11:00:00",
|
否 |
partial_data |
为了避免数据失真和误判,群组报告会返回天数完整的数据。但广告主有时可能需要查看天数不完整的数据。 针对某个查询的同类群组完整天数 = 当前日期 - to日期。
示例:假设4月1日到30日之间转化的用户为一个群组,到5月10日,该群组的完整天数为10天。
请注意:仅在汇总类型为“累计”时才能拉取不完整数据。 |
否 |
filters |
您可以按归因后天数及其他条件对返回的数据进行筛选。可用的筛选条件请见筛选维度列表。
|
否 |
您可以使用以下分组参数在报告中添加字段,帮助您更为宏观地了解数据。
参数 |
值 | 是否必须配置 |
---|---|---|
groupings |
|
是 |
选择KPI并调整格式
- 下表列出了可用的KPI以及各KPI对应的函数,调用某个KPI时会返回其对应的所有函数。
- 拉取报告时默认包含的KPI为:users(用户)、ecpi(有效平均激活成本)以及cost(成本)。
- 每次调用仅限发送一个可选KPI。
功能 | ||||||
---|---|---|---|---|---|---|
默认/可选 | KPI(维度名称) | 数量 | cvr(转化率) | 比率 | 总和 | 独立用户数 |
数字 | 百分比 | 百分比 | 数字 | 数字 | ||
默认 | users(用户) | Y | - | - | - | - |
默认 | eCPI(有效平均激活成本) | - | - | Y | - | - |
默认 | cost(成本) | - | - | - | Y | - |
可选 | "event_name" (4) |
Y | Y | - | Y (3) | Y |
可选 | revenue(收入) | Y | - | - | Y | - |
可选 | ROAS(广告支出回报率) | - | - | Y | - | - |
可选 | ROI(投资回报率) | - | - | Y | - | - |
可选 | sessions(应用打开) | Y | - | Y | - | Y(1) |
可选 | uninstalls(卸载)(2) | Y | - | Y | - | - |
(1) aggregation_type=on_day 时返回独立session(应用打开)数据。 (2) cohort_type=unified时不可用。 (3) 这里的总和是指定事件产生的收入总和,在报告中显示为 (4) 请注意:事件名称区分大小写 |
参数 |
值 | 是否必须配置 |
---|---|---|
kpis |
从可用KPI中选择一个。AF后续计划开放多个KPI复选功能。
|
是 |
KPI函数的表达
您可以使用下列KPI格式参数设置报告中的KPI格式。
参数 |
值 | 是否必须配置 |
---|---|---|
preferred_currency |
KPI收入的货币单位
|
否 |
preferred_timezone |
日期范围的时区
|
否 |
aggregation_type |
|
是 |
per_user |
由KPI值除以用户数得出。仅适用于相关KPI。
|
否 |
分组及筛选维度列表
维度名称 |
维度API值 |
分组 |
筛选条件 |
---|---|---|---|
Ad(广告) |
af_ad |
Y |
Y |
Ad ID(广告ID) |
af_ad_id |
Y |
Y |
Campaign(广告系列) |
C |
Y |
Y |
Campaign ID(广告系列ID) |
af_c_id |
Y |
Y |
Channel(流量入口) |
af_channel |
Y |
Y |
Media Source(媒体渠道) |
PID |
Y |
Y |
Sub Param 1(可配置参数1) |
af_sub1 |
Y |
Y |
Keywords(关键词) |
af_keywords |
Y |
Y |
Agency(代理) |
af_prt |
Y |
Y |
Conversion Type(转化类型)(1) |
cohort _type |
Y |
Y |
Site ID(子渠道) |
site_id |
Y |
Y |
Revenue Type(收入类型)(2) |
revenue_type |
x |
Y |
Attributed Touch Type(归因触点类型)(3) |
attributed_touch_type |
Y |
Y |
Adset(广告组) |
af_adset |
Y |
Y |
Adset ID(广告组ID) |
af_adset_id |
Y |
Y |
Country(国家) |
geo |
Y |
Y |
Date(根据选定的cohort_type所定义的激活/再归因/再互动日期) |
date |
Y |
x |
Period(归因后天数) |
period
|
X |
Y |
备注: 可选维度: (1) Conversion Type(转化类型):
(2) Revenue Type(收入类型): click 、impression 、TV 、pre-installed
|
Curl示例
本示例包含完整的API调用。
curl -L -X POST 'https://hq1.appsflyer.com/api/cohorts/v1/data/app/<insert your app_id here>?format=<insert results format here>' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <cohort_api_token_placeholder. Note the token has more than 700 characters.>' \
-H 'Accept: application/json' \
--data-raw '{
"cohort_type": "user_acquisition",
"min_cohort_size": 1,
"preferred_timezone": false,
"from": "2020-01-01",
"to": "2020-01-31",
"filters": {
"period": [
0,
1,
2,
10,
30,
60
],
"geo": [
"US",
"CN"
],
"pid": [
"Meta ads",
"googleadwords_int"
]
},
"preferred_currency": true,
"aggregation_type": "on_day",
"per_user": false,
"groupings": [
"pid",
"date"
],
"kpis": [
"sessions"
]
}'
示例返回的报告:CSV格式、JSON格式
Python示例
import http.client
import mimetypes
conn = http.client.HTTPSConnection("hq1.appsflyer.com")
payload = "{\r\n \"cohort_type\": \"user_acquisition\",\r\n \"min_cohort_size\": 1,\r\n \"preferred_timezone\": false,\r\n \"from\": \"2020-05-01\",\r\n \"to\": \"2020-05-10\",\r\n \"preferred_currency\": true,\r\n \"aggregation_type\": \"cumulative\",\r\n \"per_user\": false, \r\n \"groupings\": [\r\n \"pid\",\r\n \"date\"\r\n ],\r\n \"kpis\": [\r\n \"roas\"\r\n ]\r\n}"
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer [Enter token here]',
'Accept': 'application/json',
'Content-Type': 'application/json'
}
conn.request("POST", "/api/cohorts/v1/data/app/[My App ID here]?format=csv", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
使用场景
示例1:留存
在1月期间激活应用的用户在群组第7天、第14天和28天的分渠道留存(session)数据
{
"per_user": false,
"groupings": [
"pid"
],
"filters": {
"period": [
7, 14, 28
]
},
"partial_data": false,
"aggregation_type": "on_day",
"min_cohort_size": 1,
"cohort_type": "user_acquisition",
"from": "2021-01-01",
"to": "2021-01-30",
"kpis": [
"sessions"
]
}
示例2:分广告系列的购买数据
激活后群组第3天的分广告系列收入数据
{
"per_user": false,
"groupings": [
"c"
],
"filters": {
"period": [
3
],
"c":[
"example_campaign_name"
]
},
"partial_data": false,
"aggregation_type": "cumulative",
"min_cohort_size": 1,
"cohort_type": "user_acquisition",
"from": "2021-01-01",
"to": "2021-01-30",
"kpis": [
"Checkout Start"
]
}
示例3:昨日用户行为
查看在指定转化时段内转化(激活、再互动、再归因)的用户在昨天完成了什么操作。
您可以通过Data Locker群组报告中的可用数据获取该信息。转化时段需限制在前360天之内。
其他信息
相应代码及问题排查
响应代码 |
响应消息 |
说明 |
---|---|---|
200 | OK |
返回有效数据 |
200 | OK |
|
401 | Unauthorized (无权限) |
|
404 | Not found (不存在) |
|
422 | Unprocessable entity (无法处理) |
出现该错误代码时,请:
|
CSV文件名结构
返回的CSV文件名是基于API查询生成的,具体的文件名结构如下表所示。
CSV文件名示例
cohort_aggregation_type_per_user_kpi_report_app_id_from_to_timezone_currency_hash.csv
变量 | 可能出现的值 |
---|---|
aggregation_type |
|
per_user |
|
kpi | 如sessions |
app_id | 请求的应用ID |
from | from开始日期的格式为:yyyy-mm-dd |
to | to截止日期的格式为:yyyy-mm-dd |
timezone | 默认时区为UTC |
currency | 默认货币代码为USD |
hash |
含字母和数字的5字符哈希字符串 |
period(归因后天数)筛选条件使用方式
Period是指归因后的天数,period 0即为归因当天(归因日)。假设某用户在1月1日激活应用,1月1日则为归因日。在period 0发生的购买事件即为用户在1月1日完成的购买;在period 3发生的购买事件即为用户在1月4日完成的购买。同理,对于在1月11日激活的用户,1月11日即为period 0,其在1月14日完成的购买即为period 3的购买事件。
如果您的报告日期范围设置为1月1日至1月11日,则返回的数据仅限在这段时间内归因(激活)的用户,而不包含其他数据。
- period可以是0-180之间的一个或多个值,如0、1、2、30、180。
- 如果没有指定period,则报告会根据默认值0、1、2到30、60、90和180返回数据。
period筛选条件使用示例
- 该示例包含JSON查询参数、原始数据以及返回的CSV文件。
- 查询筛选period 0、1和2,并选择revenue(收入)为KPI。
- 返回的数据包含:
- 默认返回的用户、成本和ecpi数据
- 收入数据,包括收入总和以及每个period(即period 0、1和2)的收入。
查询
{
"cohort_type": "user_acquisition",
"min_cohort_size": 1,
"preferred_timezone": false,
"from": "2019-12-01",
"to": "2020-01-01",
"filters": {
"period": [
0,
1,
2
]
},
"aggregation_type": "on_day",
"per_user": false,
"groupings": [
"pid"
],
"kpis": [
"revenue"
]
}
原始数据
结果
面板与API参数之间的映射
特点和局限性
特点 | 说明 |
---|---|
广告平台访问权限 |
无。自动化投放平台可在广告主开放权限后使用API。 |
代理访问权限 | 否 |
代理数据透明化 | 不支持 |
应用层级指定时区 | 是 |
应用层级指定货币 | 是 |
大小限制 | 无 |
拉取频次限制 |
API调用频次限制:每个账户每分钟限60次。 |
自然量数据 | 可用 |
非自然量数据 | 可用 |
成本数据局限性 |
|
数据时效性 |
数据时效性取决于partial_data的值,具体如下:
|
历史数据 | 每日群组数据:2年 |
账户用户权限 | AF账户管理员可在面板中查看身份验证token |
广告收入 |
对于af_ad_revenue事件,如果您将汇总类型设置为“当天”,则2022年10月5日到2023年2月16日之间的独立用户指标不可用。 |
按周和按月分组 |
群组API不支持按周或按月分组。如需查看这两个维度的数据,请使用群组面板。 |
群组报告API |
|