Twitter/X · AsyncAPI Specification

Twitter X Webhooks

Version

View Spec View on GitHub CompanySocialSocial MediaPostsReal-TimeStreamingNewsDeveloper PlatformAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-07-21'
method: searched
source: https://docs.x.com/x-api/webhooks/introduction.md
type: Webhooks
description: >-
  X publishes no AsyncAPI document, but operates a substantial real-time event
  surface: the V2 Webhooks API (webhook registration + CRC security), three
  webhook-delivering products (X Activity API, Account Activity API, Filtered
  Stream Webhooks), and persistent HTTP streaming endpoints (filtered stream,
  sample, firehose) modeled in the OpenAPI Stream/Webhooks/Activity tags. This
  artifact captures the webhook catalog; no event spec is fabricated.
webhook_products:
  - name: X Activity API (XAA)
    docs: https://docs.x.com/x-api/activity/introduction
    description: >-
      Real-time activity events with sub-second latency, delivered via
      persistent HTTP stream (GET /2/activity/stream) or webhooks.
      Subscriptions managed via POST /2/activity/subscriptions; filter by
      User ID, keyword, and direction (sent/received).
    event_types:
      - post.create
      - post.delete
      - profile.update.bio
      - profile.update.picture
      - profile.update.banner
      - profile.update.geo
      - profile.update.url
      - profile.update.verified
      - profile.update.affiliate
      - profile.update.screenname
      - spaces.start
      - spaces.end
      - dm.received
      - dm.sent
      - dm.read
      - dm.indicate_typing
  - name: Account Activity API (AAA)
    docs: https://docs.x.com/x-api/account-activity/introduction
    description: >-
      Real-time events tied to specific user accounts, delivered to registered
      webhooks. OAuth 2.0 with fine-grained scopes supported since 2026-01-15
      (OAuth 1.0a permissions override scopes when present).
  - name: Filtered Stream Webhooks
    docs: https://docs.x.com/x-api/webhooks/stream/introduction
    description: >-
      Asynchronous webhook delivery of Posts matching filtered-stream rules
      (rules managed via /2/tweets/search/stream/rules). Enterprise; supports
      25,000+ rules per project, rules up to 2,048 characters.
management_endpoints:
  - operation: createWebhooks
    method: POST
    path: /2/webhooks
    description: Register a new webhook
  - operation: getWebhooks
    method: GET
    path: /2/webhooks
    description: List registered webhooks (includes valid/invalid status)
  - operation: deleteWebhooks
    method: DELETE
    path: /2/webhooks/{webhook_id}
    description: Delete a webhook
  - operation: createWebhookReplayJob
    method: POST
    path: /2/webhooks/replay
    description: Create a replay job to redeliver events
  - operation: validateWebhooks
    method: PUT
    path: /2/webhooks/{webhook_id}
    description: Trigger a CRC check and re-enable a webhook
security:
  crc: >-
    Challenge-Response Check — X sends GET requests with a challenge; the
    endpoint must answer with an HMAC-SHA256 response_token computed with the
    app consumer secret. CRC runs on creation, on explicit PUT, and
    periodically every 30 minutes if not validated in 24 hours; persistent
    failures beyond ~28 hours mark the webhook invalid.
  signature_header: x-twitter-webhooks-signature
  signature_verification: HMAC signature on each delivery POST so consumers can verify X as the source.
requirements:
  - HTTPS webhook URL, publicly accessible, no port in the URL
  - Respond 200 OK within 10 seconds
  - CRC support mandatory
streaming_endpoints_note: >-
  Persistent HTTP streaming (streamPosts, streamPostsSample,
  streamPostsFirehose*, streamLikesFirehose, compliance streams) is modeled in
  the OpenAPI under the Stream tag; the Connections API
  (GET/DELETE /2/connections*) manages active streaming connections.