コホートAPI

プレミアム機能

概要:コホートレポートAPIは、プログラム的にコホートデータを取得する方法を広告主に提供します。APIを使用して、コホートデータをBI、およびマーケティングオートメーションシステムに統合できます。

コホートレポートAPI

コホートレポートAPIは、AppsFlyerプラットフォームからコホートキャンペーンパフォーマンスデータを取得するために使用されます。これはコホート管理画面と機能的に同等です。

関連記事:コホートの種類の違い

開発者向けの考慮事項

  • 日付:日付または日付期間は生涯価値 (LTV) の日付であり、つまりユーザーが計測された日(コンバージョン日)で、アクティビティが発生した日ではありません。
  • ブーリアン値:tue または falseです(大文字と小文字を区別)。
  • 情報開示と開示しない代理店のトラフィック:代理店が運用するメディアソースのトラフィックは常に代理店名であり、元のメディアソースではありません。現時点では、コホートのUIバージョンの動作は異なります。
  • 単一アプリ:コホートAPIは単一アプリ向けのソリューションです。これは、1つのコールで複数アプリをサポートするコホート管理画面とは対照的です。
  • データ更新頻度:特定と制限事項を参照してください。

APIの手順

このセクションには、コホートAPIを生成し使用するために必要な情報が含まれます。

コホートAPIの仕様

オーバービュー APIコールは、パス、ヘッダー、データクエリを含むJSONで構成されます。デフォルトでは、データはCSVファイルで出力されます。
パス

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

パスのパラメータ(必須)
  • app_id: AppsFlyer管理画面で表示されるアプリ識別子です。管理画面に表示されるとおりに正確に入力してください。

クエリパラメータ―

(オプション)

結果はCSV または JSONで取得されます。CSVファイルの構造はテーブル形式ですが、JSONの構造はレコード形式です。

  • [デフォルト] csv ファイル名はクエリにより異なります。
  • json はクエリと結果を含みます。
  • 例:format=json
  • https://hq1.appsflyer.com/api/cohorts/v1/data/app/app_id?format=json
HTTP メソッド POST
受け入れ可能なcontent types application/json
Authorization
  • ベアラトークンはリクエストヘッダーに含まれます。
  • コホートAPIを有効にするよう担当CSMまでご連絡いただき、トークンを管理画面から取得します。
    • 同じトークンがアカウント内のすべてのアプリに使用されます。
日付の制限
  • 過去データのサポート範囲:現在から730日前まで(2年間)
  • 最大クエリ範囲:60日間
レート制限
  • APIコールレート制限は、アカウントあたり、1分間につき60コール、1日につき50,000コールまで。
  • クエリは最大 10,000 行のデータを取得します。
ブーリアン値 常に小文字で:truefalse

リクエストヘッダー

Key

value 必須
Content-Type application/json はい 
Authorization Bearer api_token_placeholder はい 
Accept application/json はい 

フィルターとグループ化のパラメーター

次のフィルターパラメーターを使用して、必要なデータを取得します。 

項目

説明 必須 

cohort _type

コホートアトリビューション (コンバージョン) タイプは、次のいずれかです : ユーザー獲得リターゲティング全体

  • 「全体」は、ユーザー獲得とリターゲティングキャンペーンのパフォーマンスを組み合わせます。
  • リターゲティングとユーザー獲得キャンペーンの両方にイベントの成果が紐づいている場合、返されるKPIにはリターゲティングイベントのみが含まれます。つまり、is_primary=trueとなります。
  • フォーマット:文字列
  • 例:"cohort_type": "user_acquisition"
はい

min_cohort_size

最小コホートサイズは、小数ユーザーのみを含むコホートを除外することで、返されるレコード数を減らすために使用されます。つまり、ユーザー のKPI は、指定された値と同等かより大きい値を持つことを意味します。

  • 形式:整数
  • 最小許容値:1。ゼロ (0)は送信しないでください。
  • デフォルト:1
  • 例:"min_cohort_size": 50
いいえ

from 

LTVアトリビューション日付期間の下限。過去データのサポート範囲は、現在から730日前までです。

  • 形式:文字列 yyyy-mm-dd
  • 例:"from": "2020-01-02"
はい

to

LTVアトリビューション日付期間の上限。

  • 範囲内の日数:1~31日
  • 1日のみの場合:fromto の値は同一になります。
  • 形式: yyyy-mm-dd
  • 例:"from": "2020-01-01", "to": 2020-01-31 は31日間です。
はい

granularity

過去72時間分の1時間ごとの粒度。"granularity": "hour" と設定し、fromto の範囲に時間を含めることで設定します。

  • 形式:yyyy-mm-dd hh:mm:ss
  • 例:
"granularity": "hour", "from": "2021-12-01 14:00:00", "to": "2021-12-03 11:00:00",
いいえ

partial_data

データの歪みや誤解釈を避けるために、コホートは完全な日のデータを返します。ただし、日数未満のデータが役に立つことがあります。

クエリに対する完全なコホート日数は、今日の日付と to の日付の差として計算されます。

  • [デフォルト] falseの場合、完全な日数が戻ります。
  • trueの場合、不完全なデータを持つ日を含む 180日までの日付が返されます。
  • 形式:ブーリアン
  • フラットフォームUI版:false

:5月10日に、4月1日~30日の間にコンバージョンがあったユーザーの完全なコホート日数は、10です。

  • false の場合 [デフォルト]、コホート日数0~9日が戻ります。これは、最後のコンバージョン日から今日までの日数 (10) です。
  • trueの場合、コホート日数1〜40が戻ります。11~40日目は一部のデータのみが含まれ、データは戻りません。例えば、4月20日以降は、20日しか経過してない、等。

:部分的なデータは、集計タイプが累積的な場合にのみ許可されます。

いいえ

filters

返されたデータと期間の日数を絞り込みます。フィルタのディメンション一覧からフィルタを選択します。

  • 形式:JSON内の文字列
  • 特定の地域に限定する例:"filters": {"geo": "US"} は米国に紐づくユーザーのみが含まれます。
  • 期間 (コホート)日数の例:期間フィルタはどの期間の計測結果が返されるかを設定します。設定できる値:0-180。
  • デフォルト:期間フィルタが設定されていない場合、日数は0-30、60、90、および180が返されます。 期間フィルタの例
いいえ

次のグループ化パラメーターを使用して、追加の列を含め、レポートの粒度を下げます。

パラメータ名

必須 

groupings

はい

KPIの選択とフォーマット

  • この表では、利用できるKPIのリストとそれに関する関数を示しています。KPIを呼び出すとそのすべての関数が返されます。
  • 次のKPIは常に返されます:users、ecpi、cost 
  • コールごとに追加KPIを1つ選択します。
    関数
デフォルト/オプション KPI (ディメンション名) カウント cvr (コンバージョン率) 評価 合計 ユニークユーザー
数値 割合 割合 数値 数値
常に ユーザー 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 の場合、ユニークセッションが返されます。

(2) cohort_type=unified の場合は利用できません。

(3) 合計とは、イベントで発生した収益の合計を意味します。レポートでは、これを sum_event_name と表しています。

(4) 注!イベント名は大文字小文字を区別します。

パラメータ名

必須パラメータ

KPI

使用可能なKPIからKPIを1つ選択します。 将来的に複数のKPIが選択可能になる予定です。

  • リクエストされた各KPIについて、全ての関数が返されます。
  • 形式:配列内の文字列
  • 例 A: "kpis": ["sessions"]
  • 例B:"kpis": ["event_name"]
はい

KPI関数のプレゼンテーション

次の KPI 形式パラメーターは、返される KPI の形式を設定します。

パラメータ名

必須 

preferred_currency

KPIの収益通貨

  • true の場合、プラットフォーム上で設定されているアプリ固有の通貨を使用して収益値が戻ります。
  • [デフォルト] false の場合、結果はUSDで返されます。
  • 形式:ブーリアン
  • フラットフォームUI版:true

いいえ

preferred_timezone

データ範囲のタイムゾーン

  • trueの場合、プラットフォームで設定されたアプリ固有のタイムゾーンを使用して表示されます。
  • [デフォルト] falseの場合、UTCタイムゾーンを使用して表示されます。
  • 形式:ブーリアン
  • フラットフォームUI版:true

いいえ

aggregation_type

  • cumulative
  • on_day

"aggregation_type": "cumulative"

フォーマット:文字列(String)

はい

per_user

KPI関数をアプリユーザー数で割ります。関連するKPIのみに適用されます。

  • trueの場合、KPI値はコホートのユーザー数で除算されます。
  • falseの場合、KPI値はユーザー数で除算されません。
  • 形式:ブーリアン
  • tureの場合の例:総収益が$1000で、アプリユーザー数が500の場合、値は$2で返されます。
いいえ

グループ化とフィルタのディメンション一覧

ディメンション名

ディメンションAPI値

グループ

フィルター

広告

af_ad

Y

Y

Ad ID

af_ad_id

Y

Y

Campaign

c

Y

Y

Campaign ID

af_c_id

Y

Y

チャネル

af_channel

Y

Y

Media Source

pid

Y

Y

Sub Param 1

af_sub1

Y

Y

Keywords

af_keywords

Y

Y

代理店

af_prt

Y

Y

コンバージョンタイプ (1)

cohort _type

Y

Y

サイトID

site_id

Y

Y

収益タイプ (2)

revenue_type

Y

アトリビューションタッチタイプ (3)

attributed_touch_type

Y

Y

Adset

af_adset

Y

Y

Adset ID

af_adset_id

Y

 Y

geo

Y

Y

日付(選択したcohort_typeのコンテキストでのインストール/リアトリビューション/リエンゲージメント日)

date

Y

期間

period 

詳細な説明

 

x

Y

注意: 

ディメンションのオプション:

(1) コンバージョンタイプ:user_acquisitionretargeting(re-engagement 及び re-attribution)、unified

  • エクスポートする場合:
    • re-engagementretargeting と表示されます
    • re-attributionreattr と表示されます

(2) 収益タイプ: regular, ad_monetization

(3) アトリビューションタッチタイプ: 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": [
            "Facebook Ads",
            "googleadwords_int"
        ]
    },
    "preferred_currency": true,
    "aggregation_type": "on_day",
    "per_user": false,    
    "groupings": [
        "pid",
        "date"
    ],
    "kpis": [
        "sessions"
    ]
}'
返されるファイルの例:CSVJSON

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日目のメディアソースのリテンション(セッション)

{
  "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
  • 認証トークンの形式が正しくありません。正しいトークンを使用していることを確認してください。700文字以上である必要があります。
404 Not found
  • ネットワーク、ファイアウォールなどに関連する問題を排除してください。
  • 最後に発行されたトークンを使用していることを確認してください。現在のトークンは管理画面から取得できます。
  • パスで指定したアプリがコホートAPIの使用が許可されていることを確認してください。つまりサブスクリプションプランに含まれているか確認してください。AppsFlyerアカウントのアドミンがご契約プランページから確認できます。
 422 Unprocessable entity (処理不能)

このエラーコードの一般的な原因は次のとおりです:

  • リクエストがJSONに含まれ、クエリパラメータ―として送信されていないことを確認します。
  • JSONがこのドキュメントに従ってフォーマットされていることを確認します。
  • 不正な日付

CSVファイル名の構成

返されるCSVファイルに割り当てられる名前はAPIクエリから生成されます。その構成は、次の表で詳しく説明されています。

CSVファイル名の例

cohort_aggregation_type_per_user_kpi_report_app_id_from_to_timezone_currency_hash.csv
変数 可能な値
aggregation_type
  • on_day
  • cumulative
per_user
  • per_user 
  • false: Null 
KPI 例:セッション数
app_id リクエストされたアプリID
from from 日付:形式 yyyy-mm-dd
to to 日付:形式 yyyy-mm-dd
timezone ダイムゾーンのデフォルトはUTCです
currency 通貨コードのデフォルトはUSDです
hash

英数字のハッシュ文字列の長さ=5

期間フィルタの使用

期間はアトリビューション後の日を指し、期間0はアトリビューション日です。例えば、ユーザーがアプリを1月1日にインストールします。これがアトリビューション日です。期間0に購入が発生した場合、この購入は1月1日に発生しました。期間3に購入が発生した場合、この購入は1月4日に発生しました。同様に、11月11日にインストールしたユーザーは、これが期間0になります。1月14日に発生した購入は期間3となります。

レポートの期間範囲が1月1日から1月11日の場合、この期間にアトリビュート(インストール)されたユーザーがレポートに含まれます。その他のデータは含まれません。

  • 期間の値は、0-180のうち1つまたは複数設定できます。例:0, 1, 2, 30, 180。 
  • 期間が指定されていない場合、デフォルト値である0、1、2…30まで、および、60、90、180 が戻ります。  

 期間フィルタの例

  • この例には、JSONクエリパラメータ、ローデータ、および結果のCSVファイルが含まれています。
  • クエリのフィルタ期間は、0、1、2で、選択されたKPIは収益です。
  • その結果、返されるデータには以下が含まれます。
    • ユーザー、コスト、eCPIの測定は常に返されます。
    • 収益の測定は、各期間、つまり期間 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"
    ]
}

ローデータ

mceclip1.png

結果

mceclip0.png

ユーザーインターフェイスとAPIパラメータのマッピング

次の図は、コホート分析のユーザーインターフェイスとAPIパラメータをマッピングを示しています。APIとユーザーインターフェイスの2つのソリューションは、似ていますが同一ではありません。

このAPIバージョンには、次の追加オプションがあります。

  • 通貨の選択
  • タイムゾーンの選択
  • 期間で絞り込み
CohortMapping.jpg Cohortmapping2.jpg

集計タイプの違い

CohortRevnueCumulative.jpg

特性と制限事項

特性 備考
アドネットワークのアクセス

いいえ。広告主が権限を付与した場合、キャンペーン運用パートナーはAPIを使用できます。

代理店のアクセス いいえ
代理店への運用詳細の開示 サポートされていません
アプリ固有のタイムゾーン はい
アプリ固有の通貨 はい
サイズ制限 なし
レート制限

APIコールレート制限:1アカウントあたり、1分につき60コールまで

オーガニックデータ ご利用可能
非オーガニックデータ ご利用可能
コストデータの制限
  • コストデータは少なくとも1つのインストールが計測されているキャンペーンのデータです。
  • AppsFlyerは、コホートレポートまたはコホートAPIに大文字を含むキーワードのコストデータを報告しません
  • コストと一部のグループ化の組み合わせができません。例えば、Facebookでは、国別またはチャンネル別のグループ分けが可能ですが、両方はできません。グループ分けの正確な組み合わせは、アドネットワークにより異なります。
データの更新頻度

データ更新頻度は、以下の partial_data により異なります。

  • [デフォルト] falseの場合は毎日更新
  • trueの場合は継続的(リアルタイム)で更新
  • コストとアンインストール指標は全てのインスタンスで毎日更新されます
過去データ サポートされている最も早いコンバージョンデータ(インストールまたはリターゲティング):2019年1月1日
アカウントユーザーのアクセス 認証トークンは、管理画面でアドミンユーザーが利用できます