- Register your URL with
POST /webhooks. - Confirm ownership with a one-time CRC handshake.
- Receive typed, signed events at your URL as activity happens.
What you provide
auth_token
The X account whose activity you want delivered.
encryption_code
Supply it to receive DM events. Omit it and you still get tweet activity
(mentions/replies/likes/follows).
secret
Returned once on create (or supply your own). Used to answer CRC and to verify the
signature on every delivery.
POST /webhooks (create) also accepts an optional proxy. It is stored with the
webhook, and the background poller routes all of that account’s X traffic through it for
the lifetime of the webhook. See Authentication.1. CRC — proving you own the URL
Before any events are delivered, your URL receives aGET with a crc_token query param.
Your endpoint must reply within 10s with:
valid:true and starts receiving events once it passes CRC.
2. Verifying each delivery
Every event isPOSTed with this header:
secret and compare — if it matches, the event
genuinely came from OmniX.
3. The events you receive
Each delivery is one JSON object with atype.
Tweet events fire on incoming activity (someone acts on your account). Your own
outgoing actions — e.g. following someone yourself — do not produce an event.
Example payloads
message.received
tweet.mention
user.follow
Typical flow
1
Create
POST /webhooks with your url, auth_token, and (for DMs) encryption_code.
Save the returned secret. Supply your own secret to pass CRC on this call.2
Validate (if needed)
If you didn’t pre-share the secret, configure your receiver with the returned secret
and call
PUT /webhooks/{id} to re-run CRC until valid:true.3
Receive
Handle
POSTs at your URL — verify x-twitter-webhooks-signature, then switch on
type. Respond 200 within 10s.4
Recover (optional)
Missed deliveries?
POST /webhooks/replay re-sends the last 24h of events.5
Stop
DELETE /webhooks/{id} to stop delivery.