概要
Enterprise
これは当社のマネージドアクセスレベルでのみ利用可能なエンタープライズ向け API です。この API を利用するには、まず当社のエンタープライズ営業チームとアカウントの設定を行う必要があります。 詳細はこちら
Engagement API は、Post のインプレッションおよびエンゲージメント指標へのアクセスを提供します。大半の指標とエンドポイントでは OAuth 1.0a ユーザーコンテキスト による認証が必要ですが、OAuth 2.0 Bearer Token と /totals エンドポイントを使用すれば、公開の Favorite、Retweet、Reply、Video Views の指標にアクセスできます。
注: 一部の X のウェブダッシュボードで報告されるデータと Engagement API で報告されるデータに差異が生じる場合があります。これは、ウェブダッシュボードが通常、選択した期間内に発生したエンゲージメントやインプレッションのみを表示するためです。例えば、ウェブダッシュボードはカレンダー上の1か月の範囲内の Post へのエンゲージメントを表示しますが、Engagement API では、その月の範囲外であっても要求された時間範囲内に含まれるエンゲージメントが表示される場合があります。これらの場合、Engagement API を正確な情報源として扱ってください。
リクエストエンドポイント
現在の合計: [/totals]
- リクエストは、対象の Post に対するインプレッション合計とエンゲージメント合計のメトリクスを返します
- 対応メトリクスは次のとおりです: Impressions、Engagements、Favorites、Replies、Retweets、Quote Tweets、Video Views
- OAuth 1.0a ユーザーコンテキストを使用して、直近90日以内に作成された Post の Impressions および Engagements メトリクスの取得に対応
- OAuth 2.0 ベアラートークンを使用して、任意の Post の Favorites、Retweets、Quote Tweets、Replies、および Video Views メトリクスの取得に対応
- 結果は、リクエスト時点の最新のインプレッションおよびエンゲージメントの合計に基づきます
- ダッシュボードレポートの作成や、さまざまな @handle をまたぐエンゲージメント率の算出に最適です
- 1 回のリクエストで最大 250 件の Post のメトリクス取得に対応
直近28時間: [/28hr]
- リクエストは、インプレッションの合計、エンゲージメントの合計、および直近28時間に発生した個別のエンゲージメント指標の内訳を返せます
- data は Post ID 単位、または時系列(合計、日別、時間別)で集計してグループ化できます
- 最近作成したコンテンツのパフォーマンスの追跡に最適です
- 利用可能なすべての指標をサポートします
- 1回のリクエストで最大25件の Post の指標を取得できます
履歴: [/historical]
- リクエストは、直近1年間について、Postの作成時刻ではなくエンゲージメント発生時刻に基づき、インプレッション、エンゲージメント、および個別のエンゲージメント指標の内訳を返すことができます。
- リクエストは開始日と終了日パラメータをサポートし、最大4週間の期間で特定の期間に絞り込む柔軟性を提供します。
- Postのエンゲージメントdataは、過去365日分に限定されます。
- dataはPost IDによるグルーピングに加え、集計の時系列(日単位または時間単位)でのグルーピングが可能です。
- 直近のパフォーマンスを過去のベンチマークと比較評価したり、@handleのパフォーマンスの履歴を把握したりするのに最適です。
- 利用可能なすべての指標をサポートします。
- 1回のリクエストで最大25件のPostの指標をリクエストできます。
利用可能なメトリクス
| メトリクス | エンドポイントの稼働状況 | ユーザーコンテキストが必要です | 概要 |
|---|---|---|---|
| インプレッション数 | すべて | はい | Post が閲覧された回数です。この指標は、過去90日以内に投稿された Post にのみ利用可能です。 |
| エンゲージメント数 | すべて | はい | ユーザーがそのPostとやり取りした回数の合計。この指標は、過去90日以内に投稿されたPostにのみ利用可能です。 |
| お気に入り | すべて | はい - /28時間&/履歴 いいえ - /totals | Post が「お気に入り」された回数。 |
| リツイート | すべて | はい - /28時間&/履歴 いいえ - /totals | Post がリツイートされた回数。 |
| 引用符_Tweets | /totals | いいえ - /totals | コメント付きでRetweet(Quote とも呼ばれる)された Post の回数。 |
| 返信 | すべて | はい - /28時間&/履歴 いいえ - /totals | Post に対する返信数。 |
| 動画_表示回数 | すべて | はい - /28時間&/履歴 いいえ - /totals | 指定されたPost内の動画が、少なくとも2秒間にわたり50%可視だった回数。 動画再生数は、1800日以内のPostに対してのみ取得できます。1800日を超えるPostの動画再生数をリクエストした場合、リクエストしたその他の指標を含む別のオブジェクトとあわせて、レスポンス内に次のオブジェクトが返されます。 “サポート対象外_用_ビデオ_表示数_Tweet_ids”: [“Tweet_ID”] **ご注意ください:**X が所有・運営するプラットフォーム(モバイルアプリおよびウェブサイト)に表示される動画の視聴数指標と、/28hr および /historical エンドポイントで取得する数値の間に差異が生じる場合があります。 - X のユーザーインターフェースおよび /totals エンドポイントに表示される動画再生数は、当該動画が投稿されたすべての Post を横断して集計された数値です。つまり、UI に表示される指標には、その動画が別の Post でリツイートまたはリポストされたあらゆるインスタンスでの再生数が合算されています。この指標には GIF の動画再生数は含まれません。 - /28hr および /historical エンドポイントで提供される動画再生数には、指標を取得している特定の Post で発生した再生のみが含まれます。この指標には、GIF の動画再生数は含まれません。 |
| メディア_表示数 | /28時間 /historical | はい | 動画、GIF、画像を対象に、自動再生とクリックによるすべての閲覧の合計数。 |
| メディア_エンゲージメント数 (旧称 Media Clicks) | /28hr /historical | はい | Post 内の画像や動画などのメディアがクリックされた回数。 |
| URL_クリック数 | /28hr /historical | はい | Post 内のURLがクリックされた回数。 |
| ハッシュタグ_クリック数 | /28hr /historical | はい | Post 内のハッシュタグがクリックされた回数。 |
| 詳細_拡張 | /28時間 /historical | はい | Post の詳細表示のためにクリックされた回数。 |
| パーマリンク_クリック数 | /28時間 /historical | はい | Post(このPost専用の個別ウェブページ)へのパーマリンクがクリックされた回数。 |
| アプリ_インストール_試行回数 | /28時間 /historical | はい | Post から発生した App Install イベントの発生回数 |
| アプリ_開封数 | /28時間 /historical | はい | Post から発生した App Open イベントの発生回数。 |
| Eメール_Tweet | /28時間 /historical | はい | Post がメールで共有された回数。 |
| ユーザー_フォロー中 | /28時間/過去データ | はい | このPostから、そのユーザー(Postの作成者)がフォローされた回数。 |
| ユーザー_プロフィール_クリック数 | /28hr /historical | はい | このPostから、そのユーザー(Post の作者)のプロフィールがクリックされた回数。 |
エンゲージメントのグルーピング
- tweet.id
- engagement.type
/28hr および /historical は時系列指標を提供できるため、次もサポート:
- engagement.day
- engagement.hour
ガイド
開発者向けスタートガイド
はじめに
Engagement API は何を提供しますか?
- Engagement API は、対象アカウントが 3-legged OAuth によってあなたのアプリに代理でメトリクス取得を許可していることを前提に、過去90日間の任意の X アカウントが所有する Post のインプレッションおよびエンゲージメントデータを提供します。強力でありながら実装が容易なこのソリューションにより、インプレッションに加え、URL クリックや #hashtag クリックなどの深いエンゲージメントに即時アクセスできます。
- Engagement API は、任意の Post に対する「お気に入り」、Retweet、Quote Tweet、返信、動画再生数の合計集計メトリクスを提供します。これは、任意の Post または Post のコレクションに関するベーシックなエンゲージメントデータを取得する強力な手段として利用できます。
- Engagement API は、15以上のパフォーマンスメトリクスを用いてコンテンツの成果を正確に測定し、X 上での ROI を評価できるようにすることで、ソーシャルリスニング、マーケティング、パブリッシングプラットフォームに新たな価値を提供します。
- Engagement API はリクエスト/レスポンス型の API であり、アプリ開発者は Post の id、取得したいメトリクス、期間を指定してリクエストを送信でき、API は即座に data を返します。
なぜ統合するのか? ユースケース例
- コンテンツの総リーチを把握し、どれだけのユーザーに閲覧されたかを確認します。動画の再生数、リンクのクリック数、ハッシュタグのクリック数、アプリのインストール数も把握できます。
- 総計および時系列のエンゲージメント指標を生成します。
- 任意の公開Postに関する基本的なエンゲージメント指標(いいね、Retweet、Quote Tweet、返信)を把握します。
- これらの指標を活用して効果的なPostのタイプを見極め、同様の投稿を増やして、インプレッションとエンゲージメントをさらに獲得します。
- 自分のPostが100件のLike、または別の閾値に達するたびに、(別の自社アカウントからのRetweetなどの)マーケティング施策を自動化します。
- A/Bテストの手段として、キャンペーン同士をベンチマーク・比較します。
- カスタマーサービス部門に響くコンテンツの種類を分析し、対応すべき方法とタイミングを判断します。
- 自社プラットフォームから公開されたコンテンツのアナリティクスを表示します。
Engagement API の統合方法
API の概要
- Post ID の配列
- 関心のあるメトリックタイプを指定する配列。タイプには「impressions」「retweets」「hashtag_clicks」「user_follows」などが含まれます。
- Engagement groupings。API レスポンスでエンゲージメントのデータをどのようにグルーピングするかを示す JSON 構造です。
- Totals - Post に対するエンゲージメントの総計を返します。一部のメトリクスはすべての Post で利用可能ですが、他は過去90日分のみ利用可能です。
- 28 hour - 直近28時間の時系列エンゲージメント指標を返します。
- Historical - 2014年9月1日以降に投稿された Post を対象に、最大4週連続の時系列エンゲージメント指標を返します。
API へのアクセスの取得
リクエストの作成
1/ 本日、X API プラットフォームの未来に向けたビジョンを共有します!https://t.co/XweGngmxlP — Twitter Dev (@TwitterDev) 2017年4月6日
あなたのPostに関するPostをお見逃しなく。 iOS で、コメント付きのRetweetを1か所でまとめて確認できるようになりました。 pic.x.com/oanjZfzC6y — X (@X) 2020年5月12日最初のステップは、JSON で API リクエストを組み立てることです。2つのPostのidを配列に入れ、取得したいエンゲージメント種別の配列を用意し、レスポンスでのメトリクスの並びを指定する、任意名の「groupings」JSON オブジェクトを含めます。以下がリクエストの例です。
- Content-Type: application/json
- Accept-Encoding: gzip
OAuth での認証
Engagement API エンドポイントの選択
- Totals - “owned” または “unowned” の Post を対象に、選択した指標の合計値を提供します。一部の指標はすべての Post で利用可能ですが、他の指標は過去 90 日以内に公開された Post のみ利用可能です。1 リクエストあたり最大 250 件の Post に対応します。
- 28 hour - 過去 28 時間の “owned” な Post に対する時系列のエンゲージメント指標を提供します。1 リクエストあたり最大 25 件の Post に対応します。
- Historical - 2014 年 9 月 1 日以降に投稿された “owned” な Post を対象に、最大 4 週間連続の時系列エンゲージメント指標を提供します。1 リクエストあたり最大 25 件の Post に対応します。
重要な概念
インプレッションおよびエンゲージメント指標
所有コンテンツと非所有コンテンツ(X)
合計および時系列のエンゲージメントデータ
エンドポイントと利用例
/totals
- 一部のメトリック種別(Impressions、Engagements、Favorites、Retweets、Quote Tweets、Replies、Video Views)へのアクセスだけで十分です。
- 自分が所有するPostだけでなく、任意のPostの基本的なエンゲージメントdataにアクセスしたい。
- 競合他社とのパフォーマンスを比較したい。
- 自分が所有していないPostを含むハッシュタグやキャンペーンの基本的なエンゲージメント統計を追跡したい。
- 日別や時間別に分割されたdataは不要で、リクエスト時点の合計値だけが必要です。
- レポートやダッシュボードに表示する単一のメトリックが必要で、dataは保存したくない。
- ページ読み込み時にdataを表示したく、リクエストしてレスポンスを受け取るだけでよい。
- 1日に数十万〜数百万件のPostのdataを取得するためのアクセスが必要です。
/28hr
- 17種類すべての指標タイプにアクセスする必要があります。
- 直近28時間に投稿された最新のPostのデータを表示したい。
- 1日1回実行するジョブがあり、必要なデータは直近1日分のみ取得すればよい。
- 指標を日別または時間別に分割して取得する必要があります。
- ダッシュボードで1時間ごとのアクティビティを時系列で表示したい。
- 1日あたり数十万件のPostに対して高いアクセス権限が必要です。
- ストレージのキャパシティがあり、1日1回dataをリフレッシュして累計を持続的に保持できます。
/historical
- 17種類すべてのメトリックタイプにアクセスする必要があります。
- 2014年9月まで遡って作成されたPostの過去データを取得する必要があります。
- キャンペーン同士を比較する詳細な過去分析を表示したいです。
- メトリクスを日別または時間別に内訳で確認できる必要があります。
- Engagement API への高レベルのアクセスは不要で、1日に数百〜数千件のPostについてのdataを取得できれば十分です。
Engagement API キーの特性
- RESTful API は JSON データを返し、JSON ボディを持つ POST リクエストをサポートします。
- リクエストの種類: クライアントアプリは次の種類のリクエストを行えます:
- 合計エンゲージメント — /totals エンドポイントへの HTTP POST リクエスト
- 直近28時間のエンゲージメント — /28hr エンドポイントへの HTTP POST リクエスト
- 履歴エンゲージメント — /historical エンドポイントへの HTTP POST リクエスト
- OAuth 認証:
- OAuth 1.0a ユーザーコンテキスト: 3-legged OAuth を使用してあなたのアプリを認可したユーザーが所有する Post については、提供されるすべての指標が利用できます。リクエスト時にはそのユーザーの Access Token を使用する必要があります。
- OAuth 2.0 ベアラートークン: 特定の指標(Retweets、Quote Tweets、Replies、Favorites、Video Views)は、任意の公開 Post で利用可能です。
- リクエストのメタデータと構造: リクエストデータは、Post ID の配列、エンゲージメントタイプの配列、エンゲージメントのグルーピング構造で構成される JSON オブジェクトです。
- リクエストあたりの Post 数:
- /totals エンドポイント: 250 Post ID
- /28hr エンドポイント: 25 Post ID
- /historical エンドポイント: 25 Post ID
- エンゲージメント指標の提供範囲:
- /totals — Post の投稿以降の累計。Impressions と Engagements は直近90日以内に公開された Post で利用可能で、Retweets、Quote Tweets、Replies、Favorites、Video Views はすべての Post で利用可能です。
- /28hr — リクエスト時点から直近28時間。
- /historical — 2014年9月1日から始まる任意の28日間。
- 指標タイプ: 各リクエストには Metric Types の配列が含まれます。提供範囲はエンドポイントに依存し、/totals エンドポイントの場合は Post がユーザー許可済みかどうかにも依存します。
- /totals エンドポイント:
- すべての Post: Favorites、Retweets、Quote Tweets、Replies、Video Views
- OAuth 1.0a ユーザーコンテキストが必要: Impressions、Engagements、Favorites、Replies、Retweets
- /28hr および /historical エンドポイント(Post 所有者の Access Token を用いた OAuth 1.0a ユーザーコンテキストが必要): 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 の配列が含まれます。これらのグルーピングにより、返される指標の整理方法をカスタマイズできます。各リクエストには最大3つまでグルーピングを含められます。指標は以下の値で整理できます:
- すべてのエンドポイント: Post ID、Engagement Type
- /28hr および /historical エンドポイント: 次の追加グルーピングを指定した場合、時系列が提供されます: Engagement Day、Engagement Hour
- 統合に関する期待事項: 貴チームには以下の責任があります。
- リクエストに含まれる Post ID についてエンゲージメント指標を返す Engagement API へ HTTP リクエストを送信できるクライアントアプリの作成と保守。
- 制限事項
- Video Views は、Post が公開から 1,800 日以内のものに限り利用可能です。
Engagement API での認証
ご注意: API を使用開始する前に、X があなたの開発者アプリに対して Engagement API へのアクセスを有効化する必要があります。認証に使用する予定のアプリの App ID を、アカウントマネージャーまたはテクニカルサポートチームに必ず共有してください。Engagement API には 2 つの認証方法があります: OAuth 1.0a と OAuth 2.0 Bearer Token。 OAuth 2.0 Bearer Token(「application-only」とも呼ばれます)は、公開されているエンゲージメント指標へアクセスできます。この認証方法は、/totals エンドポイント へのリクエスト時に、公開されている任意の Post について 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 では、たとえこれらの Post の所有者であるユーザーに代わって認証している場合でも、保護された Post のエンゲージメントデータを取得することはできません。これを試みると、メッセージ "Tweet ID(s) are unavailable" とともに 400 Bad Request エラーが返されます。
自分の X アカウント(つまり、開発者アプリを所有するアカウント)に代わってリクエストを送信する場合は、開発者ポータル の該当アプリの「Keys and tokens」タブから、必要な Access Tokens を直接生成できます。
他のユーザーに代わってリクエストを送信する場合は、必要な Access Tokens を取得するために 3-legged OAuth フローを使用する必要があります。方法の詳細は次のドキュメントを参照してください: OAuth 1.0a: how to obtain a user’s access tokens。
その他の例(OAuth 1.0a を使用した認証方法を含む)については、X Developers の Engagement API 向けサンプル Python コードを参照してください。
Engagement API の最近の変更
| Metric | Change |
| engagements | overall engagements を構成する内訳指標を更新し、Post アナリティクスダッシュボードとの整合性を持たせました。Engagements は「この Post にユーザーが操作・反応した回数」を表します。 動画や GIF などのメディアを含む Post では、engagements 指標にメディアのビューは含まれなくなりました。メディアのビューは新しい指標 media_views で参照できます。 |
| media_clicks* | この指標は新しい指標「media_engagements」に置き換えられました。 |
| video_views | 2018 年 7 月 6 日以降、この指標は「未所有」の Post についても /totals エンドポイントで利用可能です。つまり、アプリのみの認証を使用することで、すべての Post の動画再生数にアクセスできます。 リクエストできる動画再生数は 1800 日以内のものに限られます。1800 日より前の Post の動画再生数をリクエストすると、次のレスポンスが返されます。 “unsupported_for_video_views_tweet_ids”: [“TWEET_ID”] 注意: media_views と異なり、video_views は MRC の基準(動画の 50% が少なくとも 2 秒間視認されること)に準拠します。 また、X が自社運営するプラットフォーム(モバイルアプリおよびウェブサイト)に表示される動画再生数と、/28hr および /historical エンドポイントで取得する数値に差異が生じる場合があります。 * X のユーザーインターフェースに表示され、/totals エンドポイントで提供される動画再生数は、該当する動画が投稿されたすべての Post を横断して集計された値です。つまり、UI に表示される指標には、その動画がリポストや引用リポストされたすべてのインスタンスの合算ビューが含まれます。 * /28hr および /historical エンドポイントで提供される動画再生数は、指標を取得している特定の Post によって生成されたビューのみを含みます。 |
| media_views | 動画、Vine、GIF、画像全体でカウントされた、あなたのメディアのすべてのビュー(自動再生およびクリック再生)を含みます。 注意: 画像を含む Post については、アナリティクスダッシュボードには media_views 指標が表示されませんが、Engagement API では返されます。 |
| media_engagements* | 動画、Vine、GIF、画像全体でのメディアへのクリック数を含みます。この指標は media_clicks を置き換えるものです。 |
| quote_tweets | 2020 年 7 月 7 日以降、この指標は「未所有」の Post についても /totals エンドポイントで利用可能です。つまり、アプリのみの認証を使用して、すべての Post の引用 Post 数にアクセスできます。 |
指標の解釈
インプレッションおよびエンゲージメントデータ
動画メトリクス
- /totals エンドポイントおよび X のユーザーインターフェースで提供される動画視聴数は、当該動画が投稿されたすべての Post を横断して集計された値を表示します。つまり、/totals で提供され、X の UI に表示されるメトリクスには、その動画が別の Post で Retweet または再投稿された各インスタンスからの視聴数が合算されています。
- /28hour および /historical の Engagement API エンドポイントで提供される動画視聴数は、メトリクスを取得している特定の Post によって生成された視聴のみを含みます。
Engagement API のグルーピング
- tweet.id
- engagement.type
/28hr と /historical は時系列指標を提供できるため、次もサポート:
- engagement.day
- engagement.hour
group_by の値の順序を変えることで、希望する結果の形式に変更できます。group_by の値が 4 つ含まれるグルーピングは、次の 2 つの形式のいずれかでのみサポートされます:
よくあるご質問
エンタープライズ
Engagement API
Engagement API にはどのようにアクセスできますか?
Engagement API にはどのようにアクセスできますか?
Engagement API へのアクセスは、エンタープライズのサブスクリプションで提供しています。営業チームへの連絡はこのフォームからご送信ください。
利用状況は「@handle」でどのように管理されますか?
利用状況は「@handle」でどのように管理されますか?
ご契約に、Engagement API で使用できるユニークな handle 数の上限が含まれている場合があります。X の内部システムは、Engagement API でクエリされた Post を所有する認証済みユーザー数を追跡します。お客様側でも、このユニーク数をクライアント側で管理してください。現在、Engagement API の @handle 利用状況を確認するための Usage API や UI はありません。契約数を超える @handle がリクエストされた場合でも、システムがブロックすることはありません。請求月末に、クエリされたユニークな @handle の数が契約数量と照合され、契約条件に従って超過分が課金されます。
Engagement API の @handle 利用状況を確認できますか?
Engagement API の @handle 利用状況を確認できますか?
現在、Engagement API の @handle 利用状況を確認するための Usage API や UI はありません。契約数を超える @handle がリクエストされた場合でも、システムがブロックすることはありません。請求月末に、クエリされたユニークな @handle の数が契約数量と照合され、契約条件に従って超過分が課金されます。ペイロードで返される
engagements メタデータフィールドが、各種エンゲージメント指標の合計と一致しません。なぜですか?これは想定どおりの挙動です。engagements メタデータフィールドは、API が返す個々のエンゲージメント指標の合計と常に一致するとは限りません。これは、engagements メタデータフィールドに、ペイロード内で個別の指標として分解されていない追加のエンゲージメントが含まれる場合があるためです。言い換えると、各種エンゲージメント指標を合算しても、ペイロードで返される engagements 指標フィールドの値と一致しない場合があります。engagements メタデータフィールドは、Post 上で行われたあらゆるクリックやインタラクションと考えることができます。
ペイロードレスポンスの url_clicks フィールドが数値を返していますが、該当の Post には URL がありません。どうしてですか?ハッシュタグのように(別ページへのリンクを生成する)要素を含む Post の場合、ユーザーがそれをクリックすると URL クリックとして計上されることがあるためです。
特定の Post のエンゲージメントデータを受け取れないのはなぜですか?
特定の Post のエンゲージメントデータを受け取れないのはなぜですか?
特定の Post のエンゲージメントデータを取得できない理由はいくつか考えられます。例えば、次のような場合です。
- リクエストした Post ID が、第三者に代わってデータを取得するために使用している認証トークンに基づいて利用できない。
- /totals エンドポイントに関するリクエストで、対象の Post ID が過去90日以内ではなく、そのためインプレッションやエンゲージメント指標の返却対象外である。
- リクエストした Post 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 を渡していますが、次のエラーが返ってきます。どうすればよいですか?
まだお探しの情報が見つかりませんか?
未回答の質問があります
未回答の質問があります
技術サポートまでお問い合わせください。迅速にご対応いたします。
API リファレンス
POST insights/engagement
メソッド
| メソッド | 説明 |
|---|---|
| POST /insights/engagement/totals | 複数の Tweet の合計インプレッション数とエンゲージメント数を取得します。 |
| POST /insights/engagement/historical | 2014年9月1日までさかのぼり、最長4週間の期間における複数の Tweet のインプレッション数とエンゲージメント数を取得します。 |
| POST /insights/engagement/28hr | 過去28時間における複数の Tweet のインプレッション数とエンゲージメント数を取得します。 |
認証
- 所有する Tweet に限定される Impressions および Engagements のメトリクスタイプを取得するための /totals への任意のリクエスト
- /28hr への任意のリクエスト
- /historical への任意のリクエスト
- 任意の Tweet を対象に取得できる Favorites、Replies、Retweets、または Video Views の各メトリクスタイプを取得するための /totals への任意のリクエスト
POST /insights/engagement/totals
| リクエストメソッド | HTTP POST |
| URL | https://data-api.x.com/insights/engagement/totals |
| コンテンツの種類 | application/json |
| 圧縮 | Gzip。Gzip 圧縮でリクエストするには、接続時のリクエストに Accept-Encoding ヘッダーを付与してください。 ヘッダーは次のようになります。 Accept-Encoding: gzip |
| Post の形式 | リクエストは、本文にTweet IDのコレクションと目的のグルーピングを含むJSONオブジェクトを持つPOSTリクエストとして送信できます。POSTは次の形式の配列としてフォーマットされます。tweets、エンゲージメント、およびgroupingsオブジェクト。各リクエストには最大で250件のTweet IDを含めることができます。POST リクエストボディの例は次のとおりです: { “Tweet_ids”: [ “Tweet ID 1”, “Tweet ID 2”、 “Tweet ID 3” ], “エンゲージメント_型”: [ “表示回数”、 “エンゲージメント数」、 “ブックマーク”、 “引用文_Tweets” ], “グループ化”:{ “グルーピング名”:{ “グループ_提供元”: [ “tweet.id”、 “engagement.type” ] } } } |
| Tweet の ID | エンゲージメントデータの取得対象となる Tweet の Tweet ID を含む配列です。認証中の @handle が作成した Tweet に対してのみ data をリクエストできます。1 回のリクエストに含められるのは最大 250 件の Tweet までで、Tweet ID は文字列として指定する必要があります。 |
| エンゲージメントの種別 | クエリ対象のエンゲージメント指標の種類を含む配列。Totals エンドポイントでは、以下のエンゲージメントタイプのみがサポートされています:インプレッション、エンゲージメント,favorites,retweets、quote_tweets、replies、video_views。The /totalsこのエンドポイントは取得に対応していますimpressionsおよびエンゲージメント過去90日以内に作成されたTweetについて、かつfavorites、retweets、quote_tweets、返信、およびvideo_views任意のTweetに対して。 |
| グループ化 | Engagement API の結果は、ニーズに最適な形で返せるよう、複数のグループに分けて取得できます。1 回のリクエストで指定できるグループは最大 3 つです。 各グループ化ごとに、アプリ内でこのグループ化タイプを参照しやすくするためのカスタム名を定義できます。 グルーピング名を定義したら、 tweet.id および/または engagement.type でグループ化することを選択できますtweet.idおよび/またはengagement.type.グルーピングは順番どおりに適用されるため、group_by の順序を変えることで、目的の結果フォーマットに変更できます_値ごとに。たとえば、Tweet ID と指標タイプでメトリクスを分けて表示するグループ化は次のようになります: “グループ化”:{ “自分のグループ名”:{ “グループ_作成者:”: [ “Tweet.id”、 “engagement.type” ] } } |
| POST サイズ上限 | 1回のリクエストで、最大250件のTweetのIDを指定できます。 |
| 応答形式 | JSON。リクエストヘッダーでレスポンス形式として JSON を指定してください。 |
| レートリミット | アクセスレベルに応じ、契約で定められたとおり、1分単位のレート制限が適用されます。 |
| リクエスト例(公開メトリクス) | curl —request POST —urlhttps://data-api.x.com/insights/engagement/totals —header’accept-encoding: gzip’ —header’Authorization: Bearer’ —header’Content-Type: application/json’ —data’{ “Tweet_ids”: [ “1070059276213702656”、“1021817816134156288”,“1067094924124872705” ], “エンゲージメント_型”: [ “お気に入り”、“リツイート”、“返信”,“引用符_Tweets”、“動画_表示回数” ], “グループ化”:{ “perTweetMetricsUnowned”:{ “グループ_作成者:”: [ “tweet.id”、 “engagement.type” ] } } } —verbose —compressed |
| リクエストの例 | curl —request POST —urlhttps://data-api.x.com/insights/engagement/totals —header’accept-encoding: gzip’ —header’authorization: OAuth oauth_消費者_key=“アプリのコンシューマーキー”,oauth_nonce=“生成ノンス”,oauth_signature=“生成署名”,oauth_署名_method=“HMAC-SHA1”, OAuth_timestamp=“生成タイムスタンプ”,oauth_token=“認証済みユーザーのアクセストークン”, OAuth_version=“1.0”’ —header’content-type: application/json’ —data’{ “Tweet_ids”: [ “1060976163948904448”、“1045709644067471360” ], “エンゲージメント_型”: [ “お気に入り”、“返信”、“リポスト”、“ビデオ_表示回数”、“インプレッション”、“エンゲージメント” ], “グループ化”:{ “perTweetMetricsOwned”:{ “グループ_作成者:”: [ “tweet.id”、 “engagement.type” ] } } }’ —verbose —compressed |
| レスポンス例(公開メトリクス) | { “perTweetMetricsUnowned”:{ “1021817816134156288”:{ “お気に入り”:“530”、 “引用符_Tweets”:“79”, “返信”:“147”、 “リポスト”:“323”、 “動画_表示回数”:“0” }, “1067094924124872705”:{ “お気に入り”:“1360”、 “引用_Tweet”:“29”、 “返信”:“56”、 “リツイート”:“178”、 “動画_表示回数”:“5754512” }、 “1070059276213702656”:{ “お気に入り”:“69”、 “引用文_Tweets”:“5”、 “返信”:“7”, “リツイート数”:“26”、 “動画_表示回数”:“0” } } } |
| 応答例 | { “perTweetMetricsOwned”:{ “1045709644067471360”:{ “エンゲージメント”:“2”、 “お気に入り”:“0”、 “インプレッション数”:“47”、 “返信”:“0”、 “リポスト”:“8”、 “引用句_Tweets”:“5”、 “動画_表示回数”:“0” }、 “1060976163948904448”:{ “エンゲージメント数”:“4”、 “お気に入り”:“0”、 “インプレッション数”:“148”、 “返信”:“1”、 “リツイート”:“9”、 “引用符_Tweet”:“2”、 “ビデオ_表示数”:“0” } } } |
| 利用不可の Tweet ID | 利用できなくなった(例:削除された)Tweet ID を含むクエリでは、利用可能なすべての Tweet ID について適切なデータが返され、利用できない Tweet ID は unavailable_tweet_ids という配列で参照されます。unavailable_tweet_ids。例:{ “開始”:“2015-11-17T22:00:00Z”, “終了”:“2015-11-19T02:00:00Z”、 “利用できません_Tweet_ids”: [ “323456789” ], “グループ1”:{ “423456789”:{ “ブックマーク”:“67”、 “返信”:“8”、 “リツイート”:“26”, “引用_Tweets”:“2” } } } |
POST /insights/engagement/28hr
| リクエストメソッド | HTTP POST |
| URL | https://data-api.x.com/insights/engagement/28hr |
| コンテンツタイプ | application/json |
| 圧縮 | Gzip。Gzip圧縮を利用してリクエストするには、接続リクエストで Accept-Encoding ヘッダーを送信してください。 ヘッダーは次のようになります。 Accept-Encoding: gzip |
| Post の形式 | リクエストは、本文にTweetのIDコレクションと希望するグルーピングを含むJSONオブジェクトを持つPOSTリクエストとして送信できます。POSTは配列として、次の形式でフォーマットされます。tweets、エンゲージメント、ならびにgroupingsオブジェクト。各リクエストで指定できる Tweet ID の上限は 25 件です。POST リクエストボディの例は次のとおりです: { “Tweet_ids”: [ “Tweet ID 1”、 “Tweet ID 2”、 “Tweet ID 3” ], “エンゲージメント_型”: [ “インプレッション数”、 “エンゲージメント数”、 “url_クリック数”、 “詳細_拡張” ], “グループ化”:{ “グルーピング名”:{ “グループ_作成者”: [ “tweet.id”、 “engagement.type”、 “engagement.hour” ] } } } |
| Tweet の ID | エンゲージメントデータを取得する対象の Tweet の Tweet ID を含む配列です。認証中の @handle が作成した Tweet に対してのみデータをリクエストできます。28 時間エンドポイントでは、1 回のリクエストで最大 25 件の Tweet に対応しており、Tweet ID は文字列として指定する必要があります。 |
| エンゲージメントの種類 | 照会するエンゲージメント指標の種類を指定する配列。 28時間のエンドポイントの場合、 インプレッション、エンゲージメント、個々のエンゲージメントの種類はすべてサポート対象の指標です。サポートされているエンゲージメント指標の一覧はエンゲージメント・データ. |
| グループ化 | Engagement API の結果は、ニーズに最も適した形となるよう、異なるグループで返すことができます。1回のリクエストで指定できるグルーピングは最大3つです。 各グループ化ごとに、アプリケーション内でこのグループ化タイプを参照しやすくするためのカスタム名を定義できます。名前を定義したら、以下の値のうち1つ以上でグループ化できます: tweet.id engagement.type engagement.day engagement.hour グループは順次評価されるため、group_by の並び順を変更すれば、求める結果の形式を切り替えられます_値ごと。例えば、Tweet ID とメトリックの種類で指標を分けて表示するグループ化の例は、次のようになります: “グループ化”:{ “グループ名(自分用)”:{ “グループ_作成者”: [ “tweet.id”、 “engagement.type”、 “engagement.day” ] } } group_by が 4 つあるグルーピング group_byitems は、次のいずれか 2 通りの順序で並んでいる場合にのみ有効です。4group_by単一のグループ内で、以下のいずれにも該当しない項目はエラーとなります。さらに、4group_byリクエストごとに許可されるアイテム数は items です。“グループ_作成者:”: [ “tweet.id”、 “engagement.type”、 “engagement.day”、 “engagement.hour” ] “グループ_作成者:”: [ “engagement.type”、 “tweet.id”、 “engagement.day”, “engagement.hour” ] |
| POST サイズ制限 | 1回のリクエストで最大25件のTweet IDを指定できます。 |
| 応答フォーマット | JSON。レスポンス形式が JSON であることを、リクエストのヘッダーで指定してください。 |
| レートリミット | アクセス権限レベルに応じ、契約で定められたとおり、1分単位のレート制限が適用されます。 |
| リクエストの例 | curl -X POST”https://data-api.x.com/insights/engagement/28hr” -H’Accept-Encoding: gzip’ -H’認可 OAuth oauth_消費者_key=“アプリのコンシューマーキー”,oauth_nonce=“生成ノンス”,oauth_signature=“生成済み署名”,oauth_署名_method=“HMAC-SHA1”, OAuth_timestamp=“生成タイムスタンプ”,oauth_token=“認証済みユーザー用アクセス トークン”, OAuth_version=“1.0”’ -d’{ “Tweet_ids”: [ “123456789” ], “エンゲージメント_型”: [ “インプレッション数”, “エンゲージメント数” ], “グループ化”:{ “時間単位の時系列”:{ “グループ_作成者”: [ “tweet.id”、 “engagement.type”、 “engagement.day”, “engagement.hour” ] } } }‘ |
| 応答例 | { “開始”:“2015-09-14T17:00:00Z”, “終了”:“2015-09-15T22:00:00Z”, “時間単位タイムシリーズ”:{ “123456789”:{ “インプレッション数”:{ “2015-09-14”:{ “17”:“551”、 “18”:“412”、 “19”:“371”, “20”:“280”、 “21”:“100”, “22”:“19”, “23”:“6” }、 “2015年9月15日”:{ “00”:“5”, “01”:“2”、 “02”:“7”, “03”:“3”、 “04”:“1”, “05”:“0”, “06”:“0”、 “07”:“0”, “08”:“0”, “09”:“0”、 “10”:“0”, “11”:“0”、 “12”:“0”, “13”:“0”、 “14”:“0”, “15”:“0”、 “16”:“0”, “17”:“0”、 “18”:“0”, “19”:“0”, “20”:“0”, “21”:“0” } }、 “エンゲージメント数”:{ “2015年9月14日”:{ “17”:“0”、 “18”:“0”, “19”:“0”, “20”:“0”、 “21”:“0”、 “22”:“0”、 “23”:“0” }, “2015年9月15日”:{ “00”:“0”、 “01”:“0”、 “02”:“0”、 “03”:“0”、 “04”:“0”, “05”:“0”、 “06”:“0”、 “07”:“0”、 “08”:“0”, “09”:“0”, “10”:“0”、 “11”:“0”, “12”:“0”、 “13”:“0”, “14”:“0”、 “15”:“0”、 “16”:“0”、 “17”:“0”, “18”:“0”、 “19”:“0”, “20”:“0”、 “21”:“0” } } } } } |
| 取得できない Tweet のID | 利用できなくなった(例:削除された)Tweet ID を含むクエリでは、利用可能なすべての Tweet ID については適切な data が返され、利用できない Tweet ID は unavailable_tweet_ids という配列で示されますunavailable_tweet_ids。例:{ “開始”:“2015-11-17T22:00:00Z”, “終了”:“2015-11-19T02:00:00Z”、 “利用できません_Tweet_ids”: [ “323456789” ], “group1”:{ “423456789”:{ “お気に入り”:“67”、 “返信”:“8”、 “リポスト”: 26 } } } |
POST /insights/engagement/historical
| リクエストメソッド | HTTP POST |
| URL | https://data-api.x.com/insights/engagement/historical |
| コンテンツの種類 | application/json |
| 圧縮 | Gzip。Gzip 圧縮でリクエストするには、接続リクエストに Accept-Encoding ヘッダーを付与してください。 ヘッダーは次のようになります。 Accept-Encoding: gzip |
| POST のフォーマット | リクエストは、本文にTweetのIDの集合と希望するグルーピングを含むJSONオブジェクトを持つPOSTリクエストとして送信できます。POSTは、次の形式の配列としてフォーマットされますtweets、エンゲージメント、およびgroupingsobject. 各リクエストで指定できる Tweet ID の最大数は 25 件です。各リクエストには、最長 4 週間のカスタムの開始日と終了日を指定できます。{ “Tweet_ids”: [ “Tweet ID 1”、 “Tweet ID 2”、 “Tweet ID 3” ], “エンゲージメント_型”: [ “インプレッション数”、 “エンゲージメント数”、 “URL_クリック数”、 “詳細_展開” ], “グループ化”:{ “グループ名”:{ “グループ_作成:”: [ “Tweet.id”、 “engagement.type”、 “engagement.hour” ] } } } |
| 開始日と終了日 | 開始日と終了日は、カスタム値で指定できますstartおよびendリクエストの一部として start と end の値を指定します。開始日と終了日は、期間が4週間を超えないように設定する必要があります。現時点で指定可能な最も古い開始日は2014年9月1日です。将来日を終了日に指定することはできません。開始日と終了日が指定されない場合、APIは直前の4週間をデフォルトとして使用します。Engagement API から返される data の最小粒度は1時間です。Start または End の値がちょうど1時間の区切りに一致しないリクエストは、最も近い包含的な時刻(1時間単位)に丸められます。たとえば、次のリクエストでは”開始”:“2015-07-01T12:24:00Z”および”終了”:“2015-07-10T08:37:00Z”既定では~になります”開始”:“2015-07-01T12:00:00Z”、“終了”:“2015-07-10T09:00:00Z”. |
| Tweet の ID | エンゲージメントデータを取得する対象のTweetのTweet IDを含む配列です。注意:リクエストできるのは、認証中の@handleが作成したTweetに限られます。4週間の履歴エンドポイントでは、1リクエストあたり最大25件のTweetをサポートし、Tweet IDは文字列として指定する必要があります。 |
| エンゲージメントの種類 | クエリ対象のエンゲージメント指標の種類を含む配列。 4週間の履歴エンドポイントでは、 インプレッション、エンゲージメント、すべての個別のエンゲージメント種別がサポート対象の指標です。サポートされているエンゲージメント指標の一覧については次を参照してくださいエンゲージメント・データ。注: 2015年9月15日以前のクエリでは、現在、次の3つの指標がゼロで表示されます。 favorites、返信、ならびにretweets。 |
| グルーピング | Engagement API の結果は、ニーズに最も適した形で複数のグループに分けて返すことができます。1 回のリクエストに含められるグルーピングは最大 3 つです。 各グループごとに、アプリ内でこのグループ種別を参照しやすくするためのカスタムのグループ名を定義できます。グループ名を定義した後は、次の値のうち1つ以上でグループ化を選択できます。 tweet.id engagement.type engagement.day engagement.hour グループ化は逐次的に適用されるため、グループの順序を変えることで、望ましい結果の形式に調整できます_値別。たとえば、Tweet ID とメトリックの種類ごとに指標を分けて表示するグループ化は、次のようになります。 “グループ化”:{ “自分のグループ名”:{ “グループ_作成者:”: [ “tweet.id”, “engagement.type”、 “engagement.day” ] } } 4 つの group_by を含むグルーピングgroup_by``group_by アイテムは、次の2種類の順序のいずれかを使用している場合にのみ有効です。4つの group_by``group_by以下のいずれにも該当しない単一のグルーピング内の group_by 項目はエラーを返します。さらに、4group_byリクエストごとに許可される項目数は制限されます。“グループ_作成者:”: [ “tweet.id”、 “engagement.type”、 “engagement.day”、 “engagement.hour” ] “グループ_作成者:”: [ “engagement.type”、 “tweet.id”、 “engagement.day”、 “engagement.hour” ] |
| Post のサイズ上限 | 1回のリクエストで指定できる Tweet ID の最大数は25件です。 |
| 応答形式 | JSON。レスポンスは JSON 形式になるよう、リクエストヘッダーで JSON を指定してください。 |
| レートリミット | アクセスレベルに応じて、契約で定められたとおり、1分あたりのレート制限が適用されます。 |
| リクエストの例 | curl -X POST”https://data-api.x.com/insights/engagement/historical” -H’Accept-Encoding: gzip’ -H’認可 OAuth oauth_消費者_key=“アプリ用のconsumer_key”,oauth_nonce=“生成ノンス”,oauth_signature=“生成された署名”,oauth_署名_method=“HMAC-SHA1”, OAuth_timestamp=“生成タイムスタンプ”,oauth_token=“認証済みユーザーのアクセス トークン”, OAuth_version=“1.0”’ -d’{ “開始”:“2015年8月1日”、 “終了”:“2015-08-15”, “Tweet_ids”: [ “123456789”、 “223456789”、 “323456789” ], “エンゲージメント_型”: [ “インプレッション数”、 “エンゲージメント数”, “URL_クリック数”, “詳細_拡張” ], “グループ化”:{ “types-by-tweet-id”:{ “グループ_作成:”: [ “Tweet.id”, “engagement.type” ] } } }‘ |
| サンプル応答 | { “開始”:“2015-08-01T00:00:00Z”, “終了”:“2015-08-15T00:00:00Z”、 “types-by-tweet-id”:{ “123456789”:{ “インプレッション”:“0”、 “エンゲージメント数”:“0”、 “URL_クリック数”:“0”、 “詳細_展開する”:“0” }, “223456789”:{ “インプレッション数”:“788”、 “エンゲージメント数”:“134”、 “URL_クリック数”:“30”、 “詳細_拡張する”:“1323” }, “323456789”:{ “インプレッション数”:“4”, “エンゲージメント数”:“0”、 “URL_クリック数”:“2”, “詳細_拡張”:“0” } } } |
| 利用できない Tweet のID | 削除などにより利用できなくなった Tweet ID を含むクエリでは、利用可能なすべての Tweet ID については適切なdataが返され、利用できない Tweet ID は unavailable_tweet_ids という配列で示されます。unavailable_tweet_ids。例えば:{ “開始”:“2015-11-17T22:00:00Z”、 “終了”:“2015-11-19T02:27:50Z”、 “利用できません_Tweet_ids”: [ “323456789” ], “グループ1”:{ “423456789”:{ “お気に入り”:“67”、 “返信”:“8”、 “リポスト”: 26 } } } |
レスポンスコード
| Status | Text | Description |
|---|---|---|
| 200 | OK | リクエストは成功しました。 |
| 400 | Bad Request | 一般的に、リクエストに無効な JSON が含まれている場合、または JSON ペイロードが送信されていない場合に返されます。 |
| 401 | Unauthorized | 無効な認証情報のため、HTTP 認証に失敗しました。OAuth のキーとトークンを確認してください。 |
| 404 | Not Found | リクエスト先の URL にリソースが見つかりません。URL が誤っている可能性があります。 |
| 429 | Too Many Requests | アプリが API リクエストの上限を超過しました。 |
| 500 | Internal Server Error | Gnip 側でエラーが発生しました。指数バックオフで再試行してください。 |
| 502 | Proxy Error | Gnip 側でエラーが発生しました。指数バックオフで再試行してください。 |
| 503 | Service Unavailable | Gnip 側でエラーが発生しました。指数バックオフで再試行してください。 |
エラーメッセージ
| エラーメッセージ | 説明 |
|---|---|
"errors":["Your account could not be authenticated. Reason: Access token not found"] | リクエストの認証に関するエラーです。“Reason” にトラブルシューティングに役立つ情報が記載されます。解決できない場合は、“Reason” を含むエラー全文をサポートチーム宛てに送付してください。 |
"errors":["1 Tweet ID(s) are unavailable"],"unavailable_tweet_ids": ["TWEET_IDS"] | リクエストした Tweet の ID が利用できません。通常は削除された、または他の理由により公開されていないことを示します。 |
"errors":["Impressions & engagements for tweets older than 90 days (*TIME_PERIOD*) are not supported"],"unsupported_for_impressions_engagements_tweet_ids":[*TWEET_IDS*] | /totals エンドポイント向けにリクエストした Tweet の ID が 90 日以内ではないため、impressions や engagements のメトリクスは返されません。 |
"errors":["Forbidden to access tweets: *TWEET_IDS*"] | 第三者のために data を取得する目的で使用している認証トークンの権限に基づき、リクエストした Tweet の ID にはアクセスできません。 |