Skip to main content
Every notification uses the same envelope. Over the WebSocket it arrives inside an op: 0 message as d. A custom webhook receives the same object as the POST body

Envelope

string
Stable for a given post, so you can use it to drop duplicates. Not sent on keyword events
string
The event type. See Event types
object
The task that produced the event
object
The event payload. Its shape depends on event. Absent on twitter.task.update
string
Only on twitter.task.update. One of profile_private, profile_suspended, profile_available_back

Event types

Account events

New posts

Sent for every post type enabled on the task. Check data.type to tell posts, reposts, quotes, and replies apart
twitter.post.micro is a Pro feature and is only sent while micro events are enabled. It carries a partial post so you can react faster, followed by the complete twitter.post.new for the same post

Subscriber and protected posts

twitter.post.subscription carries a full post with type set to subscription twitter.post.private is sent when a protected account posts. The content is not visible, so data only holds the account’s new post count:

Deleted posts

twitter.post.deleted carries the deleted post as it was last seen

OCR

Sent when text has been read from an image in a post. Requires the ocr option on the task
Match post_id against the id of an earlier post event to link the result to its post.

Translation

Sent when a post translation is ready. text has one entry for the post and one for each nested post (quoted, reposted, or replied) that was translated

Following and unfollowing

twitter.following.new and twitter.following.removed carry the profile of the account that was followed or unfollowed. The task’s following filters apply before the event is sent

Profile updates

Only the fields that changed are present in data. Each one holds the previous and new value
object
One key per changed field: handle, name, avatar, banner, location, description, website, pinned_post, verification
Fields turned off in the task’s profile update options are never reported

Task status

Sent when the monitored account becomes unavailable or available again. There is no data. Read status instead

Keyword posts

Twitter Global tasks send twitter_keyword.post.new. These events have no event_id, and task_info has keyword instead of handle and profile_info. The post has no type or mentions, and author is a lighter profile
verification.type is Business or Government when present. affiliation is only present when the account has one

Objects

Post

string
Post ID
integer
Post time in milliseconds
string
post, repost, quote, reply, or subscription
string
Post text
object[]
Photos and videos in the post
object[]
Accounts mentioned in the post
string[]
Hashtags without the #
object
Profile of the author
object
Quotes only. The quoted post, with the same shape
object
Reposts only. The original post, with the same shape
object
Replies only. The post being replied to, with the same shape

Profile

string
Account ID. Unlike handle, it never changes
integer
Account creation time in milliseconds
string
Username without the @
string
Display name
string
Profile picture URL. Truth Social can also include avatar_original
string
Banner URL
string
Bio
string
Location set on the profile
string
Website set on the profile
object
Verification badge
object
Affiliate label shown next to the name
object
Profile counters
verification, affiliation, and individual stats are omitted when Twitter does not return them