x-twitter-scraper 0.12.4 → 0.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (671) hide show
  1. package/CHANGELOG.md +80 -0
  2. package/README.md +56 -29
  3. package/client.d.mts +18 -15
  4. package/client.d.mts.map +1 -1
  5. package/client.d.ts +18 -15
  6. package/client.d.ts.map +1 -1
  7. package/client.js +4 -4
  8. package/client.js.map +1 -1
  9. package/client.mjs +5 -5
  10. package/client.mjs.map +1 -1
  11. package/core/api-promise.d.mts.map +1 -1
  12. package/core/api-promise.d.ts.map +1 -1
  13. package/core/api-promise.js.map +1 -1
  14. package/core/api-promise.mjs.map +1 -1
  15. package/core/error.d.mts.map +1 -1
  16. package/core/error.d.ts.map +1 -1
  17. package/core/error.js +0 -1
  18. package/core/error.js.map +1 -1
  19. package/core/error.mjs +0 -1
  20. package/core/error.mjs.map +1 -1
  21. package/core/resource.d.mts.map +1 -1
  22. package/core/resource.d.ts.map +1 -1
  23. package/core/resource.js.map +1 -1
  24. package/core/resource.mjs.map +1 -1
  25. package/core/streaming.d.mts +33 -0
  26. package/core/streaming.d.mts.map +1 -0
  27. package/core/streaming.d.ts +33 -0
  28. package/core/streaming.d.ts.map +1 -0
  29. package/core/streaming.js +269 -0
  30. package/core/streaming.js.map +1 -0
  31. package/core/streaming.mjs +264 -0
  32. package/core/streaming.mjs.map +1 -0
  33. package/index.d.mts.map +1 -1
  34. package/index.d.ts.map +1 -1
  35. package/index.js +0 -1
  36. package/index.js.map +1 -1
  37. package/index.mjs +0 -1
  38. package/index.mjs.map +1 -1
  39. package/internal/builtin-types.d.mts.map +1 -1
  40. package/internal/builtin-types.d.ts.map +1 -1
  41. package/internal/decoders/line.d.mts +17 -0
  42. package/internal/decoders/line.d.mts.map +1 -0
  43. package/internal/decoders/line.d.ts +17 -0
  44. package/internal/decoders/line.d.ts.map +1 -0
  45. package/internal/decoders/line.js +115 -0
  46. package/internal/decoders/line.js.map +1 -0
  47. package/internal/decoders/line.mjs +110 -0
  48. package/internal/decoders/line.mjs.map +1 -0
  49. package/internal/detect-platform.d.mts.map +1 -1
  50. package/internal/detect-platform.d.ts.map +1 -1
  51. package/internal/detect-platform.js +0 -1
  52. package/internal/detect-platform.js.map +1 -1
  53. package/internal/detect-platform.mjs +0 -1
  54. package/internal/detect-platform.mjs.map +1 -1
  55. package/internal/errors.d.mts.map +1 -1
  56. package/internal/errors.d.ts.map +1 -1
  57. package/internal/errors.js +0 -1
  58. package/internal/errors.js.map +1 -1
  59. package/internal/errors.mjs +0 -1
  60. package/internal/errors.mjs.map +1 -1
  61. package/internal/headers.d.mts.map +1 -1
  62. package/internal/headers.d.ts.map +1 -1
  63. package/internal/headers.js +0 -1
  64. package/internal/headers.js.map +1 -1
  65. package/internal/headers.mjs +0 -1
  66. package/internal/headers.mjs.map +1 -1
  67. package/internal/parse.d.mts.map +1 -1
  68. package/internal/parse.d.ts.map +1 -1
  69. package/internal/parse.js +7 -0
  70. package/internal/parse.js.map +1 -1
  71. package/internal/parse.mjs +7 -0
  72. package/internal/parse.mjs.map +1 -1
  73. package/internal/request-options.d.mts.map +1 -1
  74. package/internal/request-options.d.ts.map +1 -1
  75. package/internal/request-options.js.map +1 -1
  76. package/internal/request-options.mjs.map +1 -1
  77. package/internal/shim-types.d.mts.map +1 -1
  78. package/internal/shim-types.d.ts.map +1 -1
  79. package/internal/shims.d.mts.map +1 -1
  80. package/internal/shims.d.ts.map +1 -1
  81. package/internal/shims.js.map +1 -1
  82. package/internal/shims.mjs.map +1 -1
  83. package/internal/tslib.js +18 -18
  84. package/internal/types.d.mts.map +1 -1
  85. package/internal/types.d.ts.map +1 -1
  86. package/internal/utils/base64.d.mts.map +1 -1
  87. package/internal/utils/base64.d.ts.map +1 -1
  88. package/internal/utils/base64.js +0 -1
  89. package/internal/utils/base64.js.map +1 -1
  90. package/internal/utils/base64.mjs +0 -1
  91. package/internal/utils/base64.mjs.map +1 -1
  92. package/internal/utils/env.d.mts.map +1 -1
  93. package/internal/utils/env.d.ts.map +1 -1
  94. package/internal/utils/env.js +0 -1
  95. package/internal/utils/env.js.map +1 -1
  96. package/internal/utils/env.mjs +0 -1
  97. package/internal/utils/env.mjs.map +1 -1
  98. package/internal/utils/log.d.mts.map +1 -1
  99. package/internal/utils/log.d.ts.map +1 -1
  100. package/internal/utils/log.js +0 -1
  101. package/internal/utils/log.js.map +1 -1
  102. package/internal/utils/log.mjs +0 -1
  103. package/internal/utils/log.mjs.map +1 -1
  104. package/internal/utils/query.d.mts.map +1 -1
  105. package/internal/utils/query.d.ts.map +1 -1
  106. package/internal/utils/query.js +0 -1
  107. package/internal/utils/query.js.map +1 -1
  108. package/internal/utils/query.mjs +0 -1
  109. package/internal/utils/query.mjs.map +1 -1
  110. package/internal/utils/sleep.d.mts.map +1 -1
  111. package/internal/utils/sleep.d.ts.map +1 -1
  112. package/internal/utils/sleep.js +0 -1
  113. package/internal/utils/sleep.js.map +1 -1
  114. package/internal/utils/sleep.mjs +0 -1
  115. package/internal/utils/sleep.mjs.map +1 -1
  116. package/internal/utils/uuid.d.mts.map +1 -1
  117. package/internal/utils/uuid.d.ts.map +1 -1
  118. package/internal/utils/uuid.js +0 -1
  119. package/internal/utils/uuid.js.map +1 -1
  120. package/internal/utils/uuid.mjs +0 -1
  121. package/internal/utils/uuid.mjs.map +1 -1
  122. package/internal/utils/values.d.mts.map +1 -1
  123. package/internal/utils/values.d.ts.map +1 -1
  124. package/internal/utils/values.js +0 -1
  125. package/internal/utils/values.js.map +1 -1
  126. package/internal/utils/values.mjs +0 -1
  127. package/internal/utils/values.mjs.map +1 -1
  128. package/internal/utils.d.mts.map +1 -1
  129. package/internal/utils.d.ts.map +1 -1
  130. package/internal/utils.js +0 -1
  131. package/internal/utils.js.map +1 -1
  132. package/internal/utils.mjs +0 -1
  133. package/internal/utils.mjs.map +1 -1
  134. package/package.json +23 -5
  135. package/resources/account.d.mts +35 -12
  136. package/resources/account.d.mts.map +1 -1
  137. package/resources/account.d.ts +35 -12
  138. package/resources/account.d.ts.map +1 -1
  139. package/resources/account.js +4 -4
  140. package/resources/account.js.map +1 -1
  141. package/resources/account.mjs +4 -4
  142. package/resources/account.mjs.map +1 -1
  143. package/resources/compose.d.mts +77 -21
  144. package/resources/compose.d.mts.map +1 -1
  145. package/resources/compose.d.ts +77 -21
  146. package/resources/compose.d.ts.map +1 -1
  147. package/resources/compose.js +3 -5
  148. package/resources/compose.js.map +1 -1
  149. package/resources/compose.mjs +3 -5
  150. package/resources/compose.mjs.map +1 -1
  151. package/resources/credits.d.mts +18 -10
  152. package/resources/credits.d.mts.map +1 -1
  153. package/resources/credits.d.ts +18 -10
  154. package/resources/credits.d.ts.map +1 -1
  155. package/resources/credits.js +5 -5
  156. package/resources/credits.js.map +1 -1
  157. package/resources/credits.mjs +5 -5
  158. package/resources/credits.mjs.map +1 -1
  159. package/resources/drafts.d.mts +13 -17
  160. package/resources/drafts.d.mts.map +1 -1
  161. package/resources/drafts.d.ts +13 -17
  162. package/resources/drafts.d.ts.map +1 -1
  163. package/resources/drafts.js +4 -5
  164. package/resources/drafts.js.map +1 -1
  165. package/resources/drafts.mjs +4 -5
  166. package/resources/drafts.mjs.map +1 -1
  167. package/resources/draws.d.mts +84 -28
  168. package/resources/draws.d.mts.map +1 -1
  169. package/resources/draws.d.ts +84 -28
  170. package/resources/draws.d.ts.map +1 -1
  171. package/resources/draws.js +24 -10
  172. package/resources/draws.js.map +1 -1
  173. package/resources/draws.mjs +24 -10
  174. package/resources/draws.mjs.map +1 -1
  175. package/resources/events.d.mts +2564 -21
  176. package/resources/events.d.mts.map +1 -1
  177. package/resources/events.d.ts +2564 -21
  178. package/resources/events.d.ts.map +1 -1
  179. package/resources/events.js +34 -3
  180. package/resources/events.js.map +1 -1
  181. package/resources/events.mjs +34 -3
  182. package/resources/events.mjs.map +1 -1
  183. package/resources/extractions.d.mts +410 -128
  184. package/resources/extractions.d.mts.map +1 -1
  185. package/resources/extractions.d.ts +410 -128
  186. package/resources/extractions.d.ts.map +1 -1
  187. package/resources/extractions.js +74 -13
  188. package/resources/extractions.js.map +1 -1
  189. package/resources/extractions.mjs +74 -13
  190. package/resources/extractions.mjs.map +1 -1
  191. package/resources/guest-wallets.d.mts +6 -5
  192. package/resources/guest-wallets.d.mts.map +1 -1
  193. package/resources/guest-wallets.d.ts +6 -5
  194. package/resources/guest-wallets.d.ts.map +1 -1
  195. package/resources/guest-wallets.js +2 -2
  196. package/resources/guest-wallets.js.map +1 -1
  197. package/resources/guest-wallets.mjs +2 -2
  198. package/resources/guest-wallets.mjs.map +1 -1
  199. package/resources/index.d.mts +6 -6
  200. package/resources/index.d.mts.map +1 -1
  201. package/resources/index.d.ts +6 -6
  202. package/resources/index.d.ts.map +1 -1
  203. package/resources/index.js +0 -1
  204. package/resources/index.js.map +1 -1
  205. package/resources/index.mjs +1 -2
  206. package/resources/index.mjs.map +1 -1
  207. package/resources/monitors/index.d.mts +2 -2
  208. package/resources/monitors/index.d.mts.map +1 -1
  209. package/resources/monitors/index.d.ts +2 -2
  210. package/resources/monitors/index.d.ts.map +1 -1
  211. package/resources/monitors/index.js +0 -1
  212. package/resources/monitors/index.js.map +1 -1
  213. package/resources/monitors/index.mjs +0 -1
  214. package/resources/monitors/index.mjs.map +1 -1
  215. package/resources/monitors/keywords.d.mts +66 -14
  216. package/resources/monitors/keywords.d.mts.map +1 -1
  217. package/resources/monitors/keywords.d.ts +66 -14
  218. package/resources/monitors/keywords.d.ts.map +1 -1
  219. package/resources/monitors/keywords.js +16 -11
  220. package/resources/monitors/keywords.js.map +1 -1
  221. package/resources/monitors/keywords.mjs +16 -11
  222. package/resources/monitors/keywords.mjs.map +1 -1
  223. package/resources/monitors/monitors.d.mts +53 -16
  224. package/resources/monitors/monitors.d.mts.map +1 -1
  225. package/resources/monitors/monitors.d.ts +53 -16
  226. package/resources/monitors/monitors.d.ts.map +1 -1
  227. package/resources/monitors/monitors.js +12 -11
  228. package/resources/monitors/monitors.js.map +1 -1
  229. package/resources/monitors/monitors.mjs +12 -11
  230. package/resources/monitors/monitors.mjs.map +1 -1
  231. package/resources/monitors.d.mts.map +1 -1
  232. package/resources/monitors.d.ts.map +1 -1
  233. package/resources/monitors.js +0 -1
  234. package/resources/monitors.js.map +1 -1
  235. package/resources/monitors.mjs +0 -1
  236. package/resources/monitors.mjs.map +1 -1
  237. package/resources/radar.d.mts +32 -36
  238. package/resources/radar.d.mts.map +1 -1
  239. package/resources/radar.d.ts +32 -36
  240. package/resources/radar.d.ts.map +1 -1
  241. package/resources/radar.js +1 -2
  242. package/resources/radar.js.map +1 -1
  243. package/resources/radar.mjs +1 -2
  244. package/resources/radar.mjs.map +1 -1
  245. package/resources/shared.d.mts +1726 -233
  246. package/resources/shared.d.mts.map +1 -1
  247. package/resources/shared.d.ts +1726 -233
  248. package/resources/shared.d.ts.map +1 -1
  249. package/resources/styles.d.mts +34 -23
  250. package/resources/styles.d.mts.map +1 -1
  251. package/resources/styles.d.ts +34 -23
  252. package/resources/styles.d.ts.map +1 -1
  253. package/resources/styles.js +11 -14
  254. package/resources/styles.js.map +1 -1
  255. package/resources/styles.mjs +11 -14
  256. package/resources/styles.mjs.map +1 -1
  257. package/resources/subscribe.d.mts +1 -1
  258. package/resources/subscribe.d.mts.map +1 -1
  259. package/resources/subscribe.d.ts +1 -1
  260. package/resources/subscribe.d.ts.map +1 -1
  261. package/resources/subscribe.js +1 -2
  262. package/resources/subscribe.js.map +1 -1
  263. package/resources/subscribe.mjs +1 -2
  264. package/resources/subscribe.mjs.map +1 -1
  265. package/resources/support/attachments.d.mts.map +1 -1
  266. package/resources/support/attachments.d.ts.map +1 -1
  267. package/resources/support/attachments.js +0 -1
  268. package/resources/support/attachments.js.map +1 -1
  269. package/resources/support/attachments.mjs +0 -1
  270. package/resources/support/attachments.mjs.map +1 -1
  271. package/resources/support/index.d.mts +1 -1
  272. package/resources/support/index.d.mts.map +1 -1
  273. package/resources/support/index.d.ts +1 -1
  274. package/resources/support/index.d.ts.map +1 -1
  275. package/resources/support/index.js +0 -1
  276. package/resources/support/index.js.map +1 -1
  277. package/resources/support/index.mjs +0 -1
  278. package/resources/support/index.mjs.map +1 -1
  279. package/resources/support/support.d.mts +2 -2
  280. package/resources/support/support.d.mts.map +1 -1
  281. package/resources/support/support.d.ts +2 -2
  282. package/resources/support/support.d.ts.map +1 -1
  283. package/resources/support/support.js +0 -1
  284. package/resources/support/support.js.map +1 -1
  285. package/resources/support/support.mjs +0 -1
  286. package/resources/support/support.mjs.map +1 -1
  287. package/resources/support/tickets.d.mts +30 -10
  288. package/resources/support/tickets.d.mts.map +1 -1
  289. package/resources/support/tickets.d.ts +30 -10
  290. package/resources/support/tickets.d.ts.map +1 -1
  291. package/resources/support/tickets.js +7 -8
  292. package/resources/support/tickets.js.map +1 -1
  293. package/resources/support/tickets.mjs +7 -8
  294. package/resources/support/tickets.mjs.map +1 -1
  295. package/resources/support.d.mts.map +1 -1
  296. package/resources/support.d.ts.map +1 -1
  297. package/resources/support.js +0 -1
  298. package/resources/support.js.map +1 -1
  299. package/resources/support.mjs +0 -1
  300. package/resources/support.mjs.map +1 -1
  301. package/resources/trends.d.mts +21 -5
  302. package/resources/trends.d.mts.map +1 -1
  303. package/resources/trends.d.ts +21 -5
  304. package/resources/trends.d.ts.map +1 -1
  305. package/resources/trends.js +2 -2
  306. package/resources/trends.js.map +1 -1
  307. package/resources/trends.mjs +2 -2
  308. package/resources/trends.mjs.map +1 -1
  309. package/resources/webhooks.d.mts +80 -14
  310. package/resources/webhooks.d.mts.map +1 -1
  311. package/resources/webhooks.d.ts +80 -14
  312. package/resources/webhooks.d.ts.map +1 -1
  313. package/resources/webhooks.js +30 -12
  314. package/resources/webhooks.js.map +1 -1
  315. package/resources/webhooks.mjs +30 -12
  316. package/resources/webhooks.mjs.map +1 -1
  317. package/resources/x/account-connection-attempts.d.mts +1 -1
  318. package/resources/x/account-connection-attempts.d.mts.map +1 -1
  319. package/resources/x/account-connection-attempts.d.ts +1 -1
  320. package/resources/x/account-connection-attempts.d.ts.map +1 -1
  321. package/resources/x/account-connection-attempts.js +1 -2
  322. package/resources/x/account-connection-attempts.js.map +1 -1
  323. package/resources/x/account-connection-attempts.mjs +1 -2
  324. package/resources/x/account-connection-attempts.mjs.map +1 -1
  325. package/resources/x/account-connection-challenges.d.mts +30 -11
  326. package/resources/x/account-connection-challenges.d.mts.map +1 -1
  327. package/resources/x/account-connection-challenges.d.ts +30 -11
  328. package/resources/x/account-connection-challenges.d.ts.map +1 -1
  329. package/resources/x/account-connection-challenges.js +5 -5
  330. package/resources/x/account-connection-challenges.js.map +1 -1
  331. package/resources/x/account-connection-challenges.mjs +5 -5
  332. package/resources/x/account-connection-challenges.mjs.map +1 -1
  333. package/resources/x/accounts.d.mts +38 -10
  334. package/resources/x/accounts.d.mts.map +1 -1
  335. package/resources/x/accounts.d.ts +38 -10
  336. package/resources/x/accounts.d.ts.map +1 -1
  337. package/resources/x/accounts.js +8 -8
  338. package/resources/x/accounts.js.map +1 -1
  339. package/resources/x/accounts.mjs +8 -8
  340. package/resources/x/accounts.mjs.map +1 -1
  341. package/resources/x/analysis.d.mts +3274 -0
  342. package/resources/x/analysis.d.mts.map +1 -0
  343. package/resources/x/analysis.d.ts +3274 -0
  344. package/resources/x/analysis.d.ts.map +1 -0
  345. package/resources/x/analysis.js +131 -0
  346. package/resources/x/analysis.js.map +1 -0
  347. package/resources/x/analysis.mjs +127 -0
  348. package/resources/x/analysis.mjs.map +1 -0
  349. package/resources/x/bookmarks.d.mts +84 -9
  350. package/resources/x/bookmarks.d.mts.map +1 -1
  351. package/resources/x/bookmarks.d.ts +84 -9
  352. package/resources/x/bookmarks.d.ts.map +1 -1
  353. package/resources/x/bookmarks.js +6 -5
  354. package/resources/x/bookmarks.js.map +1 -1
  355. package/resources/x/bookmarks.mjs +6 -5
  356. package/resources/x/bookmarks.mjs.map +1 -1
  357. package/resources/x/broadcasts.d.mts +176 -0
  358. package/resources/x/broadcasts.d.mts.map +1 -0
  359. package/resources/x/broadcasts.d.ts +176 -0
  360. package/resources/x/broadcasts.d.ts.map +1 -0
  361. package/resources/x/broadcasts.js +28 -0
  362. package/resources/x/broadcasts.js.map +1 -0
  363. package/resources/x/broadcasts.mjs +24 -0
  364. package/resources/x/broadcasts.mjs.map +1 -0
  365. package/resources/x/communities/communities.d.mts +612 -128
  366. package/resources/x/communities/communities.d.mts.map +1 -1
  367. package/resources/x/communities/communities.d.ts +612 -128
  368. package/resources/x/communities/communities.d.ts.map +1 -1
  369. package/resources/x/communities/communities.js +96 -18
  370. package/resources/x/communities/communities.js.map +1 -1
  371. package/resources/x/communities/communities.mjs +96 -18
  372. package/resources/x/communities/communities.mjs.map +1 -1
  373. package/resources/x/communities/index.d.mts +2 -1
  374. package/resources/x/communities/index.d.mts.map +1 -1
  375. package/resources/x/communities/index.d.ts +2 -1
  376. package/resources/x/communities/index.d.ts.map +1 -1
  377. package/resources/x/communities/index.js +3 -2
  378. package/resources/x/communities/index.js.map +1 -1
  379. package/resources/x/communities/index.mjs +1 -1
  380. package/resources/x/communities/index.mjs.map +1 -1
  381. package/resources/x/communities/join.d.mts +46 -25
  382. package/resources/x/communities/join.d.mts.map +1 -1
  383. package/resources/x/communities/join.d.ts +46 -25
  384. package/resources/x/communities/join.d.ts.map +1 -1
  385. package/resources/x/communities/join.js +10 -8
  386. package/resources/x/communities/join.js.map +1 -1
  387. package/resources/x/communities/join.mjs +10 -8
  388. package/resources/x/communities/join.mjs.map +1 -1
  389. package/resources/x/communities/media.d.mts +197 -0
  390. package/resources/x/communities/media.d.mts.map +1 -0
  391. package/resources/x/communities/media.d.ts +197 -0
  392. package/resources/x/communities/media.d.ts.map +1 -0
  393. package/resources/x/communities/media.js +28 -0
  394. package/resources/x/communities/media.js.map +1 -0
  395. package/resources/x/communities/media.mjs +24 -0
  396. package/resources/x/communities/media.mjs.map +1 -0
  397. package/resources/x/communities/tweets.d.mts +350 -20
  398. package/resources/x/communities/tweets.d.mts.map +1 -1
  399. package/resources/x/communities/tweets.d.ts +350 -20
  400. package/resources/x/communities/tweets.d.ts.map +1 -1
  401. package/resources/x/communities/tweets.js +8 -8
  402. package/resources/x/communities/tweets.js.map +1 -1
  403. package/resources/x/communities/tweets.mjs +8 -8
  404. package/resources/x/communities/tweets.mjs.map +1 -1
  405. package/resources/x/communities.d.mts.map +1 -1
  406. package/resources/x/communities.d.ts.map +1 -1
  407. package/resources/x/communities.js +0 -1
  408. package/resources/x/communities.js.map +1 -1
  409. package/resources/x/communities.mjs +0 -1
  410. package/resources/x/communities.mjs.map +1 -1
  411. package/resources/x/dm.d.mts +245 -13
  412. package/resources/x/dm.d.mts.map +1 -1
  413. package/resources/x/dm.d.ts +245 -13
  414. package/resources/x/dm.d.ts.map +1 -1
  415. package/resources/x/dm.js +29 -3
  416. package/resources/x/dm.js.map +1 -1
  417. package/resources/x/dm.mjs +29 -3
  418. package/resources/x/dm.mjs.map +1 -1
  419. package/resources/x/followers.d.mts +31 -3
  420. package/resources/x/followers.d.mts.map +1 -1
  421. package/resources/x/followers.d.ts +31 -3
  422. package/resources/x/followers.d.ts.map +1 -1
  423. package/resources/x/followers.js +2 -2
  424. package/resources/x/followers.js.map +1 -1
  425. package/resources/x/followers.mjs +2 -2
  426. package/resources/x/followers.mjs.map +1 -1
  427. package/resources/x/index.d.mts +12 -8
  428. package/resources/x/index.d.mts.map +1 -1
  429. package/resources/x/index.d.ts +12 -8
  430. package/resources/x/index.d.ts.map +1 -1
  431. package/resources/x/index.js +9 -2
  432. package/resources/x/index.js.map +1 -1
  433. package/resources/x/index.mjs +5 -2
  434. package/resources/x/index.mjs.map +1 -1
  435. package/resources/x/jobs.d.mts +506 -0
  436. package/resources/x/jobs.d.mts.map +1 -0
  437. package/resources/x/jobs.d.ts +506 -0
  438. package/resources/x/jobs.d.ts.map +1 -0
  439. package/resources/x/jobs.js +59 -0
  440. package/resources/x/jobs.js.map +1 -0
  441. package/resources/x/jobs.mjs +55 -0
  442. package/resources/x/jobs.mjs.map +1 -0
  443. package/resources/x/lists.d.mts +1058 -27
  444. package/resources/x/lists.d.mts.map +1 -1
  445. package/resources/x/lists.d.ts +1058 -27
  446. package/resources/x/lists.d.ts.map +1 -1
  447. package/resources/x/lists.js +39 -10
  448. package/resources/x/lists.js.map +1 -1
  449. package/resources/x/lists.mjs +39 -10
  450. package/resources/x/lists.mjs.map +1 -1
  451. package/resources/x/media.d.mts +24 -13
  452. package/resources/x/media.d.mts.map +1 -1
  453. package/resources/x/media.d.ts +24 -13
  454. package/resources/x/media.d.ts.map +1 -1
  455. package/resources/x/media.js +2 -3
  456. package/resources/x/media.js.map +1 -1
  457. package/resources/x/media.mjs +2 -3
  458. package/resources/x/media.mjs.map +1 -1
  459. package/resources/x/profile.d.mts +60 -33
  460. package/resources/x/profile.d.mts.map +1 -1
  461. package/resources/x/profile.d.ts +60 -33
  462. package/resources/x/profile.d.ts.map +1 -1
  463. package/resources/x/profile.js +3 -4
  464. package/resources/x/profile.js.map +1 -1
  465. package/resources/x/profile.mjs +3 -4
  466. package/resources/x/profile.mjs.map +1 -1
  467. package/resources/x/spaces.d.mts +857 -0
  468. package/resources/x/spaces.d.mts.map +1 -0
  469. package/resources/x/spaces.d.ts +857 -0
  470. package/resources/x/spaces.d.ts.map +1 -0
  471. package/resources/x/spaces.js +57 -0
  472. package/resources/x/spaces.js.map +1 -0
  473. package/resources/x/spaces.mjs +53 -0
  474. package/resources/x/spaces.mjs.map +1 -0
  475. package/resources/x/tweets/index.d.mts +1 -1
  476. package/resources/x/tweets/index.d.mts.map +1 -1
  477. package/resources/x/tweets/index.d.ts +1 -1
  478. package/resources/x/tweets/index.d.ts.map +1 -1
  479. package/resources/x/tweets/index.js +0 -1
  480. package/resources/x/tweets/index.js.map +1 -1
  481. package/resources/x/tweets/index.mjs +0 -1
  482. package/resources/x/tweets/index.mjs.map +1 -1
  483. package/resources/x/tweets/like.d.mts +38 -20
  484. package/resources/x/tweets/like.d.mts.map +1 -1
  485. package/resources/x/tweets/like.d.ts +38 -20
  486. package/resources/x/tweets/like.d.ts.map +1 -1
  487. package/resources/x/tweets/like.js +2 -3
  488. package/resources/x/tweets/like.js.map +1 -1
  489. package/resources/x/tweets/like.mjs +2 -3
  490. package/resources/x/tweets/like.mjs.map +1 -1
  491. package/resources/x/tweets/retweet.d.mts +38 -20
  492. package/resources/x/tweets/retweet.d.mts.map +1 -1
  493. package/resources/x/tweets/retweet.d.ts +38 -20
  494. package/resources/x/tweets/retweet.d.ts.map +1 -1
  495. package/resources/x/tweets/retweet.js +2 -3
  496. package/resources/x/tweets/retweet.js.map +1 -1
  497. package/resources/x/tweets/retweet.mjs +2 -3
  498. package/resources/x/tweets/retweet.mjs.map +1 -1
  499. package/resources/x/tweets/tweets.d.mts +2639 -326
  500. package/resources/x/tweets/tweets.d.mts.map +1 -1
  501. package/resources/x/tweets/tweets.d.ts +2639 -326
  502. package/resources/x/tweets/tweets.d.ts.map +1 -1
  503. package/resources/x/tweets/tweets.js +147 -22
  504. package/resources/x/tweets/tweets.js.map +1 -1
  505. package/resources/x/tweets/tweets.mjs +147 -22
  506. package/resources/x/tweets/tweets.mjs.map +1 -1
  507. package/resources/x/tweets.d.mts.map +1 -1
  508. package/resources/x/tweets.d.ts.map +1 -1
  509. package/resources/x/tweets.js +0 -1
  510. package/resources/x/tweets.js.map +1 -1
  511. package/resources/x/tweets.mjs +0 -1
  512. package/resources/x/tweets.mjs.map +1 -1
  513. package/resources/x/users/follow.d.mts +38 -20
  514. package/resources/x/users/follow.d.mts.map +1 -1
  515. package/resources/x/users/follow.d.ts +38 -20
  516. package/resources/x/users/follow.d.ts.map +1 -1
  517. package/resources/x/users/follow.js +2 -3
  518. package/resources/x/users/follow.js.map +1 -1
  519. package/resources/x/users/follow.mjs +2 -3
  520. package/resources/x/users/follow.mjs.map +1 -1
  521. package/resources/x/users/index.d.mts +1 -1
  522. package/resources/x/users/index.d.mts.map +1 -1
  523. package/resources/x/users/index.d.ts +1 -1
  524. package/resources/x/users/index.d.ts.map +1 -1
  525. package/resources/x/users/index.js +0 -1
  526. package/resources/x/users/index.js.map +1 -1
  527. package/resources/x/users/index.mjs +0 -1
  528. package/resources/x/users/index.mjs.map +1 -1
  529. package/resources/x/users/users.d.mts +3068 -457
  530. package/resources/x/users/users.d.mts.map +1 -1
  531. package/resources/x/users/users.d.ts +3068 -457
  532. package/resources/x/users/users.d.ts.map +1 -1
  533. package/resources/x/users/users.js +205 -23
  534. package/resources/x/users/users.js.map +1 -1
  535. package/resources/x/users/users.mjs +205 -23
  536. package/resources/x/users/users.mjs.map +1 -1
  537. package/resources/x/users.d.mts.map +1 -1
  538. package/resources/x/users.d.ts.map +1 -1
  539. package/resources/x/users.js +0 -1
  540. package/resources/x/users.js.map +1 -1
  541. package/resources/x/users.mjs +0 -1
  542. package/resources/x/users.mjs.map +1 -1
  543. package/resources/x/write-actions.d.mts +13 -6
  544. package/resources/x/write-actions.d.mts.map +1 -1
  545. package/resources/x/write-actions.d.ts +13 -6
  546. package/resources/x/write-actions.d.ts.map +1 -1
  547. package/resources/x/write-actions.js +1 -2
  548. package/resources/x/write-actions.js.map +1 -1
  549. package/resources/x/write-actions.mjs +1 -2
  550. package/resources/x/write-actions.mjs.map +1 -1
  551. package/resources/x/x.d.mts +864 -27
  552. package/resources/x/x.d.mts.map +1 -1
  553. package/resources/x/x.d.ts +864 -27
  554. package/resources/x/x.d.ts.map +1 -1
  555. package/resources/x/x.js +78 -6
  556. package/resources/x/x.js.map +1 -1
  557. package/resources/x/x.mjs +80 -8
  558. package/resources/x/x.mjs.map +1 -1
  559. package/resources/x.d.mts.map +1 -1
  560. package/resources/x.d.ts.map +1 -1
  561. package/resources/x.js +0 -1
  562. package/resources/x.js.map +1 -1
  563. package/resources/x.mjs +0 -1
  564. package/resources/x.mjs.map +1 -1
  565. package/skills/x-twitter-scraper/SKILL.md +99 -344
  566. package/skills/x-twitter-scraper/metadata.json +2 -2
  567. package/skills/x-twitter-scraper/references/mcp-setup.md +12 -15
  568. package/skills/x-twitter-scraper/references/mcp-tools.md +105 -166
  569. package/skills/x-twitter-scraper/references/types-mcp-output-schemas.md +4 -4
  570. package/skills/x-twitter-scraper/references/types.md +0 -1
  571. package/skills/x-twitter-scraper/skill-card.md +5 -6
  572. package/skills/x-twitter-scraper/skillspector-report.md +6 -3
  573. package/skills/xquik-account-automation/LICENSE +21 -0
  574. package/skills/xquik-account-automation/SKILL.md +91 -0
  575. package/skills/xquik-social-research/SKILL.md +48 -55
  576. package/src/client.ts +48 -7
  577. package/src/core/api-promise.ts +0 -2
  578. package/src/core/error.ts +0 -2
  579. package/src/core/resource.ts +0 -2
  580. package/src/core/streaming.ts +326 -0
  581. package/src/index.ts +0 -2
  582. package/src/internal/builtin-types.ts +0 -2
  583. package/src/internal/decoders/line.ts +138 -0
  584. package/src/internal/detect-platform.ts +0 -2
  585. package/src/internal/errors.ts +0 -2
  586. package/src/internal/headers.ts +0 -2
  587. package/src/internal/parse.ts +9 -2
  588. package/src/internal/request-options.ts +0 -2
  589. package/src/internal/shim-types.ts +0 -2
  590. package/src/internal/shims.ts +0 -2
  591. package/src/internal/types.ts +0 -2
  592. package/src/internal/utils/base64.ts +0 -2
  593. package/src/internal/utils/env.ts +0 -2
  594. package/src/internal/utils/log.ts +0 -2
  595. package/src/internal/utils/query.ts +0 -2
  596. package/src/internal/utils/sleep.ts +0 -2
  597. package/src/internal/utils/uuid.ts +0 -2
  598. package/src/internal/utils/values.ts +0 -2
  599. package/src/internal/utils.ts +0 -2
  600. package/src/lib/.keep +2 -4
  601. package/src/resources/account.ts +41 -14
  602. package/src/resources/compose.ts +77 -23
  603. package/src/resources/credits.ts +19 -12
  604. package/src/resources/drafts.ts +13 -24
  605. package/src/resources/draws.ts +94 -38
  606. package/src/resources/events.ts +3225 -70
  607. package/src/resources/extractions.ts +512 -127
  608. package/src/resources/guest-wallets.ts +6 -7
  609. package/src/resources/index.ts +24 -3
  610. package/src/resources/monitors/index.ts +2 -2
  611. package/src/resources/monitors/keywords.ts +82 -16
  612. package/src/resources/monitors/monitors.ts +66 -16
  613. package/src/resources/monitors.ts +0 -2
  614. package/src/resources/radar.ts +32 -38
  615. package/src/resources/shared.ts +2226 -352
  616. package/src/resources/styles.ts +43 -29
  617. package/src/resources/subscribe.ts +1 -3
  618. package/src/resources/support/attachments.ts +0 -2
  619. package/src/resources/support/index.ts +1 -2
  620. package/src/resources/support/support.ts +2 -2
  621. package/src/resources/support/tickets.ts +38 -12
  622. package/src/resources/support.ts +0 -2
  623. package/src/resources/trends.ts +23 -7
  624. package/src/resources/webhooks.ts +109 -17
  625. package/src/resources/x/account-connection-attempts.ts +1 -3
  626. package/src/resources/x/account-connection-challenges.ts +39 -13
  627. package/src/resources/x/accounts.ts +46 -12
  628. package/src/resources/x/analysis.ts +3945 -0
  629. package/src/resources/x/bookmarks.ts +103 -11
  630. package/src/resources/x/broadcasts.ts +223 -0
  631. package/src/resources/x/communities/communities.ts +743 -143
  632. package/src/resources/x/communities/index.ts +9 -2
  633. package/src/resources/x/communities/join.ts +46 -25
  634. package/src/resources/x/communities/media.ts +249 -0
  635. package/src/resources/x/communities/tweets.ts +427 -22
  636. package/src/resources/x/communities.ts +0 -2
  637. package/src/resources/x/dm.ts +334 -13
  638. package/src/resources/x/followers.ts +35 -5
  639. package/src/resources/x/index.ts +106 -3
  640. package/src/resources/x/jobs.ts +625 -0
  641. package/src/resources/x/lists.ts +1307 -30
  642. package/src/resources/x/media.ts +24 -14
  643. package/src/resources/x/profile.ts +60 -32
  644. package/src/resources/x/spaces.ts +1074 -0
  645. package/src/resources/x/tweets/index.ts +18 -2
  646. package/src/resources/x/tweets/like.ts +38 -20
  647. package/src/resources/x/tweets/retweet.ts +38 -20
  648. package/src/resources/x/tweets/tweets.ts +3693 -843
  649. package/src/resources/x/tweets.ts +0 -2
  650. package/src/resources/x/users/follow.ts +38 -20
  651. package/src/resources/x/users/index.ts +22 -2
  652. package/src/resources/x/users/users.ts +3687 -467
  653. package/src/resources/x/users.ts +0 -2
  654. package/src/resources/x/write-actions.ts +13 -7
  655. package/src/resources/x/x.ts +1234 -24
  656. package/src/resources/x.ts +0 -2
  657. package/src/streaming.ts +6 -0
  658. package/src/version.ts +1 -1
  659. package/streaming.d.mts +3 -0
  660. package/streaming.d.mts.map +1 -0
  661. package/streaming.d.ts +3 -0
  662. package/streaming.d.ts.map +1 -0
  663. package/streaming.js +9 -0
  664. package/streaming.js.map +1 -0
  665. package/streaming.mjs +6 -0
  666. package/streaming.mjs.map +1 -0
  667. package/version.d.mts +1 -1
  668. package/version.d.ts +1 -1
  669. package/version.js +1 -1
  670. package/version.mjs +1 -1
  671. package/skills/x-twitter-scraper/references/types-rest-api-vs-mcp-field-naming.md +0 -15
@@ -2,285 +2,373 @@
2
2
  //
3
3
  // SPDX-License-Identifier: Apache-2.0
4
4
 
5
- // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
5
+ import * as Shared from './shared';
6
6
 
7
7
  /**
8
- * Content disclosure metadata shown by X when a tweet is labeled as paid
9
- * partnership content or AI-generated media.
10
- */
11
- export interface ContentDisclosure {
12
- advertising?: ContentDisclosure.Advertising;
13
-
14
- aiGenerated?: ContentDisclosure.AIGenerated;
15
- }
16
-
17
- export namespace ContentDisclosure {
18
- export interface Advertising {
19
- /**
20
- * True when X labels the tweet as paid promotion content.
21
- */
22
- isPaidPromotion?: boolean;
23
- }
24
-
25
- export interface AIGenerated {
26
- /**
27
- * Source of the AI-generated media disclosure.
28
- */
29
- detectionSource?: string;
30
-
31
- /**
32
- * True when X labels the tweet as containing AI-generated media.
33
- */
34
- hasAiGeneratedMedia?: boolean;
35
- }
36
- }
37
-
38
- /**
39
- * Quoted or retweeted tweet context. Every object includes id, text, and
40
- * engagement metrics. A zero metric can mean X did not report the count. Author,
41
- * media, and conversation fields appear when available.
8
+ * Public X Community, as every Community read returns it.
42
9
  */
43
- export interface EmbeddedTweet {
10
+ export interface Community {
11
+ /**
12
+ * Unique community identifier
13
+ */
44
14
  id: string;
45
15
 
46
- bookmarkCount: number;
47
-
48
- likeCount: number;
49
-
50
- quoteCount: number;
51
-
52
- replyCount: number;
53
-
54
- retweetCount: number;
55
-
56
- text: string;
57
-
58
- viewCount: number;
59
-
60
16
  /**
61
- * Article metadata attached to a tweet.
17
+ * Whether the community is marked sensitive
62
18
  */
63
- article?: EmbeddedTweet.Article;
19
+ is_nsfw: boolean;
64
20
 
65
21
  /**
66
- * X user profile with bio, follower counts, and verification status.
22
+ * Total member count
67
23
  */
68
- author?: UserProfile;
24
+ member_count: number;
69
25
 
70
26
  /**
71
- * Public card metadata attached to a tweet.
27
+ * Display name of the community
72
28
  */
73
- card?: EmbeddedTweet.Card;
29
+ name: string;
74
30
 
75
31
  /**
76
- * Community Note presentation metadata returned by X.
32
+ * Public X profile.
77
33
  */
78
- communityNote?: EmbeddedTweet.CommunityNote;
34
+ admin?: UserProfile;
79
35
 
80
36
  /**
81
- * Content disclosure metadata shown by X when a tweet is labeled as paid
82
- * partnership content or AI-generated media.
37
+ * The banner X shows for a community, with its size & colors.
83
38
  */
84
- contentDisclosure?: ContentDisclosure;
85
-
86
- conversationId?: string;
87
-
88
- createdAt?: string;
89
-
90
- displayTextRange?: Array<number>;
39
+ banner?: Community.Banner;
91
40
 
92
41
  /**
93
- * Edit history metadata returned by X.
42
+ * Community banner image URL
94
43
  */
95
- edit?: EmbeddedTweet.Edit;
96
-
97
- entities?: { [key: string]: unknown };
98
-
99
- inReplyToId?: string;
100
-
101
- inReplyToUserId?: string;
102
-
103
- inReplyToUsername?: string;
104
-
105
- isLimitedReply?: boolean;
106
-
107
- isNoteTweet?: boolean;
108
-
109
- isQuoteStatus?: boolean;
110
-
111
- isReply?: boolean;
112
-
113
- isTranslatable?: boolean;
114
-
115
- lang?: string;
116
-
117
- media?: Array<TweetMedia>;
44
+ banner_url?: string;
118
45
 
119
46
  /**
120
- * Complete Note Tweet content and rich-text metadata.
47
+ * Community creation timestamp
121
48
  */
122
- noteTweet?: EmbeddedTweet.NoteTweet;
49
+ created_at?: string;
123
50
 
124
51
  /**
125
- * Public place metadata attached to a tweet.
52
+ * The creator's public profile, or the ID, username and badge alone when X sends
53
+ * no profile
126
54
  */
127
- place?: EmbeddedTweet.Place;
128
-
129
- possiblySensitive?: boolean;
55
+ creator?: UserProfile | Community.UnionMember1;
130
56
 
131
57
  /**
132
- * Engagement counts retained from a prior tweet edit.
58
+ * About text for the community
133
59
  */
134
- previousCounts?: EmbeddedTweet.PreviousCounts;
60
+ description?: string;
135
61
 
136
62
  /**
137
- * Quoted or retweeted tweet context. Every object includes id, text, and
138
- * engagement metrics. A zero metric can mean X did not report the count. Author,
139
- * media, and conversation fields appear when available.
63
+ * Invitation policy
140
64
  */
141
- quoted_tweet?: EmbeddedTweet;
65
+ invites_policy?: string;
142
66
 
143
67
  /**
144
- * Quoted or retweeted tweet context. Every object includes id, text, and
145
- * engagement metrics. A zero metric can mean X did not report the count. Author,
146
- * media, and conversation fields appear when available.
68
+ * Join policy (open or restricted)
147
69
  */
148
- retweeted_tweet?: EmbeddedTweet;
149
-
150
- source?: string;
151
-
152
- type?: string;
153
-
154
- url?: string;
70
+ join_policy?: string;
155
71
 
156
- viewState?: string;
157
- }
72
+ /**
73
+ * The members X previews beside the member count. A keyword or topic result gives
74
+ * each member's ID & picture only.
75
+ */
76
+ membersFacepile?: Array<UserProfile | Community.CommunityMemberPreview>;
158
77
 
159
- export namespace EmbeddedTweet {
160
78
  /**
161
- * Article metadata attached to a tweet.
79
+ * Total moderator count
162
80
  */
163
- export interface Article {
164
- id?: string;
81
+ moderator_count?: number;
165
82
 
166
- coverMediaUrl?: string;
83
+ /**
84
+ * Primary topic. Its id is absent when X lists the community in a keyword or topic
85
+ * result.
86
+ */
87
+ primary_topic?: Community.PrimaryTopic;
167
88
 
168
- previewText?: string;
89
+ /**
90
+ * What the community asks a user who joins
91
+ */
92
+ question?: string;
169
93
 
170
- title?: string;
171
- }
94
+ /**
95
+ * Community rules
96
+ */
97
+ rules?: Array<Community.Rule>;
172
98
 
173
99
  /**
174
- * Public card metadata attached to a tweet.
100
+ * Tags X finds the community by
175
101
  */
176
- export interface Card {
177
- id?: string;
102
+ searchTags?: Array<string>;
103
+ }
178
104
 
179
- bindingValues?: { [key: string]: unknown };
105
+ export namespace Community {
106
+ /**
107
+ * The banner X shows for a community, with its size & colors.
108
+ */
109
+ export interface Banner {
110
+ /**
111
+ * Banner image URL at its original size
112
+ */
113
+ url: string;
180
114
 
181
- name?: string;
115
+ /**
116
+ * Main colors of the banner, largest share first
117
+ */
118
+ colors?: Array<Banner.Color>;
182
119
 
183
- url?: string;
184
- }
120
+ /**
121
+ * Area X keeps in view when it crops the banner, in pixels from the top left
122
+ */
123
+ focus?: Banner.Focus;
185
124
 
186
- /**
187
- * Community Note presentation metadata returned by X.
188
- */
189
- export interface CommunityNote {
190
- id?: string;
125
+ /**
126
+ * Banner height in pixels
127
+ */
128
+ height?: number;
191
129
 
192
- destinationUrl?: string;
130
+ /**
131
+ * Banner width in pixels
132
+ */
133
+ width?: number;
134
+ }
193
135
 
194
- footer?: string;
136
+ export namespace Banner {
137
+ export interface Color {
138
+ /**
139
+ * Blue value of the color
140
+ */
141
+ blue: number;
142
+
143
+ /**
144
+ * Green value of the color
145
+ */
146
+ green: number;
147
+
148
+ /**
149
+ * Share of the banner in this color
150
+ */
151
+ percentage: number;
152
+
153
+ /**
154
+ * Red value of the color
155
+ */
156
+ red: number;
157
+ }
195
158
 
196
- shortTitle?: string;
159
+ /**
160
+ * Area X keeps in view when it crops the banner, in pixels from the top left
161
+ */
162
+ export interface Focus {
163
+ /**
164
+ * Height of the area
165
+ */
166
+ height?: number;
167
+
168
+ /**
169
+ * Distance from the left edge
170
+ */
171
+ left?: number;
172
+
173
+ /**
174
+ * Distance from the top edge
175
+ */
176
+ top?: number;
177
+
178
+ /**
179
+ * Width of the area
180
+ */
181
+ width?: number;
182
+ }
183
+ }
197
184
 
198
- subtitle?: string;
185
+ export interface UnionMember1 {
186
+ /**
187
+ * Numeric X user ID of the creator
188
+ */
189
+ id: string;
199
190
 
200
- title?: string;
191
+ /**
192
+ * X username of the creator
193
+ */
194
+ username: string;
201
195
 
202
- visualStyle?: string;
196
+ /**
197
+ * Whether X shows the creator a badge
198
+ */
199
+ verified: boolean;
203
200
  }
204
201
 
205
202
  /**
206
- * Edit history metadata returned by X.
203
+ * A member X previews by ID & profile picture only.
207
204
  */
208
- export interface Edit {
209
- editableUntilMsecs?: string;
205
+ export interface CommunityMemberPreview {
206
+ /**
207
+ * Numeric X user ID of the member
208
+ */
209
+ id: string;
210
210
 
211
- editTweetIds?: Array<string>;
211
+ /**
212
+ * Profile picture URL of the member
213
+ */
214
+ profilePicture?: string;
212
215
  }
213
216
 
214
217
  /**
215
- * Complete Note Tweet content and rich-text metadata.
218
+ * Primary topic. Its id is absent when X lists the community in a keyword or topic
219
+ * result.
216
220
  */
217
- export interface NoteTweet {
218
- text: string;
221
+ export interface PrimaryTopic {
222
+ /**
223
+ * Topic name X shows on the community
224
+ */
225
+ name: string;
219
226
 
227
+ /**
228
+ * Topic ID that /x/communities/popular takes
229
+ */
220
230
  id?: string;
221
-
222
- entities?: { [key: string]: unknown };
223
-
224
- isExpandable?: boolean;
225
-
226
- richtextTags?: Array<NoteTweet.RichtextTag>;
227
231
  }
228
232
 
229
- export namespace NoteTweet {
230
- export interface RichtextTag {
231
- fromIndex: number;
233
+ export interface Rule {
234
+ /**
235
+ * Rule ID
236
+ */
237
+ id?: string;
232
238
 
233
- toIndex: number;
239
+ /**
240
+ * What the rule asks of members
241
+ */
242
+ description?: string;
234
243
 
235
- types: Array<string>;
236
- }
244
+ /**
245
+ * Rule title
246
+ */
247
+ name?: string;
237
248
  }
249
+ }
238
250
 
251
+ /**
252
+ * 1 page of X Communities, in X's order.
253
+ */
254
+ export interface CommunityPage {
239
255
  /**
240
- * Public place metadata attached to a tweet.
256
+ * Communities in X's order
241
257
  */
242
- export interface Place {
243
- id?: string;
258
+ communities: Array<Community>;
244
259
 
245
- boundingBox?: { [key: string]: unknown };
260
+ /**
261
+ * Whether another page of communities follows
262
+ */
263
+ has_next_page: boolean;
246
264
 
247
- country?: string;
265
+ /**
266
+ * Cursor for the next page of communities. Empty at the end.
267
+ */
268
+ next_cursor: string;
269
+ }
248
270
 
249
- countryCode?: string;
271
+ /**
272
+ * A topic X groups communities under, with its subtopics.
273
+ */
274
+ export interface CommunityTopic {
275
+ /**
276
+ * Topic ID. Pass it as topicId to /x/communities/popular.
277
+ */
278
+ id: string;
250
279
 
251
- fullName?: string;
280
+ /**
281
+ * Topic name, which topic on /x/communities/popular takes
282
+ */
283
+ name: string;
252
284
 
253
- name?: string;
285
+ /**
286
+ * Narrower topics inside this topic
287
+ */
288
+ subtopics: Array<CommunityTopic.Subtopic>;
289
+ }
254
290
 
255
- placeType?: string;
291
+ export namespace CommunityTopic {
292
+ export interface Subtopic {
293
+ /**
294
+ * Subtopic ID, which topicId also takes
295
+ */
296
+ id: string;
256
297
 
257
- url?: string;
298
+ /**
299
+ * Subtopic name, which topic also takes
300
+ */
301
+ name: string;
258
302
  }
303
+ }
259
304
 
260
- /**
261
- * Engagement counts retained from a prior tweet edit.
262
- */
263
- export interface PreviousCounts {
264
- bookmarkCount?: number;
305
+ /**
306
+ * Content disclosure metadata shown by X when a tweet is labeled as paid
307
+ * partnership content or AI-generated media.
308
+ */
309
+ export interface ContentDisclosure {
310
+ advertising?: ContentDisclosure.Advertising;
265
311
 
266
- likeCount?: number;
312
+ aiGenerated?: ContentDisclosure.AIGenerated;
313
+ }
267
314
 
268
- quoteCount?: number;
315
+ export namespace ContentDisclosure {
316
+ export interface Advertising {
317
+ /**
318
+ * True when X labels the tweet as paid promotion content.
319
+ */
320
+ isPaidPromotion?: boolean;
321
+ }
269
322
 
270
- replyCount?: number;
323
+ export interface AIGenerated {
324
+ /**
325
+ * How X detected AI media. X omits it for self-declared posts.
326
+ */
327
+ detectionSource?: string;
271
328
 
272
- retweetCount?: number;
329
+ /**
330
+ * True when X labels the tweet as containing AI-generated media.
331
+ */
332
+ hasAiGeneratedMedia?: boolean;
273
333
  }
274
334
  }
275
335
 
276
336
  /**
277
- * Error response. Default v1 returns a legacy string error code. Send
278
- * `xquik-api-contract: 2026-04-29` to receive the structured best-practice error
279
- * object.
337
+ * A parent, quoted or retweeted tweet. It has the TweetPublicData fields and an
338
+ * author. Nesting stops after 4 levels.
280
339
  */
281
- export interface Error {
282
- error:
283
- | 'internal_error'
340
+ export interface EmbeddedTweet {
341
+ id: string;
342
+
343
+ bookmarkCount: number;
344
+
345
+ likeCount: number;
346
+
347
+ quoteCount: number;
348
+
349
+ replyCount: number;
350
+
351
+ retweetCount: number;
352
+
353
+ text: string;
354
+
355
+ viewCount: number;
356
+
357
+ /**
358
+ * Public X profile.
359
+ */
360
+ author?: UserProfile;
361
+
362
+ [k: string]: unknown;
363
+ }
364
+
365
+ /**
366
+ * Error response. Default v1 returns a legacy string code. Send
367
+ * `xquik-api-contract: 2026-04-29` for the structured best-practice error object.
368
+ */
369
+ export interface Error {
370
+ error:
371
+ | 'internal_error'
284
372
  | 'account_already_connected'
285
373
  | 'account_needs_reauth'
286
374
  | 'account_not_found'
@@ -288,10 +376,13 @@ export interface Error {
288
376
  | 'account_restricted'
289
377
  | 'api_key_limit_reached'
290
378
  | 'article_not_found'
379
+ | 'closed'
291
380
  | 'dm_not_permitted'
292
381
  | 'invalid_format'
293
382
  | 'invalid_id'
294
383
  | 'invalid_input'
384
+ | 'invalid_media_url'
385
+ | 'invalid_message_id'
295
386
  | 'invalid_params'
296
387
  | 'invalid_tool_type'
297
388
  | 'invalid_tweet_id'
@@ -301,9 +392,11 @@ export interface Error {
301
392
  | 'invalid_username'
302
393
  | 'invalid_json'
303
394
  | 'insufficient_credits'
395
+ | 'job_not_found'
304
396
  | 'login_cooldown'
305
397
  | 'login_failed'
306
398
  | 'media_download_failed'
399
+ | 'media_too_large'
307
400
  | 'missing_params'
308
401
  | 'missing_query'
309
402
  | 'monitor_already_exists'
@@ -322,43 +415,67 @@ export interface Error {
322
415
  | 'unsupported_field'
323
416
  | 'user_not_found'
324
417
  | 'body_too_large'
418
+ | 'bookmark_folders_unavailable'
419
+ | 'broadcast_not_found'
325
420
  | 'checkout_unavailable'
326
421
  | 'connection_challenge_expired'
327
422
  | 'connection_challenge_inactive'
328
423
  | 'coverage_cursor_gone'
329
424
  | 'coverage_cursor_unavailable'
425
+ | 'cursor_account_unavailable'
330
426
  | 'draft_not_found'
427
+ | 'draw_too_large'
428
+ | 'expired'
331
429
  | 'favoriters_unavailable'
332
430
  | 'forbidden'
333
431
  | 'guest_wallet_unavailable'
334
432
  | 'guest_wallets_disabled'
335
433
  | 'guest_wallets_unavailable'
336
434
  | 'idempotency_conflict'
435
+ | 'idempotency_in_progress'
337
436
  | 'idempotency_key_conflict'
437
+ | 'invalid_broadcast_id'
338
438
  | 'invalid_community_id'
439
+ | 'invalid_community_topic'
339
440
  | 'invalid_complete_replies_request'
340
441
  | 'invalid_coverage_cursor'
341
442
  | 'invalid_coverage_request'
443
+ | 'invalid_cursor'
342
444
  | 'invalid_idempotency_key'
445
+ | 'invalid_job_filter'
446
+ | 'invalid_job_id'
343
447
  | 'invalid_list_id'
344
448
  | 'invalid_output_options'
345
449
  | 'invalid_payment_amount'
346
450
  | 'invalid_range'
347
451
  | 'invalid_reply_options'
452
+ | 'invalid_space_id'
453
+ | 'likes_unavailable'
454
+ | 'list_not_found'
348
455
  | 'login_rate_limited'
349
456
  | 'login_service_unavailable'
350
457
  | 'missing_idempotency_key'
351
458
  | 'missing_ids'
459
+ | 'missing_url'
352
460
  | 'no_cached_style'
461
+ | 'pagination_stalled'
353
462
  | 'passkey_required'
354
463
  | 'rate_limited'
355
464
  | 'read_request_timeout'
465
+ | 'replay_unavailable'
356
466
  | 'replies_incomplete'
467
+ | 'retweeters_incomplete'
468
+ | 'search_unavailable'
469
+ | 'space_canceled'
470
+ | 'space_not_ended'
357
471
  | 'support_media_rate_limit'
358
472
  | 'support_request_rate_limit'
473
+ | 'telegram_unavailable'
359
474
  | 'too_many_ids'
475
+ | 'too_many_streams'
360
476
  | 'too_many_tweets'
361
477
  | 'unknown_field'
478
+ | 'unsupported_media_combination'
362
479
  | 'unsupported_media_type'
363
480
  | 'webhook_inactive'
364
481
  | 'write_tracking_unavailable'
@@ -370,20 +487,31 @@ export interface Error {
370
487
  | 'x_api_unavailable'
371
488
  | 'x_api_unauthorized'
372
489
  | 'x_auth_failure'
490
+ | 'x_automation_refused'
491
+ | 'x_community_not_joined'
492
+ | 'x_community_not_selectable'
493
+ | 'x_community_post_public'
494
+ | 'x_community_post_removed'
373
495
  | 'x_content_too_long'
374
496
  | 'x_daily_limit'
375
497
  | 'x_dm_not_allowed'
498
+ | 'x_dm_not_deleted'
499
+ | 'x_dm_not_sent'
376
500
  | 'x_duplicate_action'
377
501
  | 'x_login_auth_failed'
378
502
  | 'x_login_challenge'
379
503
  | 'x_login_denied'
380
504
  | 'x_login_failed'
381
- | 'x_login_proxy_error'
382
505
  | 'x_login_rate_limited'
383
506
  | 'x_login_service_unavailable'
384
507
  | 'x_login_suspended'
508
+ | 'x_image_invalid'
509
+ | 'x_media_rejected'
510
+ | 'x_post_not_sent'
385
511
  | 'x_rate_limited'
386
512
  | 'x_rejected'
513
+ | 'x_reply_not_allowed'
514
+ | 'x_reply_target_unavailable'
387
515
  | 'x_target_not_found'
388
516
  | 'x_transient_error'
389
517
  | 'x_user_lookup_failed'
@@ -391,13 +519,28 @@ export interface Error {
391
519
  | 'x_write_failed'
392
520
  | Error.StructuredError;
393
521
 
522
+ /**
523
+ * With unknown_field: the valid names where the first unknown name in fields or
524
+ * omit stopped.
525
+ */
526
+ allowedFields?: Array<string>;
527
+
528
+ /**
529
+ * With unknown_field: each unknown name in fields or omit, with the name it most
530
+ * likely meant.
531
+ */
532
+ fieldErrors?: Array<Error.FieldError>;
533
+
394
534
  /**
395
535
  * Human-readable error guidance.
396
536
  */
397
537
  message?: string;
398
538
 
399
539
  /**
400
- * Machine-readable reason for a login cooldown.
540
+ * Machine-readable reason. A login failure names its cause, such as
541
+ * temporary_issue. A user_not_found answer names why X shows no profile: not_found
542
+ * or suspended. A tweet_not_found answer names why X shows no post, when X said:
543
+ * deleted, author_suspended or protected.
401
544
  */
402
545
  reason?: string;
403
546
 
@@ -423,10 +566,13 @@ export namespace Error {
423
566
  | 'account_restricted'
424
567
  | 'api_key_limit_reached'
425
568
  | 'article_not_found'
569
+ | 'closed'
426
570
  | 'dm_not_permitted'
427
571
  | 'invalid_format'
428
572
  | 'invalid_id'
429
573
  | 'invalid_input'
574
+ | 'invalid_media_url'
575
+ | 'invalid_message_id'
430
576
  | 'invalid_params'
431
577
  | 'invalid_tool_type'
432
578
  | 'invalid_tweet_id'
@@ -436,9 +582,11 @@ export namespace Error {
436
582
  | 'invalid_username'
437
583
  | 'invalid_json'
438
584
  | 'insufficient_credits'
585
+ | 'job_not_found'
439
586
  | 'login_cooldown'
440
587
  | 'login_failed'
441
588
  | 'media_download_failed'
589
+ | 'media_too_large'
442
590
  | 'missing_params'
443
591
  | 'missing_query'
444
592
  | 'monitor_already_exists'
@@ -457,43 +605,67 @@ export namespace Error {
457
605
  | 'unsupported_field'
458
606
  | 'user_not_found'
459
607
  | 'body_too_large'
608
+ | 'bookmark_folders_unavailable'
609
+ | 'broadcast_not_found'
460
610
  | 'checkout_unavailable'
461
611
  | 'connection_challenge_expired'
462
612
  | 'connection_challenge_inactive'
463
613
  | 'coverage_cursor_gone'
464
614
  | 'coverage_cursor_unavailable'
615
+ | 'cursor_account_unavailable'
465
616
  | 'draft_not_found'
617
+ | 'draw_too_large'
618
+ | 'expired'
466
619
  | 'favoriters_unavailable'
467
620
  | 'forbidden'
468
621
  | 'guest_wallet_unavailable'
469
622
  | 'guest_wallets_disabled'
470
623
  | 'guest_wallets_unavailable'
471
624
  | 'idempotency_conflict'
625
+ | 'idempotency_in_progress'
472
626
  | 'idempotency_key_conflict'
627
+ | 'invalid_broadcast_id'
473
628
  | 'invalid_community_id'
629
+ | 'invalid_community_topic'
474
630
  | 'invalid_complete_replies_request'
475
631
  | 'invalid_coverage_cursor'
476
632
  | 'invalid_coverage_request'
633
+ | 'invalid_cursor'
477
634
  | 'invalid_idempotency_key'
635
+ | 'invalid_job_filter'
636
+ | 'invalid_job_id'
478
637
  | 'invalid_list_id'
479
638
  | 'invalid_output_options'
480
639
  | 'invalid_payment_amount'
481
640
  | 'invalid_range'
482
641
  | 'invalid_reply_options'
642
+ | 'invalid_space_id'
643
+ | 'likes_unavailable'
644
+ | 'list_not_found'
483
645
  | 'login_rate_limited'
484
646
  | 'login_service_unavailable'
485
647
  | 'missing_idempotency_key'
486
648
  | 'missing_ids'
649
+ | 'missing_url'
487
650
  | 'no_cached_style'
651
+ | 'pagination_stalled'
488
652
  | 'passkey_required'
489
653
  | 'rate_limited'
490
654
  | 'read_request_timeout'
655
+ | 'replay_unavailable'
491
656
  | 'replies_incomplete'
657
+ | 'retweeters_incomplete'
658
+ | 'search_unavailable'
659
+ | 'space_canceled'
660
+ | 'space_not_ended'
492
661
  | 'support_media_rate_limit'
493
662
  | 'support_request_rate_limit'
663
+ | 'telegram_unavailable'
494
664
  | 'too_many_ids'
665
+ | 'too_many_streams'
495
666
  | 'too_many_tweets'
496
667
  | 'unknown_field'
668
+ | 'unsupported_media_combination'
497
669
  | 'unsupported_media_type'
498
670
  | 'webhook_inactive'
499
671
  | 'write_tracking_unavailable'
@@ -505,20 +677,31 @@ export namespace Error {
505
677
  | 'x_api_unavailable'
506
678
  | 'x_api_unauthorized'
507
679
  | 'x_auth_failure'
680
+ | 'x_automation_refused'
681
+ | 'x_community_not_joined'
682
+ | 'x_community_not_selectable'
683
+ | 'x_community_post_public'
684
+ | 'x_community_post_removed'
508
685
  | 'x_content_too_long'
509
686
  | 'x_daily_limit'
510
687
  | 'x_dm_not_allowed'
688
+ | 'x_dm_not_deleted'
689
+ | 'x_dm_not_sent'
511
690
  | 'x_duplicate_action'
512
691
  | 'x_login_auth_failed'
513
692
  | 'x_login_challenge'
514
693
  | 'x_login_denied'
515
694
  | 'x_login_failed'
516
- | 'x_login_proxy_error'
517
695
  | 'x_login_rate_limited'
518
696
  | 'x_login_service_unavailable'
519
697
  | 'x_login_suspended'
698
+ | 'x_image_invalid'
699
+ | 'x_media_rejected'
700
+ | 'x_post_not_sent'
520
701
  | 'x_rate_limited'
521
702
  | 'x_rejected'
703
+ | 'x_reply_not_allowed'
704
+ | 'x_reply_target_unavailable'
522
705
  | 'x_target_not_found'
523
706
  | 'x_transient_error'
524
707
  | 'x_user_lookup_failed'
@@ -536,10 +719,40 @@ export namespace Error {
536
719
  | 'permission_error'
537
720
  | 'rate_limit_error';
538
721
  }
722
+
723
+ export interface FieldError {
724
+ code: 'unknown_field';
725
+
726
+ /**
727
+ * The name as the request wrote it.
728
+ */
729
+ field: string;
730
+
731
+ /**
732
+ * What to send instead.
733
+ */
734
+ message: string;
735
+
736
+ /**
737
+ * The parameter that held the name.
738
+ */
739
+ path: 'query.fields' | 'query.omit';
740
+
741
+ /**
742
+ * The closest valid name, when 1 is close.
743
+ */
744
+ suggestion?: string;
745
+ }
539
746
  }
540
747
 
541
748
  /**
542
- * Type of monitor event fired when account activity occurs.
749
+ * Type of monitor event fired when account activity occurs. tweet.deleted fires
750
+ * once X confirms the account deleted a post the monitor saw. Its data is the post
751
+ * as last seen. broadcast.started & space.started fire when the account posts its
752
+ * running live video or Space. Their data is that post. A live the account does
753
+ * not post is not seen. following.added & following.removed fire when the account
754
+ * follows or unfollows someone, with that account's profile. Keyword monitors take
755
+ * the 10 post types only.
543
756
  */
544
757
  export type EventType =
545
758
  | 'tweet.new'
@@ -562,13 +775,19 @@ export type EventType =
562
775
  | 'profile.verified.changed'
563
776
  | 'profile.protected.changed'
564
777
  | 'profile.pinned_tweet.changed'
565
- | 'profile.unavailable.changed';
778
+ | 'profile.unavailable.changed'
779
+ | 'tweet.deleted'
780
+ | 'broadcast.started'
781
+ | 'space.started'
782
+ | 'following.added'
783
+ | 'following.removed';
566
784
 
567
785
  /**
568
- * No-mode search, user Tweet, user reply, and direct reply reads use automatic
569
- * coverage. Shape, filters, aliases, and billing stay compatible. Unprefixed
570
- * cursors remain legacy. Follow next_cursor while has_next_page is true. An empty
571
- * filtered page can still have has_next_page true.
786
+ * Follow next_cursor while the response reports more pages. A page can hold fewer
787
+ * rows than its limit & still report more. That report decides, not the row count.
788
+ * A page can be empty & still report more, filtered or not. Automatic search, user
789
+ * Tweet & reply coverage keeps shape, filters, aliases & billing. Unprefixed
790
+ * cursors are legacy.
572
791
  */
573
792
  export interface PaginatedTweets {
574
793
  has_next_page: boolean;
@@ -576,14 +795,74 @@ export interface PaginatedTweets {
576
795
  next_cursor: string;
577
796
 
578
797
  tweets: Array<SearchTweet>;
798
+
799
+ /**
800
+ * Whole number from 0.
801
+ */
802
+ filtered_count?: number;
803
+
804
+ /**
805
+ * How far back a filtered Latest search has read, in UTC. Every newer post was
806
+ * checked, so an empty page still moves this time back.
807
+ */
808
+ readBackTo?: string;
809
+
810
+ /**
811
+ * What X shows beside a search's posts that is the same for every reader. Present
812
+ * on a search for a cashtag X has a card for, such as $BTC.
813
+ */
814
+ searchContext?: PaginatedTweets.SearchContext;
815
+
816
+ /**
817
+ * Search q as X ran it, when Xquik fixed it.
818
+ */
819
+ searchedQuery?: string;
820
+
821
+ /**
822
+ * Present on a last page whose sources all read past its start time.
823
+ */
824
+ windowComplete?: true;
825
+ }
826
+
827
+ export namespace PaginatedTweets {
828
+ /**
829
+ * What X shows beside a search's posts that is the same for every reader. Present
830
+ * on a search for a cashtag X has a card for, such as $BTC.
831
+ */
832
+ export interface SearchContext {
833
+ /**
834
+ * X's card for the cashtag the search names.
835
+ */
836
+ smartTag: SearchContext.SmartTag;
837
+ }
838
+
839
+ export namespace SearchContext {
840
+ /**
841
+ * X's card for the cashtag the search names.
842
+ */
843
+ export interface SmartTag {
844
+ /**
845
+ * The ticker X matched.
846
+ */
847
+ id: string;
848
+
849
+ /**
850
+ * Whether X lists the ticker as active.
851
+ */
852
+ active?: boolean;
853
+
854
+ /**
855
+ * Whether X charts the ticker with open, high, low & close prices.
856
+ */
857
+ supportsOhlc?: boolean;
858
+ }
859
+ }
579
860
  }
580
861
 
581
862
  /**
582
- * Paginated user profiles. No-mode follower, following, and verified follower
583
- * requests merge independent views automatically. Response fields, page size,
584
- * aliases, filters, and per-returned-profile billing stay unchanged. Existing
585
- * unprefixed cursors retain legacy behavior. Follow next_cursor while
586
- * has_next_page is true.
863
+ * Profile coverage preserves shape, billing, aliases, and filters. Follow
864
+ * next_cursor while the response reports more pages. Unprefixed cursors remain
865
+ * legacy.
587
866
  */
588
867
  export interface PaginatedUsers {
589
868
  has_next_page: boolean;
@@ -591,11 +870,15 @@ export interface PaginatedUsers {
591
870
  next_cursor: string;
592
871
 
593
872
  users: Array<UserProfile>;
873
+
874
+ /**
875
+ * Whole number from 0.
876
+ */
877
+ filtered_count?: number;
594
878
  }
595
879
 
596
880
  /**
597
- * Tweet returned from search results with inline author info. A zero metric can
598
- * mean X did not report the count.
881
+ * Search tweet with author. Zero metrics may mean X omitted counts.
599
882
  */
600
883
  export interface SearchTweet {
601
884
  id: string;
@@ -615,20 +898,43 @@ export interface SearchTweet {
615
898
  viewCount: number;
616
899
 
617
900
  /**
618
- * Article metadata attached to a tweet.
901
+ * Describes an X Article preview and its lifecycle metadata.
619
902
  */
620
903
  article?: SearchTweet.Article;
621
904
 
622
905
  /**
623
- * X user profile with bio, follower counts, and verification status.
906
+ * Public X profile.
624
907
  */
625
908
  author?: UserProfile;
626
909
 
627
910
  /**
628
- * Public card metadata attached to a tweet.
911
+ * Why the tweet has no author. X serves a suspended or deleted account as an
912
+ * unavailable user with a reason such as Suspended or NotFound. Omitted when the
913
+ * author is available.
914
+ */
915
+ authorUnavailable?: SearchTweet.AuthorUnavailable;
916
+
917
+ /**
918
+ * Describes a public card and its referenced profiles.
629
919
  */
630
920
  card?: SearchTweet.Card;
631
921
 
922
+ /**
923
+ * Price charts the author attached under the post, 1 per cashtag. Absent when the
924
+ * post has none. X may send a cashtag without a chart window.
925
+ */
926
+ cashtagAttachments?: Array<SearchTweet.CashtagAttachment>;
927
+
928
+ /**
929
+ * Community ID.
930
+ */
931
+ communityId?: string;
932
+
933
+ /**
934
+ * Community name. Present when X sends it with the post.
935
+ */
936
+ communityName?: string;
937
+
632
938
  /**
633
939
  * Community Note presentation metadata returned by X.
634
940
  */
@@ -640,175 +946,755 @@ export interface SearchTweet {
640
946
  */
641
947
  contentDisclosure?: ContentDisclosure;
642
948
 
643
- /**
644
- * Root tweet ID for the search result conversation
645
- */
646
- conversationId?: string;
949
+ /**
950
+ * Reply policy & conversation owner.
951
+ */
952
+ conversationControl?: SearchTweet.ConversationControl;
953
+
954
+ conversationId?: string;
955
+
956
+ /**
957
+ * Author-published point, with longitude before latitude.
958
+ */
959
+ coordinates?: SearchTweet.Coordinates;
960
+
961
+ createdAt?: string;
962
+
963
+ displayTextRange?: Array<number>;
964
+
965
+ /**
966
+ * Lists edit-chain identifiers and the remaining edit window.
967
+ */
968
+ edit?: SearchTweet.Edit;
969
+
970
+ /**
971
+ * Lists hashtags, symbols, links, and mentions from tweet text.
972
+ */
973
+ entities?: SearchTweet.Entities;
974
+
975
+ /**
976
+ * Marks a subscriber-only post with the creator whose subscription unlocks it.
977
+ * Non-subscribers get the preview text & the subscribe link. Omitted on public
978
+ * posts.
979
+ */
980
+ exclusiveContent?: SearchTweet.ExclusiveContent;
981
+
982
+ /**
983
+ * Author-published point, with latitude before longitude.
984
+ */
985
+ geo?: SearchTweet.Geo;
986
+
987
+ /**
988
+ * Public metadata whose fields are defined by X.
989
+ */
990
+ grokShareAttachment?: { [key: string]: unknown };
991
+
992
+ /**
993
+ * Grok's translation of the post, as X shows it.
994
+ */
995
+ grokTranslatedPost?: { [key: string]: unknown };
996
+
997
+ /**
998
+ * Whether X holds Community Notes on the post, shown or not.
999
+ */
1000
+ hasCommunityNotes?: boolean;
1001
+
1002
+ inReplyToId?: string;
1003
+
1004
+ inReplyToUserId?: string;
1005
+
1006
+ inReplyToUsername?: string;
1007
+
1008
+ /**
1009
+ * The notice x.com covers the post with until the reader views it, such as X's
1010
+ * public interest notice on a post that broke its rules but stays up.
1011
+ */
1012
+ interstitial?: SearchTweet.Interstitial;
1013
+
1014
+ isLimitedReply?: boolean;
1015
+
1016
+ isNoteTweet?: boolean;
1017
+
1018
+ isPinned?: boolean;
1019
+
1020
+ isQuoteStatus?: boolean;
1021
+
1022
+ isReply?: boolean;
1023
+
1024
+ isRetweet?: boolean;
1025
+
1026
+ isTranslatable?: boolean;
1027
+
1028
+ /**
1029
+ * Public metadata whose fields are defined by X.
1030
+ */
1031
+ jetfuelAttachment?: { [key: string]: unknown };
1032
+
1033
+ lang?: string;
1034
+
1035
+ /**
1036
+ * Public restrictions & prompts.
1037
+ */
1038
+ limitedActions?: Array<SearchTweet.LimitedAction>;
1039
+
1040
+ /**
1041
+ * Media, omitted when unavailable.
1042
+ */
1043
+ media?: Array<TweetMedia>;
1044
+
1045
+ /**
1046
+ * Complete Note Tweet content and rich-text metadata.
1047
+ */
1048
+ noteTweet?: SearchTweet.NoteTweet;
1049
+
1050
+ /**
1051
+ * A parent, quoted or retweeted tweet. It has the TweetPublicData fields and an
1052
+ * author. Nesting stops after 4 levels.
1053
+ */
1054
+ parentTweet?: EmbeddedTweet;
1055
+
1056
+ /**
1057
+ * Describes public place metadata on a geotagged tweet.
1058
+ */
1059
+ place?: SearchTweet.Place;
1060
+
1061
+ possiblySensitive?: boolean;
1062
+
1063
+ /**
1064
+ * Public metadata whose fields are defined by X.
1065
+ */
1066
+ postCta?: { [key: string]: unknown };
1067
+
1068
+ /**
1069
+ * Engagement counts retained from a prior tweet edit.
1070
+ */
1071
+ previousCounts?: SearchTweet.PreviousCounts;
1072
+
1073
+ /**
1074
+ * A parent, quoted or retweeted tweet. It has the TweetPublicData fields and an
1075
+ * author. Nesting stops after 4 levels.
1076
+ */
1077
+ quoted_tweet?: EmbeddedTweet;
1078
+
1079
+ quotedTweetId?: string;
1080
+
1081
+ /**
1082
+ * The quoted post's link, kept when X withholds that post.
1083
+ */
1084
+ quotedTweetPermalink?: SearchTweet.QuotedTweetPermalink;
1085
+
1086
+ /**
1087
+ * Why X shows no quoted post. Omitted when X names no reason, as its legacy
1088
+ * answers never do.
1089
+ */
1090
+ quotedTweetUnavailable?: SearchTweet.QuotedTweetUnavailable;
1091
+
1092
+ /**
1093
+ * Public post & user this reaction references.
1094
+ */
1095
+ reactionContext?: SearchTweet.ReactionContext;
1096
+
1097
+ /**
1098
+ * A parent, quoted or retweeted tweet. It has the TweetPublicData fields and an
1099
+ * author. Nesting stops after 4 levels.
1100
+ */
1101
+ retweeted_tweet?: EmbeddedTweet;
1102
+
1103
+ /**
1104
+ * Repost event time in UTC. Null when unavailable; omitted for other posts.
1105
+ */
1106
+ retweetedAt?: string | null;
1107
+
1108
+ /**
1109
+ * Public metadata whose fields are defined by X.
1110
+ */
1111
+ scopes?: { [key: string]: unknown };
1112
+
1113
+ /**
1114
+ * The app the post was sent from, as X labels it. X sends it for some posts only.
1115
+ */
1116
+ source?: string;
1117
+
1118
+ /**
1119
+ * Game metadata attached to this post.
1120
+ */
1121
+ sportsContext?: SearchTweet.SportsContext;
1122
+
1123
+ /**
1124
+ * The Subscriber badge X shows on a reply. The reply's author subscribes to the
1125
+ * creator who started the conversation. Omitted on a post without the badge.
1126
+ */
1127
+ subscriberBadge?: SearchTweet.SubscriberBadge;
1128
+
1129
+ /**
1130
+ * Where `text` matches the search, on each row a search read. Offsets count code
1131
+ * points of `text`, as `displayTextRange` does. Empty when X marks nothing in the
1132
+ * post. X marks matches only in a post's first 280 characters.
1133
+ */
1134
+ textHighlights?: Array<SearchTweet.TextHighlight>;
1135
+
1136
+ /**
1137
+ * Public visibility notice attached to an available tweet.
1138
+ */
1139
+ tombstone?: SearchTweet.Tombstone;
1140
+
1141
+ type?: string;
1142
+
1143
+ /**
1144
+ * The author's ID when X withholds the author's profile.
1145
+ */
1146
+ unavailableAuthorId?: string;
1147
+
1148
+ /**
1149
+ * User IDs that left this conversation.
1150
+ */
1151
+ unmentionedUserIds?: Array<string>;
1152
+
1153
+ url?: string;
1154
+
1155
+ viewState?: string;
1156
+ }
1157
+
1158
+ export namespace SearchTweet {
1159
+ /**
1160
+ * Describes an X Article preview and its lifecycle metadata.
1161
+ */
1162
+ export interface Article {
1163
+ id?: string;
1164
+
1165
+ /**
1166
+ * Public metadata whose fields are defined by X.
1167
+ */
1168
+ coverMedia?: { [key: string]: unknown };
1169
+
1170
+ coverMediaUrl?: string;
1171
+
1172
+ /**
1173
+ * Public metadata whose fields are defined by X.
1174
+ */
1175
+ lifecycleState?: { [key: string]: unknown };
1176
+
1177
+ /**
1178
+ * Public metadata whose fields are defined by X.
1179
+ */
1180
+ metadata?: { [key: string]: unknown };
1181
+
1182
+ previewText?: string;
1183
+
1184
+ title?: string;
1185
+ }
1186
+
1187
+ /**
1188
+ * Why the tweet has no author. X serves a suspended or deleted account as an
1189
+ * unavailable user with a reason such as Suspended or NotFound. Omitted when the
1190
+ * author is available.
1191
+ */
1192
+ export interface AuthorUnavailable {
1193
+ /**
1194
+ * X's reason code.
1195
+ */
1196
+ reason: string;
1197
+
1198
+ /**
1199
+ * X's notice text for the reason.
1200
+ */
1201
+ message?: string;
1202
+ }
1203
+
1204
+ /**
1205
+ * Describes a public card and its referenced profiles.
1206
+ */
1207
+ export interface Card {
1208
+ id?: string;
1209
+
1210
+ /**
1211
+ * Public metadata whose fields are defined by X.
1212
+ */
1213
+ bindingValues?: { [key: string]: unknown };
1214
+
1215
+ name?: string;
1216
+
1217
+ /**
1218
+ * Public metadata whose fields are defined by X.
1219
+ */
1220
+ platform?: { [key: string]: unknown };
1221
+
1222
+ url?: string;
1223
+
1224
+ /**
1225
+ * Unresolved card user references.
1226
+ */
1227
+ userReferenceErrors?: Array<Card.UserReferenceError>;
1228
+
1229
+ userReferences?: Array<Shared.UserProfile>;
1230
+ }
1231
+
1232
+ export namespace Card {
1233
+ export interface UserReferenceError {
1234
+ message?: string;
1235
+
1236
+ reason?: string;
1237
+ }
1238
+ }
1239
+
1240
+ export interface CashtagAttachment {
1241
+ /**
1242
+ * The cashtag with its `$`.
1243
+ */
1244
+ cashtag: string;
1245
+
1246
+ /**
1247
+ * Span of each candle.
1248
+ */
1249
+ candleSize?: string;
1250
+
1251
+ /**
1252
+ * Time of the chart's last price.
1253
+ */
1254
+ endTime?: string;
1255
+
1256
+ /**
1257
+ * X's size for the chart.
1258
+ */
1259
+ sizeVariant?: number;
1260
+
1261
+ /**
1262
+ * Time of the chart's first candle.
1263
+ */
1264
+ startTime?: string;
1265
+
1266
+ /**
1267
+ * Span the chart covers.
1268
+ */
1269
+ timeframe?: string;
1270
+ }
1271
+
1272
+ /**
1273
+ * Community Note presentation metadata returned by X.
1274
+ */
1275
+ export interface CommunityNote {
1276
+ id?: string;
1277
+
1278
+ destinationUrl?: string;
1279
+
1280
+ footer?: string;
1281
+
1282
+ footerIconType?: string;
1283
+
1284
+ iconType?: string;
1285
+
1286
+ /**
1287
+ * Public metadata whose fields are defined by X.
1288
+ */
1289
+ metadata?: { [key: string]: unknown };
1290
+
1291
+ shortTitle?: string;
1292
+
1293
+ subtitle?: string;
1294
+
1295
+ title?: string;
1296
+
1297
+ visualStyle?: string;
1298
+ }
1299
+
1300
+ /**
1301
+ * Reply policy & conversation owner.
1302
+ */
1303
+ export interface ConversationControl {
1304
+ /**
1305
+ * Regions whose accounts may reply, as country codes. Sent with the
1306
+ * `country_of_origin` mode.
1307
+ */
1308
+ allowedCountryCodes?: Array<string>;
1309
+
1310
+ inviteViaMention?: boolean;
1311
+
1312
+ /**
1313
+ * Reply policy from X's newer field, such as `my_network`, `premium` or
1314
+ * `country_of_origin`. Omitted when X sends none.
1315
+ */
1316
+ mode?: string;
1317
+
1318
+ /**
1319
+ * The conversation owner's account ID.
1320
+ */
1321
+ ownerId?: string;
1322
+
1323
+ ownerUsername?: string;
1324
+
1325
+ policy?: string;
1326
+ }
1327
+
1328
+ /**
1329
+ * Author-published point, with longitude before latitude.
1330
+ */
1331
+ export interface Coordinates {
1332
+ coordinates: Array<number>;
1333
+
1334
+ type: 'Point';
1335
+ }
1336
+
1337
+ /**
1338
+ * Lists edit-chain identifiers and the remaining edit window.
1339
+ */
1340
+ export interface Edit {
1341
+ editableUntilMsecs?: string;
1342
+
1343
+ editTweetIds?: Array<string>;
1344
+
1345
+ initialTweetId?: string;
1346
+ }
1347
+
1348
+ /**
1349
+ * Lists hashtags, symbols, links, and mentions from tweet text.
1350
+ */
1351
+ export interface Entities {
1352
+ hashtags?: Array<Entities.Hashtag>;
1353
+
1354
+ smarttags?: Array<Entities.Smarttag>;
1355
+
1356
+ symbols?: Array<Entities.Symbol>;
1357
+
1358
+ timestamps?: Array<Entities.Timestamp>;
1359
+
1360
+ urls?: Array<Entities.URL>;
1361
+
1362
+ user_mentions?: Array<Entities.UserMention>;
1363
+ }
1364
+
1365
+ export namespace Entities {
1366
+ /**
1367
+ * Provides hashtag text and source offsets within a tweet.
1368
+ */
1369
+ export interface Hashtag {
1370
+ text: string;
1371
+
1372
+ indices?: Array<number>;
1373
+
1374
+ /**
1375
+ * X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
1376
+ * platforms, which differ by reader.
1377
+ */
1378
+ tag?: Hashtag.Tag;
1379
+ }
647
1380
 
648
- createdAt?: string;
1381
+ export namespace Hashtag {
1382
+ /**
1383
+ * X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
1384
+ * platforms, which differ by reader.
1385
+ */
1386
+ export interface Tag {
1387
+ /**
1388
+ * X's ID for the SmartTag.
1389
+ */
1390
+ id?: string;
1391
+
1392
+ info?: Tag.Info;
1393
+ }
1394
+
1395
+ export namespace Tag {
1396
+ export interface Info {
1397
+ info?: Info.Info;
1398
+ }
1399
+
1400
+ export namespace Info {
1401
+ export interface Info {
1402
+ /**
1403
+ * Whether X marks the SmartTag active.
1404
+ */
1405
+ active?: boolean;
1406
+
1407
+ name?: string;
1408
+
1409
+ ticker?: string;
1410
+ }
1411
+ }
1412
+ }
1413
+ }
649
1414
 
650
- /**
651
- * Rendered text's start and end offsets.
652
- */
653
- displayTextRange?: Array<number>;
1415
+ /**
1416
+ * Indexed smart-tag, cashtag, or video timestamp metadata.
1417
+ */
1418
+ export interface Smarttag {
1419
+ indices?: Array<number>;
654
1420
 
655
- /**
656
- * Edit history metadata returned by X.
657
- */
658
- edit?: SearchTweet.Edit;
1421
+ seconds?: number;
659
1422
 
660
- /**
661
- * Parsed search-result entities including URLs, mentions, hashtags, and media
662
- * markers
663
- */
664
- entities?: { [key: string]: unknown };
1423
+ /**
1424
+ * X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
1425
+ * platforms, which differ by reader.
1426
+ */
1427
+ tag?: Smarttag.Tag;
665
1428
 
666
- /**
667
- * ID of the tweet this result replies to.
668
- */
669
- inReplyToId?: string;
1429
+ text?: string;
1430
+ }
670
1431
 
671
- /**
672
- * ID of the user this result replies to.
673
- */
674
- inReplyToUserId?: string;
1432
+ export namespace Smarttag {
1433
+ /**
1434
+ * X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
1435
+ * platforms, which differ by reader.
1436
+ */
1437
+ export interface Tag {
1438
+ /**
1439
+ * X's ID for the SmartTag.
1440
+ */
1441
+ id?: string;
1442
+
1443
+ info?: Tag.Info;
1444
+ }
1445
+
1446
+ export namespace Tag {
1447
+ export interface Info {
1448
+ info?: Info.Info;
1449
+ }
1450
+
1451
+ export namespace Info {
1452
+ export interface Info {
1453
+ /**
1454
+ * Whether X marks the SmartTag active.
1455
+ */
1456
+ active?: boolean;
1457
+
1458
+ name?: string;
1459
+
1460
+ ticker?: string;
1461
+ }
1462
+ }
1463
+ }
1464
+ }
675
1465
 
676
- /**
677
- * Username this result replies to.
678
- */
679
- inReplyToUsername?: string;
1466
+ /**
1467
+ * Indexed smart-tag, cashtag, or video timestamp metadata.
1468
+ */
1469
+ export interface Symbol {
1470
+ indices?: Array<number>;
680
1471
 
681
- /**
682
- * Whether the tweet has limited reply permissions
683
- */
684
- isLimitedReply?: boolean;
1472
+ seconds?: number;
685
1473
 
686
- /**
687
- * True for Note Tweets (long-form content, up to 25,000 characters)
688
- */
689
- isNoteTweet?: boolean;
1474
+ /**
1475
+ * X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
1476
+ * platforms, which differ by reader.
1477
+ */
1478
+ tag?: Symbol.Tag;
690
1479
 
691
- /**
692
- * True when this search result quotes another tweet
693
- */
694
- isQuoteStatus?: boolean;
1480
+ text?: string;
1481
+ }
695
1482
 
696
- /**
697
- * True when this search result is a reply
698
- */
699
- isReply?: boolean;
1483
+ export namespace Symbol {
1484
+ /**
1485
+ * X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
1486
+ * platforms, which differ by reader.
1487
+ */
1488
+ export interface Tag {
1489
+ /**
1490
+ * X's ID for the SmartTag.
1491
+ */
1492
+ id?: string;
1493
+
1494
+ info?: Tag.Info;
1495
+ }
1496
+
1497
+ export namespace Tag {
1498
+ export interface Info {
1499
+ info?: Info.Info;
1500
+ }
1501
+
1502
+ export namespace Info {
1503
+ export interface Info {
1504
+ /**
1505
+ * Whether X marks the SmartTag active.
1506
+ */
1507
+ active?: boolean;
1508
+
1509
+ name?: string;
1510
+
1511
+ ticker?: string;
1512
+ }
1513
+ }
1514
+ }
1515
+ }
700
1516
 
701
- isTranslatable?: boolean;
1517
+ /**
1518
+ * Indexed smart-tag, cashtag, or video timestamp metadata.
1519
+ */
1520
+ export interface Timestamp {
1521
+ indices?: Array<number>;
702
1522
 
703
- /**
704
- * Search result language code.
705
- */
706
- lang?: string;
1523
+ seconds?: number;
707
1524
 
708
- /**
709
- * Search-result media attachments, omitted when no media is present
710
- */
711
- media?: Array<TweetMedia>;
1525
+ /**
1526
+ * X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
1527
+ * platforms, which differ by reader.
1528
+ */
1529
+ tag?: Timestamp.Tag;
712
1530
 
713
- /**
714
- * Complete Note Tweet content and rich-text metadata.
715
- */
716
- noteTweet?: SearchTweet.NoteTweet;
1531
+ text?: string;
1532
+ }
717
1533
 
718
- /**
719
- * Public place metadata attached to a tweet.
720
- */
721
- place?: SearchTweet.Place;
1534
+ export namespace Timestamp {
1535
+ /**
1536
+ * X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
1537
+ * platforms, which differ by reader.
1538
+ */
1539
+ export interface Tag {
1540
+ /**
1541
+ * X's ID for the SmartTag.
1542
+ */
1543
+ id?: string;
1544
+
1545
+ info?: Tag.Info;
1546
+ }
1547
+
1548
+ export namespace Tag {
1549
+ export interface Info {
1550
+ info?: Info.Info;
1551
+ }
1552
+
1553
+ export namespace Info {
1554
+ export interface Info {
1555
+ /**
1556
+ * Whether X marks the SmartTag active.
1557
+ */
1558
+ active?: boolean;
1559
+
1560
+ name?: string;
1561
+
1562
+ ticker?: string;
1563
+ }
1564
+ }
1565
+ }
1566
+ }
722
1567
 
723
- possiblySensitive?: boolean;
1568
+ /**
1569
+ * Provides shortened, display, and expanded URLs from tweet text.
1570
+ */
1571
+ export interface URL {
1572
+ display_url?: string;
724
1573
 
725
- /**
726
- * Engagement counts retained from a prior tweet edit.
727
- */
728
- previousCounts?: SearchTweet.PreviousCounts;
1574
+ expanded_url?: string;
729
1575
 
730
- /**
731
- * Quoted or retweeted tweet context. Every object includes id, text, and
732
- * engagement metrics. A zero metric can mean X did not report the count. Author,
733
- * media, and conversation fields appear when available.
734
- */
735
- quoted_tweet?: EmbeddedTweet;
1576
+ indices?: Array<number>;
736
1577
 
737
- /**
738
- * Quoted or retweeted tweet context. Every object includes id, text, and
739
- * engagement metrics. A zero metric can mean X did not report the count. Author,
740
- * media, and conversation fields appear when available.
741
- */
742
- retweeted_tweet?: EmbeddedTweet;
1578
+ url?: string;
1579
+ }
743
1580
 
744
- /**
745
- * Client application used to post the tweet
746
- */
747
- source?: string;
1581
+ /**
1582
+ * Provides profile identity and source offsets for a mention.
1583
+ */
1584
+ export interface UserMention {
1585
+ screen_name: string;
748
1586
 
749
- type?: string;
1587
+ id_str?: string;
750
1588
 
751
- /**
752
- * Search result permalink.
753
- */
754
- url?: string;
1589
+ indices?: Array<number>;
755
1590
 
756
- viewState?: string;
757
- }
1591
+ name?: string;
1592
+ }
1593
+ }
758
1594
 
759
- export namespace SearchTweet {
760
1595
  /**
761
- * Article metadata attached to a tweet.
1596
+ * Marks a subscriber-only post with the creator whose subscription unlocks it.
1597
+ * Non-subscribers get the preview text & the subscribe link. Omitted on public
1598
+ * posts.
762
1599
  */
763
- export interface Article {
764
- id?: string;
1600
+ export interface ExclusiveContent {
1601
+ /**
1602
+ * Username of the creator whose subscription unlocks the post.
1603
+ */
1604
+ creatorUserName: string;
765
1605
 
766
- coverMediaUrl?: string;
1606
+ /**
1607
+ * Subscribe link X shows non-subscribers. Omitted when X serves the full post.
1608
+ */
1609
+ subscribeUrl?: string;
1610
+ }
767
1611
 
768
- previewText?: string;
1612
+ /**
1613
+ * Author-published point, with latitude before longitude.
1614
+ */
1615
+ export interface Geo {
1616
+ coordinates: Array<number>;
769
1617
 
770
- title?: string;
1618
+ type: 'Point';
771
1619
  }
772
1620
 
773
1621
  /**
774
- * Public card metadata attached to a tweet.
1622
+ * The notice x.com covers the post with until the reader views it, such as X's
1623
+ * public interest notice on a post that broke its rules but stays up.
775
1624
  */
776
- export interface Card {
777
- id?: string;
1625
+ export interface Interstitial {
1626
+ /**
1627
+ * How x.com shows the notice. `NonCompliant` marks a post that broke X's rules.
1628
+ */
1629
+ displayType?: string;
778
1630
 
779
- bindingValues?: { [key: string]: unknown };
1631
+ text?: Interstitial.Text;
1632
+ }
780
1633
 
781
- name?: string;
1634
+ export namespace Interstitial {
1635
+ export interface Text {
1636
+ /**
1637
+ * Links inside the notice, by character range.
1638
+ */
1639
+ entities?: Array<Text.Entity>;
1640
+
1641
+ /**
1642
+ * Whether X writes it right to left.
1643
+ */
1644
+ rtl?: boolean;
1645
+
1646
+ /**
1647
+ * The notice's text.
1648
+ */
1649
+ text?: string;
1650
+ }
782
1651
 
783
- url?: string;
784
- }
1652
+ export namespace Text {
1653
+ export interface Entity {
1654
+ /**
1655
+ * Whole number from 0.
1656
+ */
1657
+ fromIndex?: number;
785
1658
 
786
- /**
787
- * Community Note presentation metadata returned by X.
788
- */
789
- export interface CommunityNote {
790
- id?: string;
1659
+ ref?: Entity.Ref;
791
1660
 
792
- destinationUrl?: string;
1661
+ /**
1662
+ * Whole number from 0.
1663
+ */
1664
+ toIndex?: number;
1665
+ }
793
1666
 
794
- footer?: string;
1667
+ export namespace Entity {
1668
+ export interface Ref {
1669
+ type?: string;
795
1670
 
796
- shortTitle?: string;
1671
+ url?: string;
797
1672
 
798
- subtitle?: string;
1673
+ urlType?: string;
1674
+ }
1675
+ }
1676
+ }
1677
+ }
799
1678
 
800
- title?: string;
1679
+ export interface LimitedAction {
1680
+ action?: string;
801
1681
 
802
- visualStyle?: string;
1682
+ prompt?: LimitedAction.Prompt;
803
1683
  }
804
1684
 
805
- /**
806
- * Edit history metadata returned by X.
807
- */
808
- export interface Edit {
809
- editableUntilMsecs?: string;
1685
+ export namespace LimitedAction {
1686
+ export interface Prompt {
1687
+ ctaType?: string;
810
1688
 
811
- editTweetIds?: Array<string>;
1689
+ headline?: string;
1690
+
1691
+ /**
1692
+ * Public metadata whose fields are defined by X.
1693
+ */
1694
+ metadata?: { [key: string]: unknown };
1695
+
1696
+ subtext?: string;
1697
+ }
812
1698
  }
813
1699
 
814
1700
  /**
@@ -817,19 +1703,297 @@ export namespace SearchTweet {
817
1703
  export interface NoteTweet {
818
1704
  text: string;
819
1705
 
1706
+ /**
1707
+ * X's global ID of the Note, base64 of `NoteTweet:<noteId>`.
1708
+ */
820
1709
  id?: string;
821
1710
 
822
- entities?: { [key: string]: unknown };
1711
+ /**
1712
+ * Lists hashtags, symbols, links, and mentions from tweet text.
1713
+ */
1714
+ entities?: NoteTweet.Entities;
1715
+
1716
+ /**
1717
+ * Inline media positions in the Note Tweet text.
1718
+ */
1719
+ inlineMedia?: Array<NoteTweet.InlineMedia>;
823
1720
 
824
1721
  isExpandable?: boolean;
825
1722
 
1723
+ /**
1724
+ * The Note's own ID, apart from the post's.
1725
+ */
1726
+ noteId?: string;
1727
+
826
1728
  richtextTags?: Array<NoteTweet.RichtextTag>;
827
1729
  }
828
1730
 
829
1731
  export namespace NoteTweet {
1732
+ /**
1733
+ * Lists hashtags, symbols, links, and mentions from tweet text.
1734
+ */
1735
+ export interface Entities {
1736
+ hashtags?: Array<Entities.Hashtag>;
1737
+
1738
+ smarttags?: Array<Entities.Smarttag>;
1739
+
1740
+ symbols?: Array<Entities.Symbol>;
1741
+
1742
+ timestamps?: Array<Entities.Timestamp>;
1743
+
1744
+ urls?: Array<Entities.URL>;
1745
+
1746
+ user_mentions?: Array<Entities.UserMention>;
1747
+ }
1748
+
1749
+ export namespace Entities {
1750
+ /**
1751
+ * Provides hashtag text and source offsets within a tweet.
1752
+ */
1753
+ export interface Hashtag {
1754
+ text: string;
1755
+
1756
+ indices?: Array<number>;
1757
+
1758
+ /**
1759
+ * X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
1760
+ * platforms, which differ by reader.
1761
+ */
1762
+ tag?: Hashtag.Tag;
1763
+ }
1764
+
1765
+ export namespace Hashtag {
1766
+ /**
1767
+ * X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
1768
+ * platforms, which differ by reader.
1769
+ */
1770
+ export interface Tag {
1771
+ /**
1772
+ * X's ID for the SmartTag.
1773
+ */
1774
+ id?: string;
1775
+
1776
+ info?: Tag.Info;
1777
+ }
1778
+
1779
+ export namespace Tag {
1780
+ export interface Info {
1781
+ info?: Info.Info;
1782
+ }
1783
+
1784
+ export namespace Info {
1785
+ export interface Info {
1786
+ /**
1787
+ * Whether X marks the SmartTag active.
1788
+ */
1789
+ active?: boolean;
1790
+
1791
+ name?: string;
1792
+
1793
+ ticker?: string;
1794
+ }
1795
+ }
1796
+ }
1797
+ }
1798
+
1799
+ /**
1800
+ * Indexed smart-tag, cashtag, or video timestamp metadata.
1801
+ */
1802
+ export interface Smarttag {
1803
+ indices?: Array<number>;
1804
+
1805
+ seconds?: number;
1806
+
1807
+ /**
1808
+ * X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
1809
+ * platforms, which differ by reader.
1810
+ */
1811
+ tag?: Smarttag.Tag;
1812
+
1813
+ text?: string;
1814
+ }
1815
+
1816
+ export namespace Smarttag {
1817
+ /**
1818
+ * X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
1819
+ * platforms, which differ by reader.
1820
+ */
1821
+ export interface Tag {
1822
+ /**
1823
+ * X's ID for the SmartTag.
1824
+ */
1825
+ id?: string;
1826
+
1827
+ info?: Tag.Info;
1828
+ }
1829
+
1830
+ export namespace Tag {
1831
+ export interface Info {
1832
+ info?: Info.Info;
1833
+ }
1834
+
1835
+ export namespace Info {
1836
+ export interface Info {
1837
+ /**
1838
+ * Whether X marks the SmartTag active.
1839
+ */
1840
+ active?: boolean;
1841
+
1842
+ name?: string;
1843
+
1844
+ ticker?: string;
1845
+ }
1846
+ }
1847
+ }
1848
+ }
1849
+
1850
+ /**
1851
+ * Indexed smart-tag, cashtag, or video timestamp metadata.
1852
+ */
1853
+ export interface Symbol {
1854
+ indices?: Array<number>;
1855
+
1856
+ seconds?: number;
1857
+
1858
+ /**
1859
+ * X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
1860
+ * platforms, which differ by reader.
1861
+ */
1862
+ tag?: Symbol.Tag;
1863
+
1864
+ text?: string;
1865
+ }
1866
+
1867
+ export namespace Symbol {
1868
+ /**
1869
+ * X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
1870
+ * platforms, which differ by reader.
1871
+ */
1872
+ export interface Tag {
1873
+ /**
1874
+ * X's ID for the SmartTag.
1875
+ */
1876
+ id?: string;
1877
+
1878
+ info?: Tag.Info;
1879
+ }
1880
+
1881
+ export namespace Tag {
1882
+ export interface Info {
1883
+ info?: Info.Info;
1884
+ }
1885
+
1886
+ export namespace Info {
1887
+ export interface Info {
1888
+ /**
1889
+ * Whether X marks the SmartTag active.
1890
+ */
1891
+ active?: boolean;
1892
+
1893
+ name?: string;
1894
+
1895
+ ticker?: string;
1896
+ }
1897
+ }
1898
+ }
1899
+ }
1900
+
1901
+ /**
1902
+ * Indexed smart-tag, cashtag, or video timestamp metadata.
1903
+ */
1904
+ export interface Timestamp {
1905
+ indices?: Array<number>;
1906
+
1907
+ seconds?: number;
1908
+
1909
+ /**
1910
+ * X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
1911
+ * platforms, which differ by reader.
1912
+ */
1913
+ tag?: Timestamp.Tag;
1914
+
1915
+ text?: string;
1916
+ }
1917
+
1918
+ export namespace Timestamp {
1919
+ /**
1920
+ * X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
1921
+ * platforms, which differ by reader.
1922
+ */
1923
+ export interface Tag {
1924
+ /**
1925
+ * X's ID for the SmartTag.
1926
+ */
1927
+ id?: string;
1928
+
1929
+ info?: Tag.Info;
1930
+ }
1931
+
1932
+ export namespace Tag {
1933
+ export interface Info {
1934
+ info?: Info.Info;
1935
+ }
1936
+
1937
+ export namespace Info {
1938
+ export interface Info {
1939
+ /**
1940
+ * Whether X marks the SmartTag active.
1941
+ */
1942
+ active?: boolean;
1943
+
1944
+ name?: string;
1945
+
1946
+ ticker?: string;
1947
+ }
1948
+ }
1949
+ }
1950
+ }
1951
+
1952
+ /**
1953
+ * Provides shortened, display, and expanded URLs from tweet text.
1954
+ */
1955
+ export interface URL {
1956
+ display_url?: string;
1957
+
1958
+ expanded_url?: string;
1959
+
1960
+ indices?: Array<number>;
1961
+
1962
+ url?: string;
1963
+ }
1964
+
1965
+ /**
1966
+ * Provides profile identity and source offsets for a mention.
1967
+ */
1968
+ export interface UserMention {
1969
+ screen_name: string;
1970
+
1971
+ id_str?: string;
1972
+
1973
+ indices?: Array<number>;
1974
+
1975
+ name?: string;
1976
+ }
1977
+ }
1978
+
1979
+ export interface InlineMedia {
1980
+ /**
1981
+ * Whole number from 0.
1982
+ */
1983
+ index: number;
1984
+
1985
+ mediaId: string;
1986
+ }
1987
+
830
1988
  export interface RichtextTag {
1989
+ /**
1990
+ * Whole number from 0.
1991
+ */
831
1992
  fromIndex: number;
832
1993
 
1994
+ /**
1995
+ * Whole number from 0.
1996
+ */
833
1997
  toIndex: number;
834
1998
 
835
1999
  types: Array<string>;
@@ -837,11 +2001,14 @@ export namespace SearchTweet {
837
2001
  }
838
2002
 
839
2003
  /**
840
- * Public place metadata attached to a tweet.
2004
+ * Describes public place metadata on a geotagged tweet.
841
2005
  */
842
2006
  export interface Place {
843
2007
  id?: string;
844
2008
 
2009
+ /**
2010
+ * Public metadata whose fields are defined by X.
2011
+ */
845
2012
  boundingBox?: { [key: string]: unknown };
846
2013
 
847
2014
  country?: string;
@@ -861,61 +2028,301 @@ export namespace SearchTweet {
861
2028
  * Engagement counts retained from a prior tweet edit.
862
2029
  */
863
2030
  export interface PreviousCounts {
2031
+ /**
2032
+ * Whole number from 0.
2033
+ */
864
2034
  bookmarkCount?: number;
865
2035
 
866
- likeCount?: number;
2036
+ /**
2037
+ * Whole number from 0.
2038
+ */
2039
+ likeCount?: number;
2040
+
2041
+ /**
2042
+ * Whole number from 0.
2043
+ */
2044
+ quoteCount?: number;
2045
+
2046
+ /**
2047
+ * Whole number from 0.
2048
+ */
2049
+ replyCount?: number;
2050
+
2051
+ /**
2052
+ * Whole number from 0.
2053
+ */
2054
+ retweetCount?: number;
2055
+ }
2056
+
2057
+ /**
2058
+ * The quoted post's link, kept when X withholds that post.
2059
+ */
2060
+ export interface QuotedTweetPermalink {
2061
+ displayUrl?: string;
2062
+
2063
+ expandedUrl?: string;
2064
+
2065
+ url?: string;
2066
+ }
2067
+
2068
+ /**
2069
+ * Why X shows no quoted post. Omitted when X names no reason, as its legacy
2070
+ * answers never do.
2071
+ */
2072
+ export interface QuotedTweetUnavailable {
2073
+ /**
2074
+ * X's reason, such as `Suspended` for a suspended author or `Protected` for an
2075
+ * author who protects their posts.
2076
+ */
2077
+ reason: string;
2078
+ }
2079
+
2080
+ /**
2081
+ * Public post & user this reaction references.
2082
+ */
2083
+ export interface ReactionContext {
2084
+ /**
2085
+ * Referenced post ID.
2086
+ */
2087
+ reactedToPostId?: string;
2088
+
2089
+ /**
2090
+ * Public X profile.
2091
+ */
2092
+ reactedToUser?: Shared.UserProfile;
2093
+ }
2094
+
2095
+ /**
2096
+ * Game metadata attached to this post.
2097
+ */
2098
+ export interface SportsContext {
2099
+ /**
2100
+ * Teams & reported scores.
2101
+ */
2102
+ competitors?: Array<SportsContext.Competitor>;
2103
+
2104
+ /**
2105
+ * Game ID.
2106
+ */
2107
+ gameId?: string;
2108
+
2109
+ /**
2110
+ * League ID.
2111
+ */
2112
+ league?: string;
2113
+
2114
+ /**
2115
+ * Scheduled Unix milliseconds, retaining the source type.
2116
+ */
2117
+ scheduledAtMs?: number | string;
2118
+
2119
+ /**
2120
+ * Reported game state.
2121
+ */
2122
+ state?: string;
2123
+
2124
+ /**
2125
+ * Game progress text.
2126
+ */
2127
+ statusText?: string;
2128
+
2129
+ /**
2130
+ * Game title.
2131
+ */
2132
+ title?: string;
2133
+
2134
+ /**
2135
+ * Game link.
2136
+ */
2137
+ url?: string;
2138
+ }
2139
+
2140
+ export namespace SportsContext {
2141
+ export interface Competitor {
2142
+ /**
2143
+ * Team abbreviation.
2144
+ */
2145
+ abbreviation?: string;
2146
+
2147
+ /**
2148
+ * Team display color.
2149
+ */
2150
+ color?: string;
2151
+
2152
+ /**
2153
+ * Logo for dark backgrounds.
2154
+ */
2155
+ darkLogoUrl?: string;
2156
+
2157
+ /**
2158
+ * Active competitor.
2159
+ */
2160
+ isActive?: boolean;
2161
+
2162
+ /**
2163
+ * Winning competitor.
2164
+ */
2165
+ isWinner?: boolean;
2166
+
2167
+ /**
2168
+ * Logo for light backgrounds.
2169
+ */
2170
+ logoUrl?: string;
2171
+
2172
+ /**
2173
+ * Team name.
2174
+ */
2175
+ name?: string;
2176
+
2177
+ /**
2178
+ * Score display text.
2179
+ */
2180
+ score?: string;
2181
+
2182
+ /**
2183
+ * Team ID.
2184
+ */
2185
+ teamId?: string;
2186
+ }
2187
+ }
2188
+
2189
+ /**
2190
+ * The Subscriber badge X shows on a reply. The reply's author subscribes to the
2191
+ * creator who started the conversation. Omitted on a post without the badge.
2192
+ */
2193
+ export interface SubscriberBadge {
2194
+ /**
2195
+ * Account ID of the creator the author subscribes to.
2196
+ */
2197
+ creatorId: string;
2198
+ }
2199
+
2200
+ export interface TextHighlight {
2201
+ /**
2202
+ * The first code point after the match.
2203
+ */
2204
+ endIndex: number;
2205
+
2206
+ /**
2207
+ * The first code point of the match.
2208
+ */
2209
+ startIndex: number;
2210
+ }
2211
+
2212
+ /**
2213
+ * Public visibility notice attached to an available tweet.
2214
+ */
2215
+ export interface Tombstone {
2216
+ text?: Tombstone.Text;
2217
+
2218
+ /**
2219
+ * Visibility notice type.
2220
+ */
2221
+ type?: string;
2222
+ }
2223
+
2224
+ export namespace Tombstone {
2225
+ export interface Text {
2226
+ entities?: Array<Text.Entity>;
2227
+
2228
+ /**
2229
+ * Right-to-left text direction.
2230
+ */
2231
+ rtl?: boolean;
2232
+
2233
+ /**
2234
+ * Human-readable notice text.
2235
+ */
2236
+ text?: string;
2237
+ }
2238
+
2239
+ export namespace Text {
2240
+ export interface Entity {
2241
+ /**
2242
+ * Whole number from 0.
2243
+ */
2244
+ fromIndex?: number;
2245
+
2246
+ ref?: Entity.Ref;
867
2247
 
868
- quoteCount?: number;
2248
+ /**
2249
+ * Whole number from 0.
2250
+ */
2251
+ toIndex?: number;
2252
+ }
869
2253
 
870
- replyCount?: number;
2254
+ export namespace Entity {
2255
+ export interface Ref {
2256
+ type?: string;
871
2257
 
872
- retweetCount?: number;
2258
+ url?: string;
2259
+
2260
+ urlType?: string;
2261
+ }
2262
+ }
2263
+ }
873
2264
  }
874
2265
  }
875
2266
 
876
2267
  /**
877
- * Normalized media attached to a tweet.
2268
+ * Tweet media.
878
2269
  */
879
2270
  export interface TweetMedia {
880
2271
  /**
881
- * Media preview URL
2272
+ * Preview URL.
882
2273
  */
883
2274
  mediaUrl: string;
884
2275
 
885
2276
  type: 'photo' | 'video' | 'animated_gif';
886
2277
 
887
2278
  /**
888
- * X media link from the tweet
2279
+ * Tweet media link.
889
2280
  */
890
2281
  url: string;
891
2282
 
892
2283
  /**
893
- * X media entity ID.
2284
+ * Media entity ID.
894
2285
  */
895
2286
  id?: string;
896
2287
 
897
2288
  /**
898
- * Whether X permits direct media download.
2289
+ * Adult-content warning.
2290
+ */
2291
+ adultContent?: boolean;
2292
+
2293
+ /**
2294
+ * Direct download permission.
899
2295
  */
900
2296
  allowDownload?: boolean;
901
2297
 
902
2298
  /**
903
- * Accessibility text supplied for the media.
2299
+ * Accessibility text.
904
2300
  */
905
2301
  altText?: string;
906
2302
 
907
2303
  /**
908
- * Video aspect ratio as width and height.
2304
+ * Video width and height ratio.
909
2305
  */
910
2306
  aspectRatio?: Array<number>;
911
2307
 
912
2308
  /**
913
- * Media availability state reported by X.
2309
+ * Why X made the media unavailable, such as `Dmcaed` after a copyright report.
2310
+ * Omitted on available media.
2311
+ */
2312
+ availabilityReason?: string;
2313
+
2314
+ /**
2315
+ * Availability state, such as `Available` or `Unavailable`.
914
2316
  */
915
2317
  availabilityStatus?: string;
916
2318
 
917
2319
  /**
918
- * Display-friendly media URL reported by X.
2320
+ * Media description.
2321
+ */
2322
+ description?: string;
2323
+
2324
+ /**
2325
+ * Display URL.
919
2326
  */
920
2327
  displayUrl?: string;
921
2328
 
@@ -925,27 +2332,47 @@ export interface TweetMedia {
925
2332
  durationMillis?: number;
926
2333
 
927
2334
  /**
928
- * Expanded X media URL.
2335
+ * Embeddable status.
2336
+ */
2337
+ embeddable?: boolean;
2338
+
2339
+ /**
2340
+ * Expanded media URL.
929
2341
  */
930
2342
  expandedUrl?: string;
931
2343
 
932
2344
  /**
933
- * Face-aware crop rectangles grouped by media size.
2345
+ * Face crop rectangles by size.
934
2346
  */
935
2347
  faceRects?: { [key: string]: Array<TweetMedia.FaceRect> };
936
2348
 
937
2349
  /**
938
- * Suggested image crops reported by X.
2350
+ * Suggested image crops.
939
2351
  */
940
2352
  focusRects?: Array<TweetMedia.FocusRect>;
941
2353
 
942
2354
  /**
943
- * Original media height.
2355
+ * Graphic-violence warning.
2356
+ */
2357
+ graphicViolence?: boolean;
2358
+
2359
+ /**
2360
+ * Prompt a Grok image came from. Absent on other media & when X sends no prompt.
2361
+ */
2362
+ grokImageAnnotation?: TweetMedia.GrokImageAnnotation;
2363
+
2364
+ /**
2365
+ * Grok post ID associated with the media.
2366
+ */
2367
+ grokPostId?: string;
2368
+
2369
+ /**
2370
+ * Original height.
944
2371
  */
945
2372
  height?: number;
946
2373
 
947
2374
  /**
948
- * Media entity offsets in the tweet text.
2375
+ * Tweet text offsets.
949
2376
  */
950
2377
  indices?: Array<number>;
951
2378
 
@@ -955,66 +2382,162 @@ export interface TweetMedia {
955
2382
  mediaKey?: string;
956
2383
 
957
2384
  /**
958
- * Whether X reports the media as monetizable.
2385
+ * Monetization status.
959
2386
  */
960
2387
  monetizable?: boolean;
961
2388
 
2389
+ otherSensitiveContent?: boolean;
2390
+
962
2391
  /**
963
2392
  * Named media renditions and resize modes.
964
2393
  */
965
2394
  sizes?: { [key: string]: TweetMedia.Sizes };
966
2395
 
967
2396
  /**
968
- * Available video encodings, ordered as returned
2397
+ * Source tweet ID for copied media.
2398
+ */
2399
+ sourceStatusId?: string;
2400
+
2401
+ /**
2402
+ * The account that first posted the media. Some reads carry only its name, picture
2403
+ * & badges.
2404
+ */
2405
+ sourceUser?: UserProfile;
2406
+
2407
+ /**
2408
+ * Source profile ID for copied media.
2409
+ */
2410
+ sourceUserId?: string;
2411
+
2412
+ /**
2413
+ * Public profiles tagged in the media.
2414
+ */
2415
+ tags?: Array<TweetMedia.Tag>;
2416
+
2417
+ /**
2418
+ * Media title.
2419
+ */
2420
+ title?: string;
2421
+
2422
+ /**
2423
+ * Video encodings in source order.
969
2424
  */
970
2425
  videoVariants?: Array<TweetMedia.VideoVariant>;
971
2426
 
972
2427
  /**
973
- * Original media width.
2428
+ * Public destination URL.
2429
+ */
2430
+ visitSiteUrl?: string;
2431
+
2432
+ /**
2433
+ * Public media action URL.
2434
+ */
2435
+ watchNowUrl?: string;
2436
+
2437
+ /**
2438
+ * Original width.
974
2439
  */
975
2440
  width?: number;
976
2441
  }
977
2442
 
978
2443
  export namespace TweetMedia {
979
2444
  export interface FaceRect {
2445
+ /**
2446
+ * Whole number from 0.
2447
+ */
980
2448
  h: number;
981
2449
 
2450
+ /**
2451
+ * Whole number from 0.
2452
+ */
982
2453
  w: number;
983
2454
 
2455
+ /**
2456
+ * Whole number from 0.
2457
+ */
984
2458
  x: number;
985
2459
 
2460
+ /**
2461
+ * Whole number from 0.
2462
+ */
986
2463
  y: number;
987
2464
  }
988
2465
 
989
2466
  export interface FocusRect {
2467
+ /**
2468
+ * Whole number from 0.
2469
+ */
990
2470
  h: number;
991
2471
 
2472
+ /**
2473
+ * Whole number from 0.
2474
+ */
992
2475
  w: number;
993
2476
 
2477
+ /**
2478
+ * Whole number from 0.
2479
+ */
994
2480
  x: number;
995
2481
 
2482
+ /**
2483
+ * Whole number from 0.
2484
+ */
996
2485
  y: number;
997
2486
  }
998
2487
 
2488
+ /**
2489
+ * Prompt a Grok image came from. Absent on other media & when X sends no prompt.
2490
+ */
2491
+ export interface GrokImageAnnotation {
2492
+ /**
2493
+ * Prompt the image came from.
2494
+ */
2495
+ prompt?: string;
2496
+
2497
+ /**
2498
+ * Grok's longer rewrite of the prompt.
2499
+ */
2500
+ upsampledPrompt?: string;
2501
+ }
2502
+
999
2503
  export interface Sizes {
2504
+ /**
2505
+ * Whole number from 0.
2506
+ */
1000
2507
  h: number;
1001
2508
 
1002
2509
  resize: string;
1003
2510
 
2511
+ /**
2512
+ * Whole number from 0.
2513
+ */
1004
2514
  w: number;
1005
2515
  }
1006
2516
 
2517
+ export interface Tag {
2518
+ name?: string;
2519
+
2520
+ screen_name?: string;
2521
+
2522
+ type?: string;
2523
+
2524
+ user_id?: string;
2525
+ }
2526
+
1007
2527
  export interface VideoVariant {
1008
2528
  contentType: string;
1009
2529
 
1010
2530
  url: string;
1011
2531
 
2532
+ /**
2533
+ * Whole number from 0.
2534
+ */
1012
2535
  bitrate?: number;
1013
2536
  }
1014
2537
  }
1015
2538
 
1016
2539
  /**
1017
- * X user profile with bio, follower counts, and verification status.
2540
+ * Public X profile.
1018
2541
  */
1019
2542
  export interface UserProfile {
1020
2543
  id: string;
@@ -1023,36 +2546,145 @@ export interface UserProfile {
1023
2546
 
1024
2547
  username: string;
1025
2548
 
2549
+ /**
2550
+ * Null when X shows no label.
2551
+ */
2552
+ accountBasedIn?: UserProfile.AccountBasedIn | null;
2553
+
2554
+ /**
2555
+ * False when X notes accountBasedIn may be inaccurate.
2556
+ */
2557
+ accountBasedInAccurate?: boolean;
2558
+
2559
+ /**
2560
+ * True when X withheld accountBasedIn from this read. Retry later.
2561
+ */
2562
+ accountBasedInUnavailable?: boolean;
2563
+
2564
+ /**
2565
+ * X Ads services the account uses, such as `analytics`, `media_studio` or `smb`.
2566
+ * Empty for an account without ads.
2567
+ */
2568
+ advertiserAccountServiceLevels?: Array<string>;
2569
+
2570
+ /**
2571
+ * The account's X Ads type. `none` for an account without ads, or
2572
+ * `promotable_user` for one that may run them.
2573
+ */
2574
+ advertiserAccountType?: string;
2575
+
1026
2576
  /**
1027
2577
  * Organization affiliation label shown on an X profile.
1028
2578
  */
1029
2579
  affiliatesHighlightedLabel?: UserProfile.AffiliatesHighlightedLabel;
1030
2580
 
2581
+ /**
2582
+ * Handle of the organization X shows the account is affiliated with, from its
2583
+ * About page.
2584
+ */
2585
+ affiliateUsername?: string;
2586
+
1031
2587
  automatedBy?: string;
1032
2588
 
2589
+ /**
2590
+ * The parts of the birthday the account made public.
2591
+ */
2592
+ birthdate?: UserProfile.Birthdate;
2593
+
2594
+ /**
2595
+ * Whole number from 0.
2596
+ */
1033
2597
  businessAccountAffiliatesCount?: number;
1034
2598
 
2599
+ /**
2600
+ * Whether X treats the profile as a business profile. `none` or `enabled`.
2601
+ */
2602
+ businessProfileState?: string;
2603
+
1035
2604
  /**
1036
2605
  * Community role when returned by community member reads
1037
2606
  */
1038
2607
  communityRole?: string;
1039
2608
 
2609
+ /**
2610
+ * How the account first connected to X.
2611
+ */
2612
+ connectedVia?: string;
2613
+
2614
+ /**
2615
+ * False when X notes that country may be inaccurate.
2616
+ */
2617
+ connectedViaAccurate?: boolean;
2618
+
2619
+ /**
2620
+ * Emails, phone numbers & links the account publishes on its own profile. Omitted
2621
+ * when it publishes none.
2622
+ */
2623
+ contactInfo?: UserProfile.ContactInfo;
2624
+
1040
2625
  coverPicture?: string;
1041
2626
 
2627
+ /**
2628
+ * Account creation time.
2629
+ */
1042
2630
  createdAt?: string;
1043
2631
 
2632
+ /**
2633
+ * Whole number from 0.
2634
+ */
1044
2635
  creatorSubscriptionsCount?: number;
1045
2636
 
2637
+ /**
2638
+ * Whether the profile keeps X's default theme.
2639
+ */
2640
+ defaultProfile?: boolean;
2641
+
2642
+ /**
2643
+ * Whether the profile keeps X's default avatar.
2644
+ */
2645
+ defaultProfileImage?: boolean;
2646
+
1046
2647
  description?: string;
1047
2648
 
2649
+ /**
2650
+ * First email the account publishes on its profile, lowercased. Omitted when it
2651
+ * publishes none.
2652
+ */
2653
+ email?: string;
2654
+
2655
+ /**
2656
+ * Followers X counts as fast followers.
2657
+ */
2658
+ fastFollowersCount?: number;
2659
+
1048
2660
  favouritesCount?: number;
1049
2661
 
2662
+ /**
2663
+ * Omitted when X sends no count, as for the account that first posted reused
2664
+ * media.
2665
+ */
1050
2666
  followers?: number;
1051
2667
 
1052
2668
  following?: number;
1053
2669
 
2670
+ /**
2671
+ * Whether the profile may add a location to posts.
2672
+ */
2673
+ geoEnabled?: boolean;
2674
+
2675
+ /**
2676
+ * Public profile bio translation returned by X
2677
+ */
2678
+ grokTranslatedBio?: { [key: string]: unknown };
2679
+
1054
2680
  hasCustomTimelines?: boolean;
1055
2681
 
2682
+ /**
2683
+ * Whether the profile filled X's extended fields, such as a birth date. True or
2684
+ * false.
2685
+ */
2686
+ hasExtendedProfile?: boolean;
2687
+
1056
2688
  hasGraduatedAccess?: boolean;
1057
2689
 
1058
2690
  hasHiddenSubscriptionsOnProfile?: boolean;
@@ -1063,7 +2695,7 @@ export interface UserProfile {
1063
2695
  highlightsInfo?: UserProfile.HighlightsInfo;
1064
2696
 
1065
2697
  /**
1066
- * Identity verification metadata displayed by X.
2698
+ * Identity verification X shows on the profile & its About page.
1067
2699
  */
1068
2700
  identityVerification?: UserProfile.IdentityVerification;
1069
2701
 
@@ -1076,6 +2708,11 @@ export interface UserProfile {
1076
2708
 
1077
2709
  isProfileTranslatable?: boolean;
1078
2710
 
2711
+ /**
2712
+ * Whether the account turned on X's translation of its posts. True or false.
2713
+ */
2714
+ isTranslationEnabled?: boolean;
2715
+
1079
2716
  isTranslator?: boolean;
1080
2717
 
1081
2718
  /**
@@ -1083,16 +2720,34 @@ export interface UserProfile {
1083
2720
  */
1084
2721
  isVerified?: boolean;
1085
2722
 
2723
+ /**
2724
+ * Public lists that include the profile.
2725
+ */
2726
+ listedCount?: number;
2727
+
2728
+ /**
2729
+ * Account owner's public profile location text
2730
+ */
1086
2731
  location?: string;
1087
2732
 
1088
2733
  mediaCount?: number;
1089
2734
 
2735
+ /**
2736
+ * Followers minus fast followers.
2737
+ */
2738
+ normalFollowersCount?: number;
2739
+
1090
2740
  parodyCommentaryFanLabel?: string;
1091
2741
 
1092
2742
  pinnedTweetIds?: Array<string>;
1093
2743
 
1094
2744
  possiblySensitive?: boolean;
1095
2745
 
2746
+ /**
2747
+ * Professional metadata with category display settings
2748
+ */
2749
+ professional?: { [key: string]: unknown };
2750
+
1096
2751
  /**
1097
2752
  * Structured profile bio with entity annotations
1098
2753
  */
@@ -1120,24 +2775,73 @@ export interface UserProfile {
1120
2775
  */
1121
2776
  protected?: boolean;
1122
2777
 
2778
+ /**
2779
+ * UTC repost time with includeRetweetTimestamp. Null if the newest profile page
2780
+ * has no match or lookup failed; otherwise omitted.
2781
+ */
2782
+ retweetedAt?: string | null;
2783
+
1123
2784
  statusesCount?: number;
1124
2785
 
2786
+ /**
2787
+ * Accounts subscribed to the profile's paid Subscriptions. 0 when it has none.
2788
+ */
2789
+ subscribersCount?: number;
2790
+
1125
2791
  superFollowEligible?: boolean;
1126
2792
 
2793
+ /**
2794
+ * Whether X marks the subscription profile as active.
2795
+ */
2796
+ superFollowsUserProfileActive?: boolean;
2797
+
2798
+ /**
2799
+ * Public payment and creator-support handles shown on X.
2800
+ */
2801
+ tipJar?: UserProfile.TipJar;
2802
+
1127
2803
  unavailable?: boolean;
1128
2804
 
1129
2805
  unavailableReason?: string;
1130
2806
 
1131
2807
  url?: string;
1132
2808
 
2809
+ /**
2810
+ * How often the account changed its username.
2811
+ */
2812
+ usernameChanges?: UserProfile.UsernameChanges;
2813
+
2814
+ /**
2815
+ * X's text on why the profile is verified, with its links.
2816
+ */
2817
+ verificationReason?: UserProfile.VerificationReason;
2818
+
1133
2819
  verified?: boolean;
1134
2820
 
1135
2821
  verifiedType?: string;
1136
2822
 
1137
2823
  withheldInCountries?: Array<string>;
2824
+
2825
+ /**
2826
+ * Whether X withholds a post or user
2827
+ */
2828
+ withheldScope?: string;
1138
2829
  }
1139
2830
 
1140
2831
  export namespace UserProfile {
2832
+ /**
2833
+ * X's best-effort public label inferred from aggregated account-access IP
2834
+ * addresses. It does not state nationality, residence, identity, registration,
2835
+ * post location, or exact location.
2836
+ */
2837
+ export interface AccountBasedIn {
2838
+ level: 'country' | 'region';
2839
+
2840
+ observedAt: string;
2841
+
2842
+ value: string;
2843
+ }
2844
+
1141
2845
  /**
1142
2846
  * Organization affiliation label shown on an X profile.
1143
2847
  */
@@ -1146,6 +2850,11 @@ export namespace UserProfile {
1146
2850
 
1147
2851
  description?: string;
1148
2852
 
2853
+ /**
2854
+ * Public text, ranges, references, and mention data.
2855
+ */
2856
+ longDescription?: { [key: string]: unknown };
2857
+
1149
2858
  url?: string;
1150
2859
 
1151
2860
  urlType?: string;
@@ -1155,6 +2864,97 @@ export namespace UserProfile {
1155
2864
  userLabelType?: string;
1156
2865
  }
1157
2866
 
2867
+ /**
2868
+ * The parts of the birthday the account made public.
2869
+ */
2870
+ export interface Birthdate {
2871
+ day?: number;
2872
+
2873
+ month?: number;
2874
+
2875
+ year?: number;
2876
+ }
2877
+
2878
+ /**
2879
+ * Emails, phone numbers & links the account publishes on its own profile. Omitted
2880
+ * when it publishes none.
2881
+ */
2882
+ export interface ContactInfo {
2883
+ /**
2884
+ * Emails in the bio, name or location, lowercased.
2885
+ */
2886
+ emails?: Array<ContactInfo.Email>;
2887
+
2888
+ /**
2889
+ * The profile's website & the links in its bio.
2890
+ */
2891
+ links?: Array<ContactInfo.Link>;
2892
+
2893
+ /**
2894
+ * Phone numbers on the profile. Only a spelling that can be nothing else counts.
2895
+ */
2896
+ phones?: Array<ContactInfo.Phone>;
2897
+ }
2898
+
2899
+ export namespace ContactInfo {
2900
+ export interface Email {
2901
+ /**
2902
+ * The part after the @ sign.
2903
+ */
2904
+ domain: string;
2905
+
2906
+ /**
2907
+ * Profile field that holds the email.
2908
+ */
2909
+ source: 'bio' | 'name' | 'location';
2910
+
2911
+ /**
2912
+ * The email address.
2913
+ */
2914
+ value: string;
2915
+
2916
+ /**
2917
+ * The account's own spelling, sent when it spelled the email out.
2918
+ */
2919
+ writtenAs?: string;
2920
+ }
2921
+
2922
+ export interface Link {
2923
+ /**
2924
+ * Site the link belongs to, such as `linkedin`, `github` or `telegram`. Any other
2925
+ * site is `website`.
2926
+ */
2927
+ network: string;
2928
+
2929
+ /**
2930
+ * `url` for the website field, `bio` for a bio link.
2931
+ */
2932
+ source: 'url' | 'bio';
2933
+
2934
+ /**
2935
+ * The link, as X expands it.
2936
+ */
2937
+ url: string;
2938
+ }
2939
+
2940
+ export interface Phone {
2941
+ /**
2942
+ * Profile field that holds the number.
2943
+ */
2944
+ source: 'bio' | 'name' | 'location' | 'url';
2945
+
2946
+ /**
2947
+ * The digits, with a leading + when the account wrote a country code.
2948
+ */
2949
+ value: string;
2950
+
2951
+ /**
2952
+ * The account's own spelling of the number.
2953
+ */
2954
+ writtenAs?: string;
2955
+ }
2956
+ }
2957
+
1158
2958
  /**
1159
2959
  * Profile highlight availability and count metadata.
1160
2960
  */
@@ -1165,13 +2965,87 @@ export namespace UserProfile {
1165
2965
  }
1166
2966
 
1167
2967
  /**
1168
- * Identity verification metadata displayed by X.
2968
+ * Identity verification X shows on the profile & its About page.
1169
2969
  */
1170
2970
  export interface IdentityVerification {
1171
2971
  description?: string;
1172
2972
 
2973
+ /**
2974
+ * Whether the owner verified their ID with X.
2975
+ */
1173
2976
  isIdentityVerified?: boolean;
1174
2977
 
2978
+ /**
2979
+ * When X verified the account, in milliseconds since 1970, as text.
2980
+ */
1175
2981
  verifiedSinceMsec?: string;
1176
2982
  }
2983
+
2984
+ /**
2985
+ * Public payment and creator-support handles shown on X.
2986
+ */
2987
+ export interface TipJar {
2988
+ bandcampHandle?: string;
2989
+
2990
+ bitcoinHandle?: string;
2991
+
2992
+ cashAppHandle?: string;
2993
+
2994
+ ethereumHandle?: string;
2995
+
2996
+ gofundmeHandle?: string;
2997
+
2998
+ isEnabled?: boolean;
2999
+
3000
+ patreonHandle?: string;
3001
+
3002
+ payPalHandle?: string;
3003
+
3004
+ venmoHandle?: string;
3005
+ }
3006
+
3007
+ /**
3008
+ * How often the account changed its username.
3009
+ */
3010
+ export interface UsernameChanges {
3011
+ /**
3012
+ * Whole number from 0.
3013
+ */
3014
+ count: number;
3015
+
3016
+ /**
3017
+ * Time of the latest change, omitted when there is none.
3018
+ */
3019
+ lastChangedAt?: string;
3020
+ }
3021
+
3022
+ /**
3023
+ * X's text on why the profile is verified, with its links.
3024
+ */
3025
+ export interface VerificationReason {
3026
+ /**
3027
+ * Links inside the text, by character range.
3028
+ */
3029
+ entities?: Array<VerificationReason.Entity>;
3030
+
3031
+ text?: string;
3032
+ }
3033
+
3034
+ export namespace VerificationReason {
3035
+ export interface Entity {
3036
+ /**
3037
+ * Whole number from 0.
3038
+ */
3039
+ fromIndex?: number;
3040
+
3041
+ /**
3042
+ * Whole number from 0.
3043
+ */
3044
+ toIndex?: number;
3045
+
3046
+ url?: string;
3047
+
3048
+ urlType?: string;
3049
+ }
3050
+ }
1177
3051
  }