Cohort API

Premium

Visão geral: a API de relatórios de cohort, ou Cohort reporting API, permite que os anunciantes acessem dados de cohort de forma programática.Use a API para integrar dados de cohort em sistemas de BI e de automação de marketing.

API de relatórios de cohort

A API de relatórios de cohort é usada para obter dados de performance de campanhas de cohort na plataforma da AppsFlyer. É funcionalmente equivalente ao dashboard de Cohort

Observações para desenvolvedores

  • Datas: datas ou intervalos de datas referem-se às datas de lifetime value (LTV), ou seja, a data na qual o usuário foi atribuído (converteu) e não a data da atividade em si.
  • Valores booleanos: que podem ser true (verdadeiros) ou false (falsos) (com distinção de maiúsculas e minúsculas).
  • Tráfego de agência transparente e não transparente: o canal de mídia responsável pelo tráfego direcionado pela agência é sempre a agência e não o canal de mídia original. Atualmente, a versão da UI do cohort se comporta de maneira diferente. 
  • Aplicativo único: a Cohort API é uma solução de aplicativo único. Isso contrasta com o dashboard de Cohort, que oferece suporte a vários aplicativos em uma única chamada. 
  • Atualização de dados: veja características e limitações

Instruções da API

As seções contêm as informações necessárias para que você gere e use a Cohort API. 

Fatos da Cohort API

Visão geral A chamada da API consiste da URL de requisição, do cabeçalho e de um JSON contendo os parâmetros de consulta. Por padrão, os dados são retornados em um arquivo CSV.
URL de requisição

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

Parâmetros da requisição (obrigatórios)
  • app_id: é o identificador do aplicativo encontrado no dashboard da AppsFlyer. Insira-o exatamente como ele é exibido no dashboard.

Parâmetros de consulta

(opcional)

Os resultados retornam como CSV ou JSON. A estrutura do arquivo CSV é tabular, enquanto a do registro JSON é orientada.

  • [Padrão] csv - o nome do arquivo depende da consulta.
  • json - contendo uma seção de consulta e resultados
  • Exemplo: format=json
  • https://hq1.appsflyer.com/api/cohorts/v1/data/app/app_id?format=json
Método HTTP POST
Tipos de conteúdo aceitos application/json
Autorização
  • Token de portador no cabeçalho da solicitação
  • Entre em contato com seu CSM para ativar a Cohort API e, em seguida , obtenha o token no dashboard
    • O mesmo token é usado para todos os aplicativos da conta
Limitações de data
  • Data mais antiga suportada: 730 dias antes da data atual (ou seja, 2 anos).
  • Intervalo máximo de consulta: 60 dias.
Limitação de taxa
  • Limite de taxa de chamadas de API: 60 chamadas por minuto e 50.000 chamadas por dia por conta
  • As consultas retornam até 30.000 linhas
Valores booleanos Sempre em minúsculas: true, false

Solicitar cabeçalhos

Chave

Valor Obrigatório
Tipo de conteúdo application/json Sim 
Authorization Portador api_token_placeholder Sim 
Aceitar application/json Sim 

Parâmetros de filtragem e agrupamento

Use os parâmetros de filtro a seguir para obter os dados necessários. 

Nome do parâmetro

Descrição Obrigatório 

cohort _type

O tipo de atribuição (conversão) do cohort é um dos seguintes: user_acquisitionretargetingunified

  • Unified combina a performance de campanhas de aquisição de usuários e retargeting.
  • Se um evento for atribuído a campanhas de retargeting e de aquisição de usuários, somente o evento de retargeting será incluído nos KPIs retornados, o que significa is_primary=true
  • Formato: string
  • Exemplo: "cohort_type": "user_acquisition"
Sim

min_cohort_size

O tamanho mínimo do cohort é usado para reduzir o número de registros retornados, excluindo cohorts com poucos usuários. Isso significa que o KPI do usuário possui um valor igual ou superior ao valor especificado. 

  • Formato: número inteiro
  • Valor mínimo permitido: 1. Não enviar 0 (zero)
  • Padrão: 1 
  • Exemplo: "min_cohort_size": 50
Não

from 

Limite inferior do período de atribuição de LTV. A data mais antiga suportada é 720 dias antes da data atual. 

  • Formato: string aaaa-mm-dd
  • Exemplo: "from": "2020-01-02"
Sim

to

Limite superior do período de atribuição de LTV

  • Número de dias no intervalo: 1 a 31 dias
  • Para um único dia: os valores from e to são idênticos. 
  • Formato: aaaa-mm-dd
  • Exemplo: "from": "2020-01-01", "to": 2020-01-31 é 31 dias.
Sim

granularidade

Granularidade horária para as 72 horas anteriores definindo  "granularity": "hour" e definindo o intervalo from e to para incluir a hora do dia.

  • Formato: aaaa-mm-dd hh:mm:ss
  • Exemplo:
"granularity": "hour", "from": "2021-12-01 14:00:00", "to": "2021-12-03 11:00:00",
Não

partial_data

Para evitar distorção e má interpretação dos dados, o cohort retorna dados de dias completos. No entanto, os dados de dias parciais podem ser úteis. 

O número de dias de cohort completos para uma consulta é calculado como a diferença entre a data de hoje e a data final (to).

  • [Padrão] Se for "false", retorna dias completos.
  • Se for "true", retorna até 180 dias de cohort, incluindo dias com dados incompletos. 
  • Formato: booleano
  • Versão da UI da plataforma: false

Exemplo: em 10 de maio, o número de dias de cohort completos para usuários que realizaram conversões entre 1 e 30 de abril é 10. 

  • Se for "false" [padrão], com dias de cohort de 0-9 são retornados. Este é o número de dias (10) entre a última data de conversão e hoje. 
  • Se for "true", os dias de coorte 1 a 40 são retornados. Os dias 11 a 40 contêm dados parciais e não retornam. Por exemplo, desde 20 de abril, se passaram apenas 20 dias, e assim por diante.

Observação: dados parciais só são permitidos quando o tipo de agregação é cumulativo.

 Não

Filtros

Filtre os dados e os dias do período retornados. Selecione filtros na lista de dimensões de filtro.

  • Formato: JSON com strings aninhadas
  • Exemplo de limite para áreas geográficas específicas: "filters": {"geo": "US"} inclui apenas usuários atribuídos aos Estados Unidos. 
  • Exemplo de dias em um período (cohort): o filtro period define os dias para os quais as métricas são retornadas. Os valores possíveis são: 0-180.
  • Padrão: se nenhum filtro de "period" for definido, os dias 0 a 30, 60, 90 e 180 serão retornados. Exemplo de filtro com "period"
 Não

Use os parâmetros de agrupamento a seguir para incluir colunas adicionais e reduzir a granularidade dos seus relatórios.

Parâmetro

Valores Obrigatório 

agrupamentos

  • Selecione de 1 a 7 agrupamentos na lista de dimensões.
  • Formato: sequências em uma matriz
  • Example: "groupings": ["af_ad", "c", "af_c_id", "af_prt"]
Sim

Selecionando e formatando KPIs

  • A tabela lista os KPIs disponíveis e suas funções associadas. Quando você chama um KPI, todas as suas funções retornam.
  • Os seguintes KPIs sempre retornam: usuários, ecpi e custo 
  • Selecione um KPI adicional por chamada.
    Funções
Padrão/Opcional  KPI (nome das dimensões)  Contagem cvr (taxa de conversão) Taxa Soma Usuários únicos
Número Percentual Percentual Número Número
Sempre usuários S - - - -
Sempre eCPI - - S - -
Sempre custo - - - S -
Opctional "event_name"(4)  S S - S (3) S
Opctional receita S - - S -
Opctional ROAS - - S - -
Opctional roi - - S - -
Opctional sessões S - S - S (1)
Opctional desinstalações (2) S - S - -

(1) Sessões únicas retornam quando agregation_type=on_day

(2) Não disponível quando cohort_type=unified 

(3) Soma significa a receita total gerada pelo evento. No relatório, isso é indicado por sum_event_name"

(4) Atenção! Os nomes dos eventos diferenciam maiúsculas de minúsculas

Parâmetro

Valores Parâmetro obrigatório

kpis

Selecione um KPI dentre os KPIs disponíveis. No futuro, permitiremos a seleção de vários KPIs.

  • Para cada KPI solicitado, todas as funções são retornadas. 
  • Formato: sequências em uma matriz 
  • Exemplo A: "kpis": ["sessions"]
  • Exemplo B: "kpis": ["event_name"]
Sim

Apresentação de funções de KPI

Os seguintes parâmetros de formato de KPI definem o formato dos KPIs retornados. 

Parâmetro

Valores Obrigatório 

preferred_currency

Moeda de receita do KPI

  • Quando "true", a receita será retornada usando a moeda específica do aplicativo definida na plataforma. 
  • [Padrão] Quando "false", os resultados serão retornados em USD.
  • Formato: booleano 
  • Versão da interface da plataforma: true

 Não

preferred_timezone

Fuso horário dos intervalos de dados

  • Quando "true", os horários serão exibidos usando o fuso horário específico do aplicativo definido na plataforma.
  • [Padrão] Quando "false", os horários serão exibidos usando o fuso horário UTC.
  • Formato: booleano 
  • Versão da interface da plataforma: true

 Não

aggregation_type

  • cumulativo
  • on_day

"aggregation_type": "cumulative"

Format: string

Sim

per_user

Divida a função KPI pelo número de usuários do aplicativo. Aplica-se apenas a KPIs relevantes.

  • Quando "true", os valores de KPI serão divididos pelo número de usuários na cohort.
  • Quando "false", os valores de KPI não serão divididos pelo número de usuários.
  • Formato: booleano 
  • Exemplo em caso de "false": a receita total é de US$ 1.000, o número de usuários do aplicativo é 500, o valor retornado é de US$ 2. 
 Não

Lista de dimensões agrupar e filtrar por

Nome da dimensão 

Valor da API de dimensão

Agrupamentos

Filtros

Anúncio

af_ad

S

S

ID do anúncio

af_ad_id

S

S

Campanha

C

S

S

ID da campanha

af_c_id

S

S

Canal

af_channel

S

S

Fonte de mídia

pid

S

S

Subparâmetro 1

af_sub1

S

S

Palavras-chave

af_keywords

S

S

Agência

af_prt

S

S

Tipo de conversão (1) 

cohort_type

S

S

Site ID

site_id

S

S

Tipo de receita (2)

revenue_type

S

Tipo de toque atribuído (3)

attributed_touch_type

S

S

Conjunto de anúncios

af_adset

S

S

Adset ID

af_adset_id

S

 S

País

geolocalização

S

S

Data (data de instalação/reatribuição/reengajamento no contexto do cohort_type selecionado) 

data

S

Período

período 

Explicação detalhada

 

X

S

Observações:

Opções de dimensão:

(1) Tipo de conversão:  user_acquisitionretargeting(re-engagement e re-attribution), unified

  • Ao exportar:
    • reengajamento será exibido como retargeting
    • reatribuição será exibida como reattr

(2) Tipo de receita: regular, ad_monetization

(3) Tipo de toque atribuído: clique, impressão, TV, pré-instalado

Exemplo de ondulação

Este exemplo contém uma chamada de 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"
    ]
}'
Arquivos de exemplo retornados: CSVJSON

Exemplo 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"))
   

Exemplos de casos de uso

Exemplo 1: Retenção

Retenção de fontes de mídia (sessões)  de usuários que instalaram o aplicativo em janeiro, nos dias 7, 14 e 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"
  ]
}

Exemplo 2: compras feitas em uma campanha

Receita pós-instalação do dia 3 da cohort, por campanha

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

Exemplo 3: atividades de ontem
Quais foram as atividade que os usuários que converteram (instalaram, reengajaram, foram reatribuídos) realizaram durante um determinado período de conversão no dia anterior? 

Use os dados disponíveis via Cohort para Data Locker. O período de conversão é limitado aos 360 dias anteriores. 

 

Informações adicionais

Códigos de resposta e identificação e solução de problemas

Código de resposta 

Mensagem

Observação 

200 OK

Dados válidos retornados

200 OK
  • Nenhum dado é retornado
    • A consulta era válida, mas nenhum dado correspondente à consulta foi encontrado. 
    • Verifique se o intervalo de datas não inclui datas futuras.
    • Nenhum token foi enviado na chamada. 
401 Não autorizado
  • O token de autorização está malformado, verifique se você está usando o token correto, ele deve ter mais de 700 caracteres
404 Não encontrado
  • Acabe com qualquer problema relacionado à rede, firewall, etc. 
  • Certifique-se de que você está usando o token mais recente. Descubra qual é a versão mais recente do token no dashboard. 
  • Certifique-se de que o aplicativo especificado no caminho esteja autorizado a usar a API de cohort. Isso significa que ele faz parte do plano de assinatura. Seu administrador da conta da AppsFlyer pode verificar isso em Meu plano. 
 422 Entidade não processável

Os motivos comuns para esse erro são:

  • A solicitação precisa estar em formato JSON e não pode ser enviada como um parâmetro de consulta. 
  • O JSON precisa estar formatado de acordo com esse documento.
  • A data usada não é permitida

Estrutura de nome de um arquivo CSV

O nome de um arquivo CSV retornado é gerado a partir da consulta da API. A estrutura está detalhada na tabela a seguir.

Exemplo de nome de um arquivo CSV

cohort_aggregation_type_per_user_kpi_report_app_id_from_to_timezone_currency_hash.csv
Variável Valores possíveis
aggregation_type
  • on_day
  • cumulativo
per_user
  • per_user 
  • false: Null 
KPI Exemplo: sessões
app_id O ID do aplicativo solicitado
a partir de data de (from): formato aaaa-mm-dd
to data até (to): formato aaaa-mm-dd
fuso horário Fuso horário padrão UTC
currency Código de moeda padrão USD 
hash

Comprimento da string anonimizada alfanumérica = 5

Usando filtros de período

O período refere-se ao dia pós-atribuição, onde o período 0 é o dia da atribuição. Por exemplo, um usuário instala o aplicativo em 1 de janeiro. Esse é o dia da atribuição. Uma compra feita no período 0 significa que ela foi feita em 1 de janeiro. Uma compra feita no período 3 significa que ela foi feita em 4 de janeiro. Da mesma forma, quando um usuário instala o app em 11 de janeiro, esse passa a ser seu período 0 específico. Assim, uma compra feita em 14 de janeiro seria o período 3.

Se o intervalo de datas do seu relatório for de 1 a 11 de janeiro, os usuários que atribuíram (instalaram) durante esse período serão incluídos no relatório. Nenhum outro dado está incluído. 

  • O valor do período pode ser um ou mais de 0-180. Por exemplo, 0, 1, 2, 30, 180. 
  • Se nenhum período for especificado, os valores padrão de 0, 1, 2 até 30, 60, 90 e 180 serão retornados.  

 Exemplo de filtro de período

  • Este exemplo contém os parâmetros de consulta JSON, dados brutos e arquivo CSV resultante.
  • A consulta filtra o período de 0, 1 e 2 e o KPI selecionado é receita.
  • Como resultado, os dados retornados contêm:
    • As métricas de usuários, custo e ecpi, que sempre retornam 
    • Métricas de receita que consistem em soma e contagem para cada período, significando os períodos 0, 1 e 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"
    ]
}

Dados brutos

mceclip1.png

Resultados

mceclip0.png

Mapeamento da interface do usuário para parâmetros de API

As imagens abaixo mapeiam a interface do usuário da análise de cohort para os parâmetros da API. As duas soluções – API e interface do usuário são semelhantes, mas não idênticas. 

A versão da API possui as seguintes opções adicionais:

  • Seleção de moeda
  • Seleção de fuso horário
  • Filtrar por período
CohortMapping.jpg Cohortmapping2.jpg

Diferença entre tipos de agregação

CohortRevnueCumulative.jpg

Características e limitações

Característica Observações 
Acesso à ad network 

Não. Os parceiros de gerenciamento de campanha podem usar a API se o anunciante conceder permissão. 

Acesso das agências Não
Transparência da agência Não compatível
Fuso horário específico do aplicativo Sim
Moeda específica do aplicativo  Sim
Limitações de tamanho Nenhum
Limitação de taxa

Limite de taxa de chamadas de API: 60 chamadas por minuto por conta 

Dados orgânicos Disponível
Dados não orgânicos Disponível
Limitação de dados de custo
  • Os dados de custo referem-se apenas a campanhas com pelo menos uma instalação registrada.
  • A AppsFlyer não informa dados de custo para palavras-chave que contenham letras maiúsculas no relatório de cohort ou na API de cohort
  • Você não pode mesclar algumas combinações de agrupamentos com custo. Por exemplo, o Meta Ads pode ter agrupamentos por geolocalização ou por canal, mas não ambos. A combinação exata de agrupamentos depende da ad network.
Atualização de dados

A atualização dos dados depende de parcial_data da seguinte forma: 

  • [Padrão] Quando "false", Diariamente
  • Quando "true", Contínuo (tempo real)
  • As métricas de custo e desinstalação são atualizadas diariamente em todas as instâncias
Dados históricos Cohort diária: 2 anos
Acesso do usuário da conta O token de autorização está disponível no dashboard para administradores.
Receita de anúncios

Para eventos af_ad_revenue, a métrica de usuários únicos não está disponível quando o tipo de agregação é "no dia", para datas entre 5 de outubro de 2022 e 16 de fevereiro de 2023.

Agrupamentos semanais e mensais

Os agrupamentos de dimensões semanais e mensais não estão disponíveis com a Cohort API. Use o dashboard Cohort.

Cohort API
  • O período de conversão é definido como 0 (Hora 0 ou Dia 0). O próximo período após a conversão é definido como 1 (Hora 1 ou Dia 1) e assim por diante.
  • Na AppsFlyer, um período de cohort não leva em consideração o timestamp de data/hora específico da instalação. Em vez disso, as horas da cohort são arredondadas para a hora mais próxima e os dias da cohort se baseiam no dia do calendário. Isso pode causar discrepâncias na comparação entre os dados de cohort da AppsFlyer e os dados de cohort de outras ad networks, onde todos os períodos de cohort são determinados pelo timestamp de data/hora de instalação específico (ou seja, uma hora equivale a 60 minutos após o timestamp de data/hora da instalação e um dia é o período de 24 horas após a instalação depois do timestamp de data/hora da instalação).