API de cohortes

Premium

De un vistazo: la API de reportes de cohortes proporciona a los anunciantes una forma programática de obtener datos de Cohorte. Utiliza la API para integrar datos de Cohorte en Business Intelligence y los sistemas de automatización de marketing.

API de reportes de cohortes

La API de reportes de cohortes se utiliza para obtener datos de rendimiento de campañas de cohortes de la plataforma AppsFlyer. Es funcionalmente equivalente al panel de control de Cohort

Consideraciones para desarrolladores

  • Fechas: las fechas o rangos de fechas se refieren a fechas de valor de vida útil (LTV), es decir, la fecha en que el usuario se atribuyó (convirtió) y no la fecha de la actividad en sí.
  • Valores booleanos: verdadero o falso (distinguen entre mayúsculas y minúsculas).
  • Tráfico de agencias transparente y no transparente: la fuente de medios del tráfico impulsado por agencias es siempre la agencia y no la fuente de medios original. En la actualidad, la versión de la interfaz de usuario (UI) de cohorte se comporta de manera diferente. 
  • Aplicación única: la API de cohortes es una solución de aplicación única. Esto contrasta con el panel de cohorte, que admite múltiples aplicaciones en una sola llamada. 
  • Actualización de los datos: consulta rasgos y limitaciones

Instrucciones de la API

Las secciones contienen la información necesaria para que puedas generar y utilizar la API de cohortes. 

Datos de la API de cohortes

Resumen general La llamada a la API consiste en la ruta, los encabezados y un JSON que contiene la consulta de datos. Los datos se devuelven por defecto en un archivo CSV.
Ruta

https://hq1.appsflyer.com/api/cohorts/v1/data/app/app_id

Parámetros de ruta (obligatorio)
  • app_id: es el identificador de la aplicación tal y como se encuentra en el panel de control de AppsFlyer. Insértalo exactamente como aparece en el panel de control.

Parámetros de consulta

(opcional)

Los resultados se devuelven como CSV o JSON. La estructura del archivo CSV es tabular mientras que la del JSON está orientada al registro.

  • [Predeterminado] csv el nombre del archivo depende de la consulta.
  • json que contiene una consulta y una sección de resultados
  • Ejemplo: format=json
  • https://hq1.appsflyer.com/api/cohorts/v1/data/app/app_id?format=json
Método HTTP POST
Tipos de contenido aceptado application/json
Autorización
  • Token de portador en el encabezado de la solicitud
  • Comunícate con tu CSM para habilitar la API de cohortes y luego obtén el token en el panel de control.
    • El mismo token se usa para todas las aplicaciones de la cuenta
Limitaciones de fecha
  • Fecha más temprana admitida: 730 días antes de la fecha actual (es decir, 2 años).
  • Rango máximo de consulta: 60 días.
Limitación de velocidad
  • Límite de tasa de llamadas a la API a 60 llamadas por minuto y 50 000 llamadas diarias por cuenta
  • Las consultas devuelven hasta 30 000 filas
Valores booleanos Siempre en minúsculas: true, false

Encabezados de solicitud

Clave

value Obligatorio
Tipo de contenido application/json Sí 
Authorization Portador api_token_placeholder Sí 
Aceptar application/json Sí 

Parámetros de filtrado y agrupación

Utiliza los siguientes parámetros de filtro para obtener los datos necesarios. 

Nombre de parámetro

Descripción Obligatorio 

cohort _type

El tipo de atribución de cohorte (conversión) es uno de los siguientes: user_acquisitionretargetingunified

  • Unified combina el rendimiento de las campañas de retargeting y adquisición de usuarios.
  • Si un evento se atribuye tanto a campañas de retargeting como a campañas de adquisición de usuarios, solo se incluye el evento de retargeting en los KPI devueltos, lo que significa que is_primary=true
  • Formato: Secuencia
  • Ejemplo: "cohort_type": "user_acquisition"

min_cohort_size

El tamaño mínimo de cohorte se utiliza para reducir el número de registros devueltos al excluir a las cohortes que tienen pocos usuarios. Esto significa que el KPI de los usuarios tiene un valor igual o mayor al especificado. 

  • Formato: entero
  • Valor mínimo permitido: 1. No enviar 0 (Cero)
  • Predeterminado: 1 
  • Ejemplo: "min_cohort_size": 50
No

from 

Límite inferior del rango de fechas de atribución de LTV. La fecha más temprana admitida es 720 días antes de la fecha actual. 

  • Formato: cadena aaaa-mm-dd
  • Ejemplo: "from": "2020-01-02"

a

Límite superior del rango de fechas de atribución del LTV.

  • Número de días en el rango: 1 a 31 días
  • Para un solo día: los valores from y to son idénticos. 
  • Formato: aaaa-mm-dd
  • Ejemplo: "from": "2020-01-01", "to": 2020-01-31 son 31 días.

granularity

Granularidad horaria para las 72 horas anteriores, estableciendo "granularity": "hour" y configurando el rango from y to para incluir la hora del día.

  • Formato: aaaa-mm-dd hh:mm:ss
  • Ejemplo:
"granularity": "hour", "from": "2021-12-01 14:00:00", "to": "2021-12-03 11:00:00",
No

partial_data

Para evitar distorsiones e interpretaciones erróneas de datos, la Cohorte devuelve los datos de días completos. Sin embargo, los datos de días parciales pueden ser útiles. 

El número de días completos de la cohorte para una consulta se calcula como la diferencia entre la fecha de hoy y la fecha to.

  • [Predeterminado] Si es false, se devuelven días completos.
  • Si es true, se devuelven hasta 180 días de cohorte, incluidos los días que tienen datos incompletos. 
  • Formato: booleano
  • Versión de interfaz de usuario de la plataforma: false

Ejemplo: El 10 de mayo, el número de días completos de la cohorte para los usuarios que se convertirían durante el 1-30 de abril, es de 10. 

  • Si es false [predeterminado], se devuelven los días 0-9 de la cohorte. Este es el número de días (10) entre la última fecha de conversión y hoy. 
  • Si es true, se devuelven los días 1-40 de la cohorte. Los días 11-40 contienen datos parciales y no se devuelven. Por ejemplo, desde el 20 de abril solo han transcurrido 20 días, y así sucesivamente.

Nota: Los datos parciales solo se permiten cuando el tipo de agregación es acumulativo.

 No

Filtros

Permite filtrar los datos y el período de días devueltos. Selecciona los filtros de la lista de dimensiones del filtro.

  • Formato: cadenas en un JSON anidado
  • Ejemplo de limitación a geolocalizaciones específicas: " filters": {"geo": "US"} incluye solo los usuarios atribuidos a Estados Unidos.
  • Ejemplo de días del período (cohorte): el filtro period establece los días para los que se devuelven las mediciones. Los valores posibles son: 0-180.
  • Predeterminado: si no se establece ningún filtro de período, se devuelven los días 0-30, 60, 90 y 180. Ejemplo de filtro con período
 No

Utiliza los siguientes parámetros de agrupación para incluir columnas adicionales y hacer que tus reportes sean menos granulares.

Parámetro

Valores Obligatorio 

groupings

Selección y formateo de KPI

  • La tabla enumera los KPI disponibles y sus funciones asociadas. Cuando llamas a un KPI, se devuelven todas sus funciones.
  • Los siguientes KPI siempre devuelven: usuarios, eCPI y costo. 
  • Selecciona un KPI adicional por llamada.
    Funciones
Predeterminado/ Opcional  KPI (nombre de dimensiones)  Recuento CVR (tasa de conversión) Calificación Suma Usuarios únicos
Cantidad Porcentaje Porcentaje Cantidad Cantidad
Siempre usuario(s) Y - - - -
Siempre eCPI - - Y - -
Siempre costo - - - Y -
OPCIONAL "event_name"(4)  Y Y - Y (3) Y
OPCIONAL ingresos Y - - Y -
OPCIONAL ROAS - - Y - -
OPCIONAL roi - - Y - -
OPCIONAL Sesiones Y - Y - Y(1)
OPCIONAL uninstalls (2) Y - Y - -

(1) Las sesiones únicas regresan cuando aggregation_type=on_day

(2) No disponible cuando cohort_type=unified 

(3) La suma significa los ingresos totales generados por el evento. En el reporte, esto se denomina sum_event_name"

(4) Nota: Los nombres de eventos distinguen entre mayúsculas y minúsculas.

Parámetro

Valores Parámetro obligatorio

KPIs

Selecciona un KPI de los KPI disponibles. En el futuro, planeamos permitir la selección de múltiples KPI.

  • Por cada KPI solicitado, se devuelven todas las funciones. 
  • Formato: cadenas en una matriz 
  • Ejemplo A: "kpis": ["sessions"]
  • Ejemplo B: "kpis": ["event_name"]

Presentación de las funciones de los KPI

Los siguientes parámetros de formato de KPI establecen el formato de los KPI devueltos. 

Parámetro

Valores Obligatorio 

preferred_currency

Divisa de los ingresos de KPI

  • Si es true, los ingresos se devuelven utilizando la divisa específica de la aplicación establecida en la plataforma. 
  • [Predeterminado] Si es false, los resultados se devuelven en USD.
  • Formato: Booleano 
  • Versión de la interfaz de usuario de la plataforma: true

 No

preferred_timezone

Zona horaria de rangos de datos

  • Si es true, las horas se expresan usando la zona horaria específica de la aplicación establecida en la plataforma.
  • [Predeterminado] Si es falso, las horas se expresan usando la zona horaria UTC.
  • Formato: Booleano 
  • Versión de la interfaz de usuario de la plataforma: true

 No

aggregation_type

  • Acumulado
  • on_day

"aggregation_type": "cumulative"

Formato: cadena

per_user

Divide la función KPI por el número de usuarios de la aplicación. Aplica únicamente a los KPI relevantes.

  • Si es true, los valores de KPI se dividen por el número de usuarios en la cohorte.
  • Si es false, los valores de KPI no se dividen por el número de usuarios.
  • Formato: Booleano 
  • Ejemplo si es true: el ingreso total es de 1000 dólares, el número de usuarios de la aplicación es de 500, el valor devuelto es de 2 dólares. 
 No

Lista de dimensiones de agrupamiento y filtro

Nombre de la dimensión 

Valor de API de la dimensión

Agrupaciones

Filtros

Anuncio

af_ad

Y

Y

ID de anuncio

af_ad_id

Y

Y

Campaña

C

Y

Y

ID de campaña

af_c_id

Y

Y

Canal

af_channel

Y

Y

Fuente de medios

PID

Y

Y

Subparámetro 1

af_sub1

Y

Y

Palabras clave

af_keywords

Y

Y

Agencia

af_prt

Y

Y

Tipo de conversión (1) 

cohort_type

Y

Y

ID de sitio

site_id

Y

Y

Tipo de ingresos (2)

revenue_type

Y

Tipo de toque atribuido (3)

attributed_touch_type

Y

Y

Conjunto de anuncios

af_adset

Y

Y

ID de conjunto de anuncios

af_adset_id

Y

 Y

País

geolocalización

Y

Y

Fecha (fecha de instalación/reatribución/re-engagement en el contexto del cohort_type seleccionado) 

fecha

Y

Periodo

period 

Explicación detallada

 

X

Y

Notas: 

Opciones de dimensión:

(1) Tipo de conversión:  user_acquisitionretargeting(re-engagement y re-attribution), unified

  • Al exportar:
    • re-engagement se mostrará como retargeting
    • re-attribution se mostrará como reattr

(2) Tipo de ingresos: regular, ad_monetization

(3) Tipo de toque atribuido: click, impression, TV, pre-installed

Ejemplo de curl

Este ejemplo contiene una llamada a la API completa.


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"
    ]
}'
Archivos de ejemplo devueltos: CSVJSON

Ejemplo de 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"))
   

Ejemplos de casos de uso

Ejemplo 1: Retención

Retención de fuentes de medios (sesiones) de los usuarios que instalaron la aplicación durante enero los días 7, 14 y 28 

{
  "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"
  ]
}

Ejemplo 2: Compras de campaña

Ingresos post-instalación el día 3 de la cohorte por campaña

{  
  "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"
  ]
}

Ejemplo 3: Actividad de ayer
¿Qué actividad realizaron ayer los usuarios que convirtieron (instalaron, volvieron a participar, re-atribuyeron) durante un período de conversión determinado? 

Utiliza los datos disponibles a través de Cohorte para Data Locker. El período de conversión se limita a los 360 días anteriores. 

 

Información adicional

Códigos de respuesta y resolución de problemas

Código de respuesta 

Mensaje

Observaciones 

200 OK

Datos válidos devueltos

200 OK
  • No se devuelven datos
    • La consulta era válida, pero no se encontraron datos que coincidan con la consulta. 
    • Verifica que el rango de fechas no incluya fechas futuras.
    • No se envió ningún token en la llamada. 
401 No autorizado
  • El token de autorización está mal formado. Comprueba que estés utilizando el token correcto, debe tener más de 700 caracteres de largo.
404 No se encuentra
  • Resuelve cualquier problema relacionado con la red, cortafuegos, etc. 
  • Asegúrate de que estés utilizando el token emitido más recientemente. Obtén el token actual desde el panel de control. 
  • Asegúrate de que la aplicación especificada en la ruta esté autorizada para usar la API de cohortes. Es decir, que sea parte del plan de suscripción. Un administrador de cuenta de AppsFlyer puede verificar esto en Mi Plan. 
 422 Entidad no procesable

Las razones comunes de este código de error son:

  • Asegúrate de que la solicitud esté contenida en un JSON y no se envíe como parámetros de la consulta. 
  • Asegúrate de que el JSON esté formateado de acuerdo con este documento.
  • Fecha ilegal

Estructura de nombres de archivos CSV

El nombre asignado a un archivo CSV que se devuelve se genera a partir de la consulta a la API. La estructura es la que se detalla en la tabla que sigue.

Ejemplo de nombre de archivo CSV

cohort_aggregation_type_per_user_kpi_report_app_id_from_to_timezone_currency_hash.csv
Variable Valores posibles
aggregation_type
  • on_day
  • Acumulado
per_user
  • per_user 
  • false: nulo 
KPI Ejemplo: sessions
app_id El ID de aplicación solicitado
desde Fecha from: formato aaaa-mm-dd
a Fecha to: formato aaaa-mm-dd
Zona horaria Zona horaria por defecto UTC
currency Código de divisa por defecto USD 
hash

Cadena hash alfanumérica, longitud=5

Uso de filtros de período

Período se refiere al día posterior a la atribución, donde el período 0 es el día de atribución. Por ejemplo, un usuario instala la aplicación el 1 de enero. Este es el día de la atribución. Una compra realizada en el período 0 significa que se realizó el 1 de enero. Una compra realizada en el período 3 significa que se realizó el 4 de enero. De igual manera, un usuario que instala el 11 de enero, este es el período 0. Una compra realizada el 14 de enero sería período 3.

Si el rango de fechas de tu reporte es del 1 al 11 de enero, se incluyen en el reporte los usuarios que atribuyeron (instalaron) durante este período. No se incluyen otros datos. 

  • El valor del período puede ser uno o más de los siguientes 0-180. Por ejemplo, 0, 1, 2, 30, 180. 
  • Si no se especifica ningún período, se devuelven los valores predeterminados 0, 1, 2 y así sucesivamente hasta 30, 60, 90 y 180.  

 Ejemplo de filtro de período

  • Este ejemplo contiene los parámetros de la consulta JSON, el raw data y el archivo CSV resultante.
  • La consulta filtra los períodos 0, 1 y 2 y el KPI seleccionado es revenue.
  • Como resultado, los datos devueltos contienen:
    • Las medidas de usuarios, costo y eCPI que siempre se devuelven 
    • Medidas de ingresos consistentes en suma y recuento para cada período, es decir, los períodos 0, 1 y 2. 

Consulta

{
    "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"
    ]
}

Raw Data

mceclip1.png

Resultados

mceclip0.png

Asignación de la interfaz de usuario a parámetros de API

Las cifras que siguen asignan la interfaz de usuario de las analíticas de cohorte a los parámetros de la API. Las dos soluciones: API e interfaz de usuario son similares pero no idénticas. 

La versión de la API tiene las siguientes opciones adicionales:

  • Selección de divisa
  • Selección de zona horaria
  • Filtrado por período
CohortMapping.jpg Cohortmapping2.jpg

Diferencia entre tipos de agregación

CohortRevnueCumulative.jpg

Rasgos y limitaciones

Característica Observaciones 
Acceso a la red de publicidad 

No. Los partners de gestión de campañas pueden usar la API si el anunciante otorga permiso. 

Acceso de agencias No
Transparencia de Agencias No se admite
Zona horaria específica de la aplicación
Moneda específica de la aplicación 
Limitaciones de tamaño Ninguna
Limitación de velocidad

Límite de tasa de llamadas a la API: 60 llamadas por minuto por cuenta 

datos orgánicos Disponible
Datos no orgánicos Disponible
Limitación de datos de costos
  • Los datos de costos son solo para campañas con al menos 1 instalación registrada.
  • AppsFlyer no reporta los datos de costos de las palabras clave que contienen letras mayúsculas en el reporte de cohortes o la API de cohortes.
  • No se pueden combinar algunas combinaciones de agrupamientos con el costo. Por ejemplo, Anuncios de Meta puede tener agrupamientos por geolocalización o canales, pero no ambos. La combinación exacta de agrupaciones depende de la red de publicidad.
Actualización de los datos

La actualización de los datos depende de partial_data de la siguiente manera: 

  • [Predeterminado] Si es false, diaria.
  • Si es true, continua (en tiempo real).
  • Las métricas de costos y desinstalaciones se actualizan diariamente en todas las instancias.
Historial de datos Cohorte diaria: 2 años
Acceso de usuario a la cuenta El token de autorización está disponible para los usuarios administradores en el panel de control.
Ingresos por anuncios

Para eventos af_ad_revenue, la métrica de usuarios únicos no está disponible cuando el tipo de agregación es "on day", para fechas entre el 5 de octubre de 2022 y el 16 de febrero de 2023.

Agrupaciones semanales y mensuales

Las agrupaciones de dimensiones semanales y mensuales no están disponibles con la API de cohortes. Utiliza el panel de control de cohortes.

API de cohortes
  • El período de conversión se denomina 0 (Hora 0 o Día 0). Al siguiente período posterior a la conversión se le denomina 1 (Hora 1 o Día 1), y así sucesivamente.
  • En AppsFlyer un período de cohorte no toma en cuenta la marca de tiempo de instalación específica. Más bien, las horas de cohorte se redondean a la hora más cercana y los días de cohorte se basan en el día calendario. Esto puede causar discrepancias al comparar los datos de cohortes de AppsFlyer con los datos de cohorte de otras redes, donde todos los períodos de cohorte están determinados por la marca de tiempo de instalación específica (es decir, una hora es 60 minutos después de la instalación, un día es el período post-instalación de 24 horas después de la marca de tiempo de instalación, etc.).