Skip to content

Events

Reply

View as MarkdownPlain text source(opens in new tab)

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

FieldTypeNotes
type"reply"
idstringX post ID of the reply
urlstringCanonical URL of the reply
authorAuthorThe tracked user who replied
textstringReply text. URLs are expanded; HTML entities are decoded
createdAtMsnumberUnix milliseconds, truncated to the second
latencyMsnumber | nullReal wall-clock from X creation to delivery
mediaMediaRef[]Media on the reply itself
articleArticleRef | nullArticle card on the reply
pollPollRef | nullPoll on the reply
symbolsSymbolRef[]Cashtags on the reply (picker-selected only)
replyToAuthorAuthorAuthor of the parent post
replyToPostIdstringID of the parent post
replyToPostUrlstringURL of the parent post
replyToTextstringText of the parent post
replyToMediaMediaRef[]Media on the parent post
replyToArticleArticleRef | nullArticle card on the parent
replyToPollPollRef | nullPoll on the parent
replyToSymbolsSymbolRef[]Cashtags on the parent
replyToQuoteAuthorUsernamestring | nullWhen the parent is itself a quote, the username being quoted (L3 attribution). null otherwise
replyToQuotePostUrlstring | nullWhen 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.

  • post: the user posted an original
  • quote: the user quoted a post
  • deleted with deletedKind: "reply": a previously delivered reply was deleted