Documentation Index
Fetch the complete documentation index at: https://generaltranslation.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
フィルタ済みストリーム Webhooks API の利用を開始する
v2 フィルタ済みストリーム Webhooks API は、どのルールでフィルタするかを設定する点では、v2 フィルタ済みストリームエンドポイント と似ています。違いは、ルールに一致した投稿の配信方法にあります。
- v2 フィルタ済みストリームエンドポイントの場合は、永続的な接続を確立し、ルールに一致した投稿を受信し続ける必要があります。
- このフィルタ済みストリーム Webhook エンドポイントの場合は、Webhook を登録すると、X がルールに一致した投稿をその Webhook に配信します。
このガイドでは、フィルタ済みストリーム Webhooks エンドポイントを使って投稿をフィルタし、受信する方法を説明します。ここでは次の 3 つのステップを行います。
- フィルタ済みストリームのルールを設定する
- Webhook を作成する
- Filtered Stream インスタンスを Webhook に関連付ける
Filtered Stream インスタンスを Webhook に関連付けると、X はルールに一致した投稿をその Webhook に送信します。
フィルタ済みストリームルールは、1 つ以上のオペレーターをブール論理と括弧で組み合わせて構成されており、どの投稿が webhook に配信されるかを定義するのに役立ちます。Filtered stream webhooks API は、ルールの作成と管理に v2 filtered stream endpoint と同じエンドポイント群を使用します。フィルタの構築方法を説明した 詳細なガイド も参照してください。
X API に対して外部からアクセス可能な HTTPS URL を登録して、イベントを受信するための webhook を作成します。Webhook は、CRC 検証用の GET リクエストと、イベントペイロード用の POST リクエストの両方を処理できる必要があります。Webhook の作成と管理に関する詳細な手順については、Webhooks の概要ドキュメントを参照してください。
注: すでに Account Activity API (AAA) 用に webhook を使用している場合、そのために設定されている webhook は、ここでもまったく同じものです。実際、十分な帯域があり、イベントを分離できるのであれば、AAA 用に使用しているのと同じ webhook エンドポイントをこの API にも使用できます。
Filtered Stream インスタンスを webhook にリンクする
ルールを設定して webhook を作成したら、その webhook を Filtered Stream インスタンスにリンクします。これにより、条件にマッチしたポストイベントが webhook の URL に送信されます。
使用するエンドポイント: POST /2/tweets/search/webhooks/:webhook_id
ストリーミングエンドポイント /2/tweets/search/stream で使用するものと同じクエリパラメータ (expansions、フィールド、メディアオプションなど) を指定できます。これにより、イベントペイロードに含めるデータをカスタマイズできます。
例:
curl --request POST \
--url
'https://api.x.com/2/tweets/search/webhooks/123456789012345678?ex
pansions=author_id&user.fields=username,name,id' \
--header 'Authorization: Bearer $BEARER_TOKEN'
成功したレスポンスの例:
{
"data": {
"provisioned": true
}
}
Tip: 冗長性を確保したり、異なるフィールドセットを受け取ったりするために、同じストリームに複数の webhook をリンクできます。各リンクごとに固有のパラメータを指定できます。
Filtered Stream インスタンスを webhook にリンクすると、以下のようにルールに一致する投稿の受信が始まります。
{
"data": {
"id": "1346889436626259968",
"text": "Learn how to use the user Post timeline and user mention timeline endpoints in the X API v2 to explore Post… https://t.co/56a0vZUx7i",
"created_at": "2021-01-06T18:40:40.000Z",
"author_id": "2244994945"
},
"includes": {
"users": [
{
"id": "2244994945",
"name": "Developers",
"username": "Xdevelopers",
"created_at": "2013-12-14T04:35:55Z",
"protected": false
}
]
},
"matching_rules": [
{
"id": "120897978112909812",
"tag": "api-posts"
}
]
}
Filtered Stream にリンクされている Webhook の取得
現在 Filtered Stream にリンクされているすべての Webhook の一覧を取得します。
GET /2/tweets/search/stream/webhooks
レスポンス例:
{
"data": {
"links": [
{
"application_id": "29893711",
"business_user_id": "1877374016438091776",
"fields": [
"user.fields=username",
"name",
"id",
"expansions=author_id"
],
"instance_id": "1877375130462289920",
"webhook_id": "1952390923729424384"
}
]
}
}
Filtered Stream から Webhook のリンクを解除する
特定の Webhook でイベントの受信を停止するには、次のようにリンクを解除します。
DELETE /2/tweets/search/webhooks/:webhook_id
レスポンスは次のとおりです。
{
"data": {
"deleted": true
}
}