X · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for X API v2 Webhooks API
9 actions
9 updates
phrasing
extends
openapi/x-webhooks-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for X's API. It is a proposal applied on top of the contract, not a document X publishes.
What the actions change
x-apievangelist-phrasing
Targets 9
$.info
$.paths['/2/tweets/search/webhooks'].get
$.paths['/2/tweets/search/webhooks/{webhook_id}'].post
$.paths['/2/tweets/search/webhooks/{webhook_id}'].delete
$.paths['/2/webhooks'].get
$.paths['/2/webhooks'].post
$.paths['/2/webhooks/replay'].post
$.paths['/2/webhooks/{webhook_id}'].put
$.paths['/2/webhooks/{webhook_id}'].delete
OpenAPI Overlay
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
title: API Evangelist conversational phrasing for X API v2 Webhooks API
version: 1.0.0
extends: openapi/x-webhooks-api-openapi.yml
actions:
- target: $.info
update:
x-apievangelist-phrasing:
method: generated
generated: '2026-09-26'
generator: build-phrasing.py
label: Generated by API Evangelist
operations: 8
- target: $.paths['/2/tweets/search/webhooks'].get
update:
x-apievangelist-phrasing:
intent: List filtered-stream webhook links
effect: read
questions:
- Which webhooks are currently receiving my filtered stream events?
- Can I see the stream-to-webhook links for my ruleset?
instructions:
- text: List the webhooks linked to my filtered stream.
- text: Show my filtered-stream webhook links.
method: generated
generated: '2026-09-26'
- target: $.paths['/2/tweets/search/webhooks/{webhook_id}'].post
update:
x-apievangelist-phrasing:
intent: Deliver filtered stream events to a webhook
effect: write
questions:
- How do I get filtered stream matches pushed to a webhook instead of holding a connection open?
- Can I link my filtered stream rules to a registered webhook?
instructions:
- text: Link my filtered stream to webhook {webhook_id}.
slots:
webhook_id: path.webhook_id
- text: Start pushing filtered stream events to {webhook_id}.
slots:
webhook_id: path.webhook_id
method: generated
generated: '2026-09-26'
- target: $.paths['/2/tweets/search/webhooks/{webhook_id}'].delete
update:
x-apievangelist-phrasing:
intent: Stop filtered stream delivery to a webhook
effect: destructive
questions:
- Can I stop filtered stream events going to a webhook?
- Can I unlink a webhook from my filtered stream without deleting the webhook?
instructions:
- text: Unlink webhook {webhook_id} from my filtered stream.
slots:
webhook_id: path.webhook_id
- text: Stop delivering stream matches to {webhook_id}.
slots:
webhook_id: path.webhook_id
method: generated
generated: '2026-09-26'
- target: $.paths['/2/webhooks'].get
update:
x-apievangelist-phrasing:
intent: List my app's webhook configs
effect: read
questions:
- Which webhook URLs are registered for my app?
- Is my webhook config currently marked valid?
instructions:
- text: List my app's webhook configurations.
- text: Show my registered webhooks with fields {fields}.
slots:
fields: query.webhook_config.fields
method: generated
generated: '2026-09-26'
- target: $.paths['/2/webhooks'].post
update:
x-apievangelist-phrasing:
intent: Register a webhook URL
effect: write
questions:
- How do I register a new webhook URL with X?
- Can I add a webhook config for a URL my app hosts?
instructions:
- text: Register webhook URL {url}.
slots:
url: requestBody.url
- text: Create a new webhook config pointing at {url}.
slots:
url: requestBody.url
method: generated
generated: '2026-09-26'
- target: $.paths['/2/webhooks/replay'].post
update:
x-apievangelist-phrasing:
intent: Replay missed webhook events
effect: write
questions:
- Can I get events my webhook missed during an outage re-delivered?
- How far back can a webhook replay job go?
instructions:
- text: Replay events to webhook {webhook_id} from {from_date} to {to_date}.
slots:
webhook_id: requestBody.webhook_id
from_date: requestBody.from_date
to_date: requestBody.to_date
- text: Re-deliver webhook {webhook_id} events between {from_date} and {to_date}.
slots:
webhook_id: requestBody.webhook_id
from_date: requestBody.from_date
to_date: requestBody.to_date
method: generated
generated: '2026-09-26'
- target: $.paths['/2/webhooks/{webhook_id}'].put
update:
x-apievangelist-phrasing:
intent: Trigger a CRC check on a webhook
effect: write
questions:
- Can I re-validate my webhook with a fresh CRC challenge?
- My webhook was marked invalid — can I trigger a new CRC check?
instructions:
- text: Run a CRC check on webhook {webhook_id}.
slots:
webhook_id: path.webhook_id
- text: Re-validate webhook {webhook_id}.
slots:
webhook_id: path.webhook_id
method: generated
generated: '2026-09-26'
- target: $.paths['/2/webhooks/{webhook_id}'].delete
update:
x-apievangelist-phrasing:
intent: Delete a webhook config
effect: destructive
questions:
- Can I remove a webhook URL I no longer use?
- What's the call to delete a webhook configuration?
instructions:
- text: Delete webhook {webhook_id}.
slots:
webhook_id: path.webhook_id
- text: Remove the webhook config {webhook_id} from my app.
slots:
webhook_id: path.webhook_id
method: generated
generated: '2026-09-26'
Work with this as data
Every overlay here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for openapi overlays
4 MCP tools reach this
find_overlaysBrowse and filter every overlay in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/x-webhooks-api-phrasing-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.