Events
Fires when a tracked user replies to a post. Carries the reply itself plus the parent post it replied to.
A reply event fires when a tracked user replies to a post. It carries the reply itself plus the parent post (text, author, media).
Fields
| Field | Type | Notes |
|---|---|---|
type | "reply" | |
id | string | X post ID of the reply |
url | string | Canonical URL of the reply |
author | Author | The tracked user who replied |
text | string | Reply text. URLs are expanded; HTML entities are decoded |
createdAtMs | number | Unix milliseconds, truncated to the second |
latencyMs | number | null | Real wall-clock from X creation to delivery |
media | MediaRef[] | Media on the reply itself |
article | ArticleRef | null | Article card on the reply |
poll | PollRef | null | Poll on the reply |
symbols | SymbolRef[] | Cashtags on the reply (picker-selected only) |
replyToAuthor | Author | Author of the parent post |
replyToPostId | string | ID of the parent post |
replyToPostUrl | string | URL of the parent post |
replyToText | string | Text of the parent post |
replyToMedia | MediaRef[] | Media on the parent post |
replyToArticle | ArticleRef | null | Article card on the parent |
replyToPoll | PollRef | null | Poll on the parent |
replyToSymbols | SymbolRef[] | Cashtags on the parent |
replyToQuoteAuthorUsername | string | null | When the parent is itself a quote, the username being quoted (L3 attribution). null otherwise |
replyToQuotePostUrl | string | null | When the parent is itself a quote, the URL of the L3 post. null otherwise |
Example
Here’s a real reply event: @elonmusk replying to @glennbeck. author, replyToAuthor, and replyToText are shortened for the preview; the wire ships the full shapes.
{
"type": "reply",
"id": "2045577165534875928",
"url": "https://x.com/elonmusk/status/2045577165534875928",
"author": {
"id": "44196397",
"username": "elonmusk",
"displayName": "Elon Musk",
"verified": true,
"verifiedType": "blue"
},
"text": "@glennbeck @rebeccaperrotto No...",
"createdAtMs": 1776538575000,
"latencyMs": 73,
"media": [],
"article": null,
"poll": null,
"symbols": [],
"replyToAuthor": {
"id": "17454769",
"username": "glennbeck",
"displayName": "Glenn Beck",
"verified": true,
"verifiedType": "blue"
},
"replyToPostId": "2044889292225311088",
"replyToPostUrl": "https://x.com/glennbeck/status/2044889292225311088",
"replyToText": "At 15 years old, Liv Perrotto's biggest dream was to meet @elonmusk...",
"replyToMedia": [
{ "type": "photo", "url": "https://pbs.twimg.com/media/HGDm-O3WYAAqAiP.jpg" },
{ "type": "photo", "url": "https://pbs.twimg.com/media/HGDm_4RW0AABSNM.jpg" }
],
"replyToArticle": null,
"replyToPoll": null,
"replyToSymbols": [],
"replyToQuoteAuthorUsername": null,
"replyToQuotePostUrl": null
}
When the parent is a quote
If the parent post is itself a quote of another post, replyToQuoteAuthorUsername and replyToQuotePostUrl carry the L3 attribution. The L3 post’s text and media are not included; we only attribute, not fetch.