概要
リアルタイム配信
発生と同時にイベントを受信
プッシュベース
データをサーバーに直接送信 — ポーリング不要
セキュア
CRC 検証と署名検証
信頼性
再試行とリカバリのサポート
Webhook をサポートする製品
現在 Webhook 経由でイベント配信をサポートしている製品は次のとおりです:Webhook の仕組み
- イベントが発生 — ユーザーが Post、DM の送信、フォローなど
- X が POST リクエストを送信 — JSON イベントペイロードを登録済み Webhook URL に送信
- イベントを処理 — サーバーがイベントデータを処理
- 200 OK で応答 — 受信確認のために 200 ステータスを返す
Webhook の要件
エンドポイント
すべてのエンドポイントには OAuth2 App Only Bearer Token 認証が必要です。
セキュリティ
X の Webhook ベース API は、Webhook サーバーのセキュリティを確認するための 2 つの方法を提供します:- Challenge-Response Check (CRC) — X は定期的に Webhook URL に GET リクエストを送信します。エンドポイントを制御していることを証明するために HMAC-SHA256 ハッシュで応答します。CRC チェックは、初回登録時、毎時、および手動での再検証時に行われます。
-
署名検証 — X からの各 POST リクエストには
x-twitter-webhooks-signatureヘッダーが含まれます。この署名を検証することで、着信イベントの送信元が X であることを確認できます。
完全な実装詳細を見る
ステップバイステップの CRC 設定、コード例、署名検証
Webhook の検証
CRC チェックは、次のケースで Webhook に送信されます:- 作成直後
- 明示的な PUT リクエスト時 (
PUT /2/webhooks/{id}) - 30 分ごとに定期的に(ただし、Webhook が過去 24 時間以内に正常に検証されていない場合のみ)
- CRC チェックへの応答が無効
- 2XX ステータスコードを返すが
response_tokenが正しくない - 3XX ステータスコードを返す
- SSL 例外が発生
- 2XX ステータスコードを返すが
- 一時的なエラーが持続し、28 時間を超えて正常に検証されない(一時的な問題に対する 4 時間の猶予期間を含む)
- 次の応答は一時的なエラーとして扱われます:
- 4XX ステータスコード
- 5XX ステータスコード
- リクエストのタイムアウト
- チャンネル切断
- 次の応答は一時的なエラーとして扱われます:
GET /2/webhooks エンドポイント、または Developer Console のツールボックスを使用して、Webhook の有効/無効状態を確認できます。
はじめに
前提条件
- 承認済みの開発者アカウント
- Developer Console のプロジェクトとアプリ
- 公開アクセス可能な HTTPS エンドポイント
- CRC 検証用のアプリの consumer secret (API secret key)
クイックスタート
Webhook をエンドツーエンドで設定
Filtered Stream Webhooks
Webhook 経由でフィルタリングされた Post を受信
Account Activity API
Webhook 経由でアカウントイベントを受信
サンプルアプリ
動作するコード例