Events
Fires when a tracked user quotes another post. Carries the quote itself plus the quoted post's content.
A quote event fires when a tracked user quotes another post. It carries the quoter’s own post plus the quoted post’s content and author.
Fields
| Field | Type | Notes |
|---|---|---|
type | "quote" | |
id | string | X post ID of the quote |
url | string | Canonical URL of the quote |
author | Author | The tracked user who quoted |
text | string | Quote 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 quote itself |
article | ArticleRef | null | Article card on the quote |
poll | PollRef | null | Poll on the quote |
symbols | SymbolRef[] | Cashtags on the quote (picker-selected only) |
quotedAuthor | Author | Author of the quoted post |
quotedPostId | string | ID of the quoted post |
quotedText | string | Quoted post text |
quotedMedia | MediaRef[] | Media on the quoted post |
quotedArticle | ArticleRef | null | Article card on the quoted post |
quotedPoll | PollRef | null | Poll on the quoted post |
quotedSymbols | SymbolRef[] | Cashtags on the quoted post |
quotedQuoteAuthorUsername | string | null | When the quoted post is itself a quote, the username being quoted (L3 attribution). null otherwise |
quotedQuotePostUrl | string | null | When the quoted post is itself a quote, the URL of the L3 post. null otherwise |
Example
Here’s a real quote event: @elonmusk quoting @SpaceX. Author objects are shortened for the preview; the wire ships every Author field.
{
"type": "quote",
"id": "2062796377055187258",
"url": "https://x.com/elonmusk/status/2062796377055187258",
"author": {
"id": "44196397",
"username": "elonmusk",
"displayName": "Elon Musk",
"verified": true,
"verifiedType": "blue"
},
"text": "29 more Starlink satellites...",
"createdAtMs": 1780643955000,
"latencyMs": 41,
"media": [],
"article": null,
"poll": null,
"symbols": [],
"quotedAuthor": {
"id": "34743251",
"username": "spacex",
"displayName": "SpaceX",
"verified": true,
"verifiedType": "business"
},
"quotedPostId": "2062585343388319851",
"quotedText": "Falcon 9 launches and deploys 29 @Starlink satellites from Florida",
"quotedMedia": [
{ "type": "photo", "url": "https://pbs.twimg.com/media/HJ_GWp2WEAAHkE2.jpg" },
{ "type": "photo", "url": "https://pbs.twimg.com/media/HJ_GYftWgAE2iIB.jpg" },
{ "type": "photo", "url": "https://pbs.twimg.com/media/HJ_GZhIXQAAeVJx.jpg" },
{ "type": "photo", "url": "https://pbs.twimg.com/media/HJ_GaijWEAAdi5q.jpg" }
],
"quotedArticle": null,
"quotedPoll": null,
"quotedSymbols": [],
"quotedQuoteAuthorUsername": null,
"quotedQuotePostUrl": null
}
Quote vs reply
In a quote, the quoted post is referenced and shown alongside the quoter’s text. In a reply, the parent is the post being responded to. Quotes use quoted* fields; replies use replyTo* fields. A user cannot both reply and quote in the same post.
When the quoted post is itself a quote
If the quoted post is itself a quote of another post, quotedQuoteAuthorUsername and quotedQuotePostUrl carry the L3 attribution. The L3 post’s text and media are not included; we only attribute, not fetch.