概要
Webhook 配信
イベントをサーバーへリアルタイムに配信
リアルタイム
X のスピードでデータを配信 — ポーリング不要
包括的
Post、DM、フォロー、いいね、ブロック、ミュートなど
サブスクリプション方式
ユーザーアカウントをサブスクライブしてすべてのアクティビティを受信
仕組み
- Webhook を登録する — V2 Webhooks API 経由で Webhook URL を登録します
- ユーザーをサブスクライブする — Webhook にユーザーサブスクリプションを追加します
- イベントを受信する — JSON ペイロードを含む POST リクエストとしてアクティビティイベントを受け取ります
- イベントを処理する — アプリケーションでイベントを処理し、
200 OKを返します
アクティビティタイプ
Webhook 登録に対する各ユーザーサブスクリプションについて、以下のすべての関連アクティビティを受信します:- Post (ユーザーによる)
- Post の削除 (ユーザーによる)
- @メンション (ユーザーへの)
- 返信 (ユーザーへ、またはユーザーから)
- リポスト (ユーザーによる、またはユーザーの Post に対する)
- 引用 Post (ユーザーによる、またはユーザーの Post に対する)
- 引用 Post のリポスト (ユーザーによる、またはユーザーの Post に対する)
- いいね (ユーザーによる、またはユーザーの Post に対する)
- フォロー (ユーザーによる、またはユーザーに対する)
- アンフォロー (ユーザーによる、またはユーザーに対する)
- ブロック (ユーザーによる、またはユーザーに対する)
- ブロック解除 (ユーザーによる、またはユーザーに対する)
- ミュート (ユーザーによる、またはユーザーに対する)
- ミュート解除 (ユーザーによる、またはユーザーに対する)
- ダイレクトメッセージの送信 (ユーザーによる)
- ダイレクトメッセージの受信 (ユーザーによる)
- 入力中インジケーター (ユーザーへの)
- 既読通知 (ユーザーへの)
- サブスクリプションの取り消し (ユーザーによる)
Account Activity API 経由でホームタイムラインのデータは配信されません。このデータの取得には User Posts timeline by User ID エンドポイントをご利用ください。Account Activity API から返される Post は、月次の Post 上限にカウントされます。
機能サマリー
Account Activity データオブジェクトの構造
利用可能なアクティビティ
ペイロード例
以下は各 Account Activity イベントのペイロード例です。tweet_create_events (Post、リポスト、返信、引用 Post)
tweet_create_events (@メンション)
favorite_events
follow_events
unfollow_events
block_events
unblock_events
mute_events
unmute_events
user_event
direct_message_events
direct_message_indicate_typing_events
direct_message_mark_read_events
tweet_delete_events
ロングフォーム Post のサポート
V2 Account Activity API は ロングフォーム Post、つまり 280 文字を超える Post をサポートしています。ロングフォーム Post がtweet_create_events ペイロードに含まれる場合、text フィールドには最初の 140 文字 (またはそれ以下) が含まれ、truncated フィールドは true に設定されます。Post の全文は extended_tweet オブジェクトで配信され、以下が含まれます:
full_text— 280 文字の制限を超える文字も含めた、Post の全文。entities— 全文中に現れるエンティティ (ハッシュタグ、URL、ユーザーメンション、シンボルなど)。280 文字目以降に現れるものも含みます。display_text_range— 全文を考慮して表示する文字の範囲。
tweet_create_events ペイロードの例です:
よくある質問
Account Activity API を利用する利点は何ですか?
Account Activity API を利用する利点は何ですか?
Account Activity API は Webhook を利用しており、(ストリーミング API のような) 接続を張り続ける必要も、(REST API のような) 頻繁なポーリングも不要でリアルタイムにデータを配信します。主な利点は以下のとおりです:
- 速度 — X のスピードでデータを配信します。
- シンプルさ — Post、@メンション、返信、リポスト、引用 Post、いいね、DM、フォロー、ブロック、ミュートなど、アカウントに関するすべてのイベントを単一の Webhook 接続を通じて提供します。
- スケール — 管理対象アカウントのすべてのアクティビティを、レート制限やイベント上限なしでサポートします (Enterprise ティア)。
開発・ステージング・本番の環境が必要ですが、可能ですか?
開発・ステージング・本番の環境が必要ですが、可能ですか?
はい! 複数の Webhook URL を登録し、V2 Webhooks API を介してサブスクリプションを個別に管理できます。
セットアップの手順を示したガイドはありますか?
セットアップの手順を示したガイドはありますか?
はい! Account Activity API クイックスタート、Webhooks 入門ガイド、および Account Activity API サンプルアプリケーション をご覧ください。
Account Activity API にはどの認証方式が必要ですか?
Account Activity API にはどの認証方式が必要ですか?
認証要件はエンドポイントによって異なります:
- ユーザー固有のアクション (例: ユーザーのサブスクライブ) には OAuth 1.0a (3-legged OAuth フロー) が必要です。
- アプリレベルのアクション (例: サブスクリプションの一覧取得や削除、サブスクリプション数の取得) には OAuth2 App Only Bearer Token が必要です。
相互にやり取りしているユーザー同士をサブスクライブすると、重複したアクティビティが届きますか?
相互にやり取りしているユーザー同士をサブスクライブすると、重複したアクティビティが届きますか?
はい。アプリがユーザー A とユーザー B のサブスクリプションを持っている場合に、ユーザー A が Post 内でユーザー B をメンションすると、Webhook は 2 件のイベント (ユーザーごとに 1 件) を受信します。
for_user_id フィールドを使用してサブスクリプションを識別してください。エンドポイントの /all/ を置き換えて、配信されるアクティビティを制限できますか?
エンドポイントの /all/ を置き換えて、配信されるアクティビティを制限できますか?
いいえ。利用可能なのは
/all/ プロダクトのみで、サポートされるすべてのイベントタイプを配信します。3 つの Webhook にアクセスできる場合、各アプリで 3 つずつ Webhook を使えますか?
3 つの Webhook にアクセスできる場合、各アプリで 3 つずつ Webhook を使えますか?
Webhook の上限はアプリごとではなく、アカウント単位で設定されています。例えば、Webhook が 3 つでアプリが 2 つの場合、一方のアプリで 2 つ、もう一方で 1 つの Webhook を利用することはできますが、各アプリで 3 つずつ利用することはできません。
API リファレンス一覧
Webhook 管理用のエンドポイント (登録、閲覧、検証、削除) については、V2 Webhooks API ドキュメントを参照してください。
はじめる
前提条件
- 承認済みの開発者アカウント
- Developer Console 内の Project と App
- 公開アクセス可能な HTTPS Webhook エンドポイント
- Account Activity API に対する Enterprise または Pay Per Use のアクセス権
クイックスタート
サブスクリプションを設定してイベントの受信を開始する
Webhooks API
Webhook を登録・管理する
移行ガイド
レガシーの Enterprise から v2 へ移行する
Activity stream
Webhook に代わるストリーミング方式