概要
Enterprise
これは、当社のマネージドアクセスレベルでのみ利用可能なエンタープライズ API です。この API を利用するには、まず当社のエンタープライズ営業チームを通じてアカウントを設定する必要があります。 詳細はこちら
Engagement API は、ポストのインプレッションおよびエンゲージメント指標へのアクセスを提供します。ほとんどの指標およびエンドポイントでは、OAuth 1.0a User Context を使用して認証する必要がありますが、OAuth 2.0 Bearer Token と /totals エンドポイントを使用することで、公開されている「お気に入り」「リツイート」「返信」「動画再生数」の指標にアクセスできます。
注: 一部の X の Web ダッシュボードで報告されるデータと、Engagement API で報告されるデータとの間に差異が見られる場合があります。これらの差異は、Web ダッシュボードが通常、選択された時間範囲内に発生したエンゲージメントやインプレッションのみを表示することが原因です。たとえば、ある Web ダッシュボードは、暦月の範囲内における投稿へのエンゲージメントのみを表示する一方で、Engagement API は、その月の範囲を超えていても、要求された時間範囲内に含まれるエンゲージメントを表示する場合があります。このような場合には、Engagement API を正式な情報源として扱ってください。
リクエストエンドポイント
Current Totals: [/totals]
- リクエストは、指定した投稿に対するインプレッションの合計指標とエンゲージメントの合計指標を返します
- 対象となる指標は次のとおりです: Impressions、Engagements、Favorites、Replies、Retweets、Quote Tweets、Video Views
- OAuth 1.0a User Context を使用して、直近 90 日以内 に作成された投稿の Impressions および Engagements 指標を取得できます
- OAuth 2.0 ベアラートークンを使用して、任意のポスト の Favorites, Retweets, Quote Tweets, Replies および Video Views 指標を取得できます
- 結果は、リクエストが実行された時点でのインプレッションとエンゲージメントの現在の合計に基づきます
- ダッシュボードレポートの作成や、さまざまな @ハンドル間でのエンゲージメント率の算出に最適です
- 1 回のリクエストで最大 250 件までの投稿の指標をリクエストできます
過去28時間: [/28hr]
- リクエストは、インプレッションの合計指標、エンゲージメントの合計指標、および過去28時間に発生した個別エンゲージメント指標の内訳を返します
- データはポストIDごと、タイムシリーズの集計 (全体) 、日別、時間別でグループ化できます
- 直近に作成されたコンテンツのパフォーマンスを追跡するのに最適です
- 利用可能なすべての指標をサポートします
- 1回のリクエストで最大25件の投稿の指標取得をサポートします
過去データ: [/historical]
- リクエストでは、インプレッション、エンゲージメント、および個別のエンゲージメント指標の内訳を、直近1年間分について返せます (ポストの作成時刻ではなく、エンゲージメント発生時刻に基づきます) 。
- リクエストは開始日と終了日のパラメータをサポートしており、最大4週間の期間内で特定の時間枠に絞り込むことができます。
- ポストのエンゲージメントデータは、過去365日分のみ利用できます。
- データはポストIDごと、または時系列の集計として、日別または時間別にグループ化できます。
- 直近のパフォーマンスを過去のベンチマークと比較評価したり、特定の@handleのパフォーマンスの歴史的な推移を把握するのに最適です。
- 利用可能なすべての指標をサポートします。
- 1回のリクエストで最大25件の投稿の指標をリクエストできます。
利用可能なメトリクス
エンゲージメントのグルーピング
- tweet.id
- engagement.type
/28hr および /historical は時系列指標を提供できるため、次の値もサポートします:
- engagement.day
- engagement.hour
ガイド
開発者向け入門ガイド
はじめに
Engagement API は何を提供しますか?
- Engagement API は、任意の X アカウントが所有する過去 90 日分のポストについて、インプレッションおよびエンゲージメントのデータを提供します。その前提として、そのアカウントが 3-legged OAuth を使用し、あなたの App に自分の代理としてメトリクスをリクエストする権限を付与している必要があります。この強力でありながら実装が容易なソリューションにより、インプレッションに加え、URL クリックや #hashtag クリックなど、さまざまなディープなエンゲージメント指標に即座にアクセスできます。
- Engagement API は、任意のポストに対して、いいね、Retweet、Quote Tweet、返信、動画再生回数などの合計値 (集計メトリクス) を提供します。これは、任意のポストまたはポストのコレクションについて、基本的なエンゲージメントデータを取得する強力な手段として利用できます。
- Engagement API は、15 を超えるパフォーマンス指標を用いてコンテンツのパフォーマンスを正確に測定できるようにすることで、ソーシャルリスニング、マーケティング、パブリッシングプラットフォームに新たな価値をもたらします。これにより、X 上でのコンテンツの ROI を効果的に測定できるようになります。
- Engagement API はリクエスト/レスポンス型の API であり、アプリ開発者はポスト ID、取得したいメトリクス、および時間範囲を指定したリクエストを送信でき、それに対して API は即座にデータを返します。
なぜ連携するのか? ユースケースの例
- 自分のコンテンツの総合的なリーチを把握し、どれくらいの人が閲覧しているかを確認する。動画の再生数、リンクやハッシュタグのクリック数、アプリのインストール数を確認する。
- 合計値と時系列の両方のエンゲージメント指標を生成する。
- 任意の公開ポストについて、基本的なエンゲージメント指標 (いいね、リツイート、引用ツイート、返信) を把握する。
- これらの指標を使って、どの種類の投稿が効果的かを判断し、その投稿をより頻繁に行うことで、インプレッション数とエンゲージメント数を増やす。
- 自分のポストが100件のいいね、または別のしきい値に達したときに、別の自社アカウントからのコンテンツをリツイートするなど、マーケティング行動を自動化する。
- A/Bテストのためのツールとして、キャンペーン同士を比較・ベンチマークする。
- カスタマーサービス部門にとってどのようなコンテンツが響くのかを分析し、どのように、いつ対応するかを判断する。
- 自社プラットフォームから公開されたコンテンツに対して分析情報を表示する。
Engagement API の統合方法
API の概要
- Post IDs の配列。
- 関心のある metric types を指定する配列。タイプには「impressions」「retweets」「hashtag_clicks」「user_follows」などが含まれます。
- Engagement groupings。これは、API レスポンス内でエンゲージメントデータをどのように構成したいかを示す JSON 構造です。
- Totals - 投稿に対するエンゲージメントの合計値を提供します。一部の指標はすべての投稿に対して利用できますが、その他の指標は過去 90 日間のみ利用可能です。
- 28 hour - 直近 28 時間のタイムシリーズエンゲージメント指標を提供します。
- Historical - 2014 年 9 月 1 日以降に投稿された投稿について、最大 4 週間連続のタイムシリーズエンゲージメント指標を提供します。
API アクセスの取得
リクエストの送信
1/ 本日、X API プラットフォームの未来に向けたビジョンを共有します!https://t.co/XweGngmxlP — Twitter Dev (@TwitterDev) 2017年4月6日
あなたのポストに関する投稿をお見逃しなく。 iOS では、コメント付きリツイートを 1 か所でまとめて確認できるようになりました。pic.x.com/oanjZfzC6y — X (@X) 2020年5月12日
https://data-api.x.com/insights/engagement/totals エンドポイントに対して、この JSON リクエストを POST します。
JSON でエンコードされていることと、Gzip で圧縮されていること (リクエストボディが大きくなる可能性があるため) を示すために、次のヘッダーを含めます。
- Content-Type: application/json
- Accept-Encoding: gzip
OAuth での認証
Engagement API エンドポイントの選択
- Totals - 「owned」ポストまたは「unowned」ポストに対する一部指標の総計を提供します。すべての投稿で利用できる指標もあれば、直近 90 日以内に公開された投稿でのみ利用できる指標もあります。1 リクエストあたり 250 投稿までサポートします。
- 28 hour - 直近 28 時間における「owned」ポストの時系列エンゲージメント指標を提供します。1 リクエストあたり 25 投稿までサポートします。
- Historical - 2014 年 9 月 1 日以降に投稿された「owned」ポストを対象に、最大 4 週間連続の時系列エンゲージメント指標を提供します。1 リクエストあたり 25 投稿までサポートします。
重要な概念
インプレッションおよびエンゲージメント指標
所有している X コンテンツと所有していない X コンテンツ
/totals エンドポイントは、所有投稿と非所有投稿の両方についてエンゲージメントデータを提供します。非所有投稿については、ポストの表示で公開されているエンゲージメントメトリクスである Favorite、Retweet、Reply をリクエストできます。これらのメトリクスに関して Engagement API が提供する価値は、これらのメトリクスを自動で大規模に取得できる点です。所有投稿については、/totals エンドポイントは Impression と (合計) Engagement メトリクスも提供します。
/28hr および /historical エンドポイントは所有投稿に対するメトリクスのみを提供します。つまり、これらのエンドポイントにリクエストを送信する際には、ユーザーコンテキストを付与して渡す必要があります。
合計値および時系列エンゲージメントデータ
/totals エンドポイントは、その名前が示すとおり、各種エンゲージメントの合計値のみを提供します。ここでの数値は、そのポストが投稿されてから現在までの最新の合計値を表します。ポストが投稿された直後にそのメトリクスを繰り返しリクエストすると、通常はリクエストごとにこれらの合計値が変化します。
/28hr と /historical エンドポイントは、合計値と時系列データの両方を提供できます。時系列データをリクエストする場合、エンゲージメントメトリクスは日単位または時間単位のデータに集計できます。
/28hr および /historical エンドポイントで時系列データをリクエストする方法については、engagement groupings に関するドキュメントを参照してください。
エンドポイントとユースケース例
/totals
- 一部のメトリック type (Impressions、Engagements、Favorites、Retweets、Quote Tweets、Replies、Video Views) にだけアクセスできれば十分です。
- 自分が所有している投稿だけでなく、任意のポストの基本的なエンゲージメントデータにアクセスしたい。
- 競合とのパフォーマンスを比較したい。
- 自分が所有していない投稿を含むハッシュタグやキャンペーンの基本的なエンゲージメント指標を追跡したい。
- 日別や時間別に分割されたデータは不要で、リクエストした時点での現在の合計値だけ分かればよい。
- レポートやダッシュボードに表示する単一のメトリックが必要で、データを保存する必要はない。
- ページ読み込み時にデータを表示したく、リクエストを 1 回送ってレスポンスを受け取れればよい。
- 1 日あたり数十万から数百万件の投稿データにアクセスする必要がある。
/28hr
- 17種類すべてのメトリック type にアクセスする必要がある。
- 直近28時間以内に投稿された、最新の投稿データを表示したい。
- 1日に1回、必要なデータを取得するジョブがあり、直近1日分のデータだけ取得できればよい。
- メトリクスを日次または時間単位で分解して取得する必要がある。
- ダッシュボードで、アクティビティの時系列を時間単位のブレイクアウトで表示したい。
- 1日に数十万件の投稿に対して、高いレベルのアクセスが必要である。
- ストレージ機能があり、データを1日1回更新して累積値を保持できる。
/historical
- 17種類すべてのメトリックにアクセスする必要があります。
- 2014年9月までさかのぼって作成された投稿の過去データを取得する必要があります。
- キャンペーン同士を比較する詳細な過去分析を表示したいと考えています。
- メトリックを日別または時間別に分解して取得する必要があります。
- Engagement API への高いアクセスレベルは必要なく、1日に数百〜数千件程度の投稿のデータが取得できれば十分です。
Engagement API の主な特性
- RESTful API で JSON データを提供し、JSON 形式のボディを持つ POST リクエストをサポートします。
- リクエストの種類: Client アプリは次の種類のリクエストを送信できます:
- 合計エンゲージメント — /totals エンドポイントへの HTTP POST リクエスト
- 直近 28 時間のエンゲージメント — /28hr エンドポイントへの HTTP POST リクエスト
- 履歴エンゲージメント — /historical エンドポイントへの HTTP POST リクエスト
- OAuth 認証:
- OAuth 1.0 User Context: 3-legged OAuth を使用してあなたの App を認可したユーザーが所有するポストに対して、利用可能なすべてのメトリクスを取得できます。リクエストを送信する際には、そのユーザーの Access Tokens を使用する必要があります。
- OAuth 2.0 Bearer Token: 特定のメトリクス (Retweets、Quote Tweets、Replies、Favorites、Video Views) は、任意の公開ポストに対して利用できます。
- リクエストのメタデータと構造: リクエストデータは JSON オブジェクトで、ポスト ID の配列、エンゲージメントタイプの配列、およびエンゲージメントのグルーピング構造で構成されます。
- 1 リクエストあたりのポスト数:
- /totals エンドポイント: 250 ポスト ID
- /28hr エンドポイント: 25 ポスト ID
- /historical エンドポイント: 25 ポスト ID
- エンゲージメントメトリクスの利用可否:
- /totals — ポストが投稿されてからのメトリクス合計。Impressions と Engagements は、過去 90 日以内に投稿されたポストに対して利用可能であり、Retweets、Quote Tweets、Replies、Favorites、Video Views はすべてのポストに対して利用可能です。
- /28hr — リクエスト時刻から直近 28 時間。
- /historical — 2014 年 9 月 1 日以降の任意の 28 日間の期間。
- メトリクスタイプ: 各リクエストには Metric Types の配列が含まれます。利用可否はエンドポイントに依存し、/totals エンドポイントからリクエストする場合は、ポストがユーザー承認済みかどうかにも依存します。
- /totals エンドポイント:
- すべてのポスト: Favorites、Retweets、Quote Tweets、Replies、Video Views
- OAuth 1.0a User Context が必要: Impressions、Engagements、Favorites、Replies、Retweets
- /28hr および /historical エンドポイント (ポスト所有者の Access Token を用いた OAuth 1.0a User Context が必要) : Impressions、Engagements、Favorites、Replies、Retweets、URL Clicks、Hashtag Clicks、Detail Click、Permalink Clicks、Media Clicks、App Install Attempts、App Opens、Post Emails、Video Views、Media Views
- /totals エンドポイント:
- エンゲージメントのグルーピング: 各リクエストには Engagement Groupings の配列が含まれます。これらのグルーピングを使用して、返されるメトリクスの整理方法をカスタマイズできます。1 リクエストあたり最大 3 つのグルーピングを含めることができます。メトリクスは次の値で整理できます:
- すべてのエンドポイント: ポスト ID、エンゲージメントタイプ
- /28hr および /historical エンドポイント: これらのエンドポイントは、次の追加グルーピングが指定されている場合に時系列データを提供します: Engagement Day、Engagement Hour
- インテグレーションに関する前提事項: あなたのチームには次の責任があります。
- Engagement API に HTTP リクエストを送信し、リクエストに含まれるポスト ID に対するエンゲージメントメトリクスを返せるクライアントアプリを作成・維持すること。
- 制限事項
- Video Views は、投稿から 1,800 日以内のポストに対してのみ利用できます。
Engagement API での認証
ご注意ください: Engagement API を利用開始する前に、X 側で開発者 App に対して Engagement API へのアクセスを有効化する必要があります。そのため、認証に使用する予定の App ID を、アカウントマネージャーまたはテクニカルサポートチームに必ず共有してください。Engagement API では 2 つの認証方式が利用できます: OAuth 1.0a と OAuth 2.0 ベアラートークン です。 OAuth 2.0 ベアラートークン (「application-only」とも呼ばれます) を使用すると、公開されているエンゲージメント指標にアクセスできます。この認証方式は、/totals エンドポイント へのリクエスト時に、公開されている任意の投稿について、Favorites (別名 Likes) 、Retweets、Quote Tweets、Replies、動画再生数の合計を取得するために使用できます。 OAuth 1.0a (「user context」とも呼ばれます) を使用すると、ユーザーに代わってリクエストを送信し、そのユーザーに紐づく非公開のエンゲージメント指標にアクセスできます。 この認証方式が必須となるのは次の場合です:
- /28hr エンドポイント および /historical エンドポイント に送信されるすべてのリクエスト
- 以下のいずれかの非公開メトリクスにアクセスする場合: Impressions、Engagements、Media Views、Media Engagements、URL Clicks、Hashtag Clicks、Detail Expands、Permalink Clicks、App Install Attempts、App Opens、Email Post、User Follows、User Profile Clicks
403 Forbidden エラーを返します。
Engagement API では、保護された投稿 については、たとえその投稿の所有者であるユーザーに代わって認証している場合でも、エンゲージメントデータを取得することはできません。そのようなリクエストを行うと、400 Bad Request エラーが返され、メッセージは "Tweet ID(s) are unavailable" となります。
自分自身の X アカウント (つまり、開発者 App を所有しているアカウント) に代わってリクエストを送信する場合、必要な Access Tokens は 開発者コンソール 内の、その開発者 App の「Keys and tokens」タブから直接生成できます。
他のユーザーに代わってリクエストを送信する場合は、必要な Access Tokens を取得するために 3-legged OAuth フローを使用する必要があります。これを行う方法の詳細については、次のドキュメントを参照してください: OAuth 1.0a: how to obtain a user’s access tokens。
追加のサンプル (OAuth 1.0a を使用した認証方法を含む) については、XDevelopers による Engagement API 向けの Python サンプルコード を参照してください。
Engagement API の最近の変更点
メトリクスの解釈
インプレッションおよびエンゲージメントデータ
動画指標
- /totals エンドポイントおよび X のユーザーインターフェースで提供される動画ビューは、該当する動画が投稿されているすべてのポストにわたる動画ビューを集計して表示します。つまり、/totals 経由で配信され、X の UI に表示される指標には、その動画が別のポストでリポストや再投稿されたすべてのインスタンスからの視聴数が合算されています。
- /28hour および /historical Engagement API エンドポイントで提供される動画ビューは、指標を取得している特定のポストによって生成された視聴数のみを含みます。
Engagement API のグルーピング
- tweet.id
- engagement.type
/28hr と /historical は時系列の指標を提供できるため、次の値もサポートします:
- engagement.day
- engagement.hour
group_by の値の順序を変更することで、目的の結果の形式を変更できます。group_by の値を 4 つ含むグルーピングは、次の 2 つの形式のいずれかでのみサポートされます:
"Grand Totals" 属性が含まれるようになります。
"Tweets_MetricType_TimeSeries" という属性が含まれ、その中にポスト ID ごと、次にメトリクスタイプごとに分解されたメトリクスと、それに対応する時間単位の時系列データが格納されます。
よくある質問
Enterprise
Engagement API
Engagement API にはどのようにアクセスできますか?
Engagement API にはどのようにアクセスできますか?
Engagement API へのアクセスはエンタープライズサブスクリプションを通じて提供されます。このフォーム に必要事項を入力し、営業担当までご連絡ください。
利用状況は「@handle」単位でどのように計測されますか?
利用状況は「@handle」単位でどのように計測されますか?
ご契約内容に、Engagement API で利用できる一意のハンドル数の上限が含まれている場合があります。X の内部システムでは、Engagement API でクエリされたポストを所有する認証済みユーザーの数を追跡します。お客様側でも、この一意の数値をクライアント側で管理してください。現在、Engagement API の @handle の利用状況を確認するための API や UI は存在しません。契約で定められた数を超える @handle がリクエストされても、システム側でブロックは行われません。請求月末に、クエリされた一意の @handle 数が契約数と比較され、契約条件に従って超過分の料金が請求されます。
Engagement API の @handle 利用状況を確認できますか?
Engagement API の @handle 利用状況を確認できますか?
現在、Engagement API の @handle の利用状況を確認するための API や UI は存在しません。契約で定められた数を超える @handle がリクエストされても、システム側でブロックは行われません。請求月末に、クエリされた一意の @handle 数が契約数と比較され、契約条件に従って超過分の料金が請求されます。ペイロードで返される
engagements メタデータフィールドの値が、さまざまなエンゲージメント指標合計の総和と一致しません。なぜですか?これは想定された動作です。engagements メタデータフィールドは、API によって返される個々のエンゲージメント指標の総和と常に一致するとは限りません。これは、engagements メタデータフィールドに、ペイロード内で個別の指標として分解されていない追加のエンゲージメントが含まれている場合があるためです。言い換えると、さまざまなエンゲージメント指標の合計をすべて足し合わせても、ペイロードで返される engagements 指標フィールドの値と等しくならない場合があります。engagements メタデータフィールドは、そのポストに対して行われたあらゆるクリックやインタラクションを表すものと考えることができます。
ペイロードレスポンス内の url_clicks フィールドが数値を返していますが、実際にはポストに URL が含まれていません。これはどのようにして起こり得ますか?ハッシュタグのように、別のページへのリンクを生成する要素を含むポストの場合、そのリンクがユーザーにクリックされると、URL クリックとしてカウントされるためです。
特定のポストのエンゲージメントデータを取得できないのはなぜですか?
特定のポストのエンゲージメントデータを取得できないのはなぜですか?
特定のポストのエンゲージメントデータを取得できない理由はいくつか考えられます。たとえば、次のようなものがあります。
- サードパーティの代理としてデータを取得する際に使用している認証トークンの条件に基づき、リクエストしたポスト ID が利用可能ではない。
/totalsエンドポイント向けにリクエストしたポスト ID が 90 日より前のものであり、そのためインプレッションやエンゲージメント指標を返す対象として利用可能ではない。- リクエストしたポスト ID が、削除されている、あるいはその他の理由によりもはや公開されておらず、利用できない。
Engagement API でレート制限はどのように扱えばよいですか?
Engagement API でレート制限はどのように扱えばよいですか?
Engagement API にリクエストを送信する際、レスポンスヘッダーに含まれる
x-per-minute-limit と x-per-minute-remaining の情報を使用して、お客様の利用状況を監視できます。x-per-minute-limit は許容されている呼び出し数を示し、x-per-minute-remaining は残りの呼び出し可能数を示します。エラーのトラブルシューティングガイド
認証で問題が発生しています
認証で問題が発生しています
Engagement API による認証については、必ず 認証に関するガイドライン を確認してください。
正しい consumer key と secret、さらに access token と access token secret を指定していますが、次のエラーが返されます。どうすればよいですか?
正しい consumer key と secret、さらに access token と access token secret を指定していますが、次のエラーが返されます。どうすればよいですか?
/totals エンドポイントで認証を行う際には、access token や secret を使用しないようにしてください。これらのトークンを含めた状態で、これらのトークンと関連付けられていないポストからコンテンツを取得しようとすると、次のようなエラーが返される可能性が高くなります。お探しの情報がまだ見つかりませんか?
まだ解決していない質問があります
まだ解決していない質問があります
技術サポートまでお問い合わせください。できるだけ早くご回答いたします。
APIリファレンス
POST insights/engagement
メソッド
Authentication
- 自分が所有するツイートのみに制限される Impressions および Engagements のメトリクス種別を取得するための、/totals への任意のリクエスト
- /28hr への任意のリクエスト
- /historical への任意のリクエスト
- 任意のツイートに対して取得可能な Favorites、Replies、Retweets、または Video Views のメトリクス種別を取得するための、/totals への任意のリクエスト
POST /insights/engagement/totals
totals エンドポイントでは、最大 250 件までのツイートのコレクションについて、現在の合計インプレッション数およびエンゲージメント数を取得できます。