twitter-developer-api 2.5.3

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 (140) hide show
  1. package/.claude-plugin/marketplace.json +60 -0
  2. package/.claude-plugin/plugin.json +45 -0
  3. package/.codex-plugin/plugin.json +61 -0
  4. package/.mcp.json +8 -0
  5. package/LICENSE +21 -0
  6. package/README.md +279 -0
  7. package/assets/icon.svg +1 -0
  8. package/commands/post.md +15 -0
  9. package/commands/search.md +16 -0
  10. package/commands/trending.md +17 -0
  11. package/commands/user.md +19 -0
  12. package/context7.json +33 -0
  13. package/logo.png +0 -0
  14. package/openclaw.plugin.json +25 -0
  15. package/package.json +79 -0
  16. package/scripts/check-versions.mjs +381 -0
  17. package/scripts/release-guard/content-policy.mjs +337 -0
  18. package/scripts/release-guard/frontmatter.mjs +148 -0
  19. package/scripts/release-guard/policy.mjs +223 -0
  20. package/server.json +18 -0
  21. package/skills/x-twitter-scraper/SKILL.md +387 -0
  22. package/skills/x-twitter-scraper/metadata.json +38 -0
  23. package/skills/x-twitter-scraper/references/api-endpoints-api-keys.md +31 -0
  24. package/skills/x-twitter-scraper/references/api-endpoints-compose.md +33 -0
  25. package/skills/x-twitter-scraper/references/api-endpoints-credits.md +11 -0
  26. package/skills/x-twitter-scraper/references/api-endpoints-drafts.md +86 -0
  27. package/skills/x-twitter-scraper/references/api-endpoints-draws.md +75 -0
  28. package/skills/x-twitter-scraper/references/api-endpoints-error-codes.md +37 -0
  29. package/skills/x-twitter-scraper/references/api-endpoints-events.md +48 -0
  30. package/skills/x-twitter-scraper/references/api-endpoints-extractions.md +97 -0
  31. package/skills/x-twitter-scraper/references/api-endpoints-monitors.md +74 -0
  32. package/skills/x-twitter-scraper/references/api-endpoints-radar.md +49 -0
  33. package/skills/x-twitter-scraper/references/api-endpoints-support.md +47 -0
  34. package/skills/x-twitter-scraper/references/api-endpoints-trends.md +25 -0
  35. package/skills/x-twitter-scraper/references/api-endpoints-tweet-style-cache.md +155 -0
  36. package/skills/x-twitter-scraper/references/api-endpoints-webhooks.md +74 -0
  37. package/skills/x-twitter-scraper/references/api-endpoints-x-accounts.md +42 -0
  38. package/skills/x-twitter-scraper/references/api-endpoints-x-api.md +206 -0
  39. package/skills/x-twitter-scraper/references/api-endpoints-x-media.md +40 -0
  40. package/skills/x-twitter-scraper/references/api-endpoints-x-write.md +204 -0
  41. package/skills/x-twitter-scraper/references/api-endpoints.md +30 -0
  42. package/skills/x-twitter-scraper/references/draws.md +57 -0
  43. package/skills/x-twitter-scraper/references/extractions.md +237 -0
  44. package/skills/x-twitter-scraper/references/mcp-setup.md +273 -0
  45. package/skills/x-twitter-scraper/references/mcp-tools.md +174 -0
  46. package/skills/x-twitter-scraper/references/python-examples.md +182 -0
  47. package/skills/x-twitter-scraper/references/security.md +124 -0
  48. package/skills/x-twitter-scraper/references/types-account-identity.md +9 -0
  49. package/skills/x-twitter-scraper/references/types-account.md +26 -0
  50. package/skills/x-twitter-scraper/references/types-api-keys.md +22 -0
  51. package/skills/x-twitter-scraper/references/types-bookmarks-and-timeline.md +46 -0
  52. package/skills/x-twitter-scraper/references/types-credits.md +11 -0
  53. package/skills/x-twitter-scraper/references/types-download-media.md +22 -0
  54. package/skills/x-twitter-scraper/references/types-draws.md +60 -0
  55. package/skills/x-twitter-scraper/references/types-error.md +10 -0
  56. package/skills/x-twitter-scraper/references/types-events.md +43 -0
  57. package/skills/x-twitter-scraper/references/types-extractions.md +106 -0
  58. package/skills/x-twitter-scraper/references/types-mcp-add-webhook.md +14 -0
  59. package/skills/x-twitter-scraper/references/types-mcp-check-follow.md +10 -0
  60. package/skills/x-twitter-scraper/references/types-mcp-compose-tweet.md +31 -0
  61. package/skills/x-twitter-scraper/references/types-mcp-estimate-extraction.md +15 -0
  62. package/skills/x-twitter-scraper/references/types-mcp-get-account.md +26 -0
  63. package/skills/x-twitter-scraper/references/types-mcp-get-draw.md +30 -0
  64. package/skills/x-twitter-scraper/references/types-mcp-get-events.md +19 -0
  65. package/skills/x-twitter-scraper/references/types-mcp-get-trends.md +16 -0
  66. package/skills/x-twitter-scraper/references/types-mcp-get-user-info.md +16 -0
  67. package/skills/x-twitter-scraper/references/types-mcp-list-monitors.md +15 -0
  68. package/skills/x-twitter-scraper/references/types-mcp-lookup-tweet.md +25 -0
  69. package/skills/x-twitter-scraper/references/types-mcp-output-schemas.md +22 -0
  70. package/skills/x-twitter-scraper/references/types-mcp-refine-tweet.md +13 -0
  71. package/skills/x-twitter-scraper/references/types-mcp-run-draw.md +18 -0
  72. package/skills/x-twitter-scraper/references/types-mcp-run-extraction.md +12 -0
  73. package/skills/x-twitter-scraper/references/types-mcp-score-tweet.md +16 -0
  74. package/skills/x-twitter-scraper/references/types-mcp-search-tweets.md +17 -0
  75. package/skills/x-twitter-scraper/references/types-mcp-test-webhook.md +11 -0
  76. package/skills/x-twitter-scraper/references/types-monitors.md +20 -0
  77. package/skills/x-twitter-scraper/references/types-radar.md +40 -0
  78. package/skills/x-twitter-scraper/references/types-request-bodies.md +30 -0
  79. package/skills/x-twitter-scraper/references/types-rest-api-vs-mcp-field-naming.md +15 -0
  80. package/skills/x-twitter-scraper/references/types-support.md +25 -0
  81. package/skills/x-twitter-scraper/references/types-trends.md +18 -0
  82. package/skills/x-twitter-scraper/references/types-tweet-drafts.md +20 -0
  83. package/skills/x-twitter-scraper/references/types-tweet-style-cache.md +50 -0
  84. package/skills/x-twitter-scraper/references/types-user-activity.md +35 -0
  85. package/skills/x-twitter-scraper/references/types-webhooks.md +38 -0
  86. package/skills/x-twitter-scraper/references/types-x-accounts.md +16 -0
  87. package/skills/x-twitter-scraper/references/types-x-api.md +69 -0
  88. package/skills/x-twitter-scraper/references/types-x-articles.md +21 -0
  89. package/skills/x-twitter-scraper/references/types-x-write.md +39 -0
  90. package/skills/x-twitter-scraper/references/types.md +48 -0
  91. package/skills/x-twitter-scraper/references/usage.md +50 -0
  92. package/skills/x-twitter-scraper/references/webhooks.md +243 -0
  93. package/skills/x-twitter-scraper/references/workflows.md +202 -0
  94. package/skills/x-twitter-scraper/skill-card.md +76 -0
  95. package/skills/x-twitter-scraper/skillspector-report.md +17 -0
  96. package/skills/xquik-social-research/LICENSE +21 -0
  97. package/skills/xquik-social-research/SKILL.md +77 -0
  98. package/skills.sh.json +77 -0
  99. package/start.sh +2 -0
  100. package/stub-server.mjs +209 -0
  101. package/task-guides/check-mutuals.md +55 -0
  102. package/task-guides/clean-followers.md +71 -0
  103. package/task-guides/export-tweets-csv.md +70 -0
  104. package/task-guides/extract-followers.md +83 -0
  105. package/task-guides/find-bangers.md +61 -0
  106. package/task-guides/find-influencers.md +72 -0
  107. package/task-guides/find-viral-tweets.md +80 -0
  108. package/task-guides/follow-unfollow.md +83 -0
  109. package/task-guides/for-you-feed.md +63 -0
  110. package/task-guides/going-viral.md +68 -0
  111. package/task-guides/grow-followers.md +66 -0
  112. package/task-guides/monitor-accounts.md +81 -0
  113. package/task-guides/optimize-tweets.md +80 -0
  114. package/task-guides/post-tweets.md +108 -0
  115. package/task-guides/run-giveaway.md +90 -0
  116. package/task-guides/search-tweets.md +122 -0
  117. package/task-guides/send-dms.md +92 -0
  118. package/task-guides/top-replies.md +71 -0
  119. package/task-guides/track-competitors.md +73 -0
  120. package/task-guides/track-hashtags.md +86 -0
  121. package/task-guides/track-mentions.md +88 -0
  122. package/task-guides/trending-news.md +68 -0
  123. package/task-guides/tweet-analytics.md +129 -0
  124. package/task-guides/tweet-ideas.md +65 -0
  125. package/task-guides/tweet-replies.md +82 -0
  126. package/task-guides/tweet-style.md +72 -0
  127. package/task-guides/tweet-webhooks.md +84 -0
  128. package/task-guides/update-x-profile.md +75 -0
  129. package/task-guides/user-tweets.md +148 -0
  130. package/task-guides/who-liked.md +68 -0
  131. package/task-guides/who-quoted.md +68 -0
  132. package/task-guides/who-retweeted.md +67 -0
  133. package/task-guides/write-threads.md +72 -0
  134. package/task-guides/write-tweets.md +84 -0
  135. package/task-guides/x-articles.md +84 -0
  136. package/task-guides/x-bookmarks.md +63 -0
  137. package/task-guides/x-communities.md +71 -0
  138. package/task-guides/x-lists.md +70 -0
  139. package/task-guides/x-spaces.md +67 -0
  140. package/task-guides/x-trends.md +74 -0
@@ -0,0 +1,155 @@
1
+ # Xquik REST API Endpoints: Tweet Style Cache
2
+
3
+ ### Analyze & Cache Style
4
+
5
+ `POST /styles`
6
+
7
+ Fetch recent tweets from an X account and cache them for style analysis. **Consumes metered API usage.**
8
+
9
+ **Request body:**
10
+
11
+ | Field | Type | Required | Description |
12
+ |-------|------|----------|-------------|
13
+ | `username` | string | Yes | X username to analyze (without @) |
14
+
15
+ **Response (201):**
16
+
17
+ ```json
18
+ {
19
+ "xUsername": "elonmusk",
20
+ "tweetCount": 20,
21
+ "isOwnAccount": false,
22
+ "fetchedAt": "2026-02-24T10:30:00.000Z",
23
+ "tweets": [
24
+ {
25
+ "id": "1893456789012345678",
26
+ "text": "The future is now.",
27
+ "authorUsername": "elonmusk",
28
+ "createdAt": "2026-02-24T14:22:00.000Z"
29
+ }
30
+ ]
31
+ }
32
+ ```
33
+
34
+ ---
35
+
36
+ ### List Cached Styles
37
+
38
+ `GET /styles`
39
+
40
+ List all cached tweet style profiles. Max 200 results, ordered by fetch date.
41
+
42
+ **Response (200):**
43
+
44
+ ```json
45
+ {
46
+ "styles": [
47
+ {
48
+ "xUsername": "elonmusk",
49
+ "tweetCount": 20,
50
+ "isOwnAccount": false,
51
+ "fetchedAt": "2026-02-24T10:30:00.000Z"
52
+ }
53
+ ]
54
+ }
55
+ ```
56
+
57
+ ---
58
+
59
+ ### Save Custom Style
60
+
61
+ `PUT /styles/{id}`
62
+
63
+ Save a custom style profile from tweet texts. The body `label` controls the saved style label and replaces any existing style with that label.
64
+
65
+ **Body:**
66
+
67
+ | Field | Type | Required | Description |
68
+ |-------|------|----------|-------------|
69
+ | `label` | string | Yes | Style label name (1-30 characters) |
70
+ | `tweets` | object[] | Yes | Array of tweet objects (1-100). Each must have a `text` field |
71
+
72
+ **Response (200):** Style object with label, `tweetCount`, `isOwnAccount: false`, `fetchedAt`, and `tweets` array.
73
+
74
+ **Errors:** `400 invalid_input`
75
+
76
+ ---
77
+
78
+ ### Get Cached Style
79
+
80
+ `GET /styles/{id}`
81
+
82
+ Get a cached style profile with full tweet data. `id` is the cached style label or username.
83
+
84
+ **Response (200):** Full style object with `tweets` array.
85
+
86
+ **Errors:** `404 style_not_found`
87
+
88
+ ---
89
+
90
+ ### Delete Cached Style
91
+
92
+ delete request to `/styles/{id}`
93
+
94
+ Delete a cached style by label or username. Returns `204 No Content`.
95
+
96
+ **Errors:** `404 style_not_found`
97
+
98
+ ---
99
+
100
+ ### Compare Styles
101
+
102
+ `GET /styles/compare?username1=A&username2=B`
103
+
104
+ Compare two cached tweet style profiles side by side.
105
+
106
+ **Query parameters:**
107
+
108
+ | Parameter | Type | Required | Description |
109
+ |-----------|------|----------|-------------|
110
+ | `username1` | string | Yes | First X username |
111
+ | `username2` | string | Yes | Second X username |
112
+
113
+ **Response (200):**
114
+
115
+ ```json
116
+ {
117
+ "style1": { "xUsername": "user1", "tweetCount": 20, "isOwnAccount": true, "fetchedAt": "...", "tweets": [...] },
118
+ "style2": { "xUsername": "user2", "tweetCount": 15, "isOwnAccount": false, "fetchedAt": "...", "tweets": [...] }
119
+ }
120
+ ```
121
+
122
+ **Errors:** `400 missing_params`, `404 style_not_found`
123
+
124
+ ---
125
+
126
+ ### Analyze Performance
127
+
128
+ `GET /styles/{id}/performance`
129
+
130
+ Get live engagement metrics for cached tweets for a cached style label or username. **Consumes metered API usage.**
131
+
132
+ **Response (200):**
133
+
134
+ ```json
135
+ {
136
+ "xUsername": "elonmusk",
137
+ "tweetCount": 20,
138
+ "tweets": [
139
+ {
140
+ "id": "1893456789012345678",
141
+ "text": "The future is now.",
142
+ "likeCount": 42000,
143
+ "retweetCount": 8500,
144
+ "replyCount": 3200,
145
+ "quoteCount": 1100,
146
+ "viewCount": 5000000,
147
+ "bookmarkCount": 2400
148
+ }
149
+ ]
150
+ }
151
+ ```
152
+
153
+ **Errors:** `404 style_not_found`
154
+
155
+ ---
@@ -0,0 +1,74 @@
1
+ # Xquik REST API Endpoints: Webhooks
2
+
3
+ ### Create Webhook
4
+
5
+ ```
6
+ POST /webhooks
7
+ ```
8
+
9
+ **Body:**
10
+ ```json
11
+ {
12
+ "url": "https://your-server.com/webhook",
13
+ "eventTypes": ["tweet.new", "tweet.reply"]
14
+ }
15
+ ```
16
+
17
+ **Response** includes a `secret` field (shown only once). Store it for signature verification.
18
+
19
+ ### List Webhooks
20
+
21
+ ```
22
+ GET /webhooks
23
+ ```
24
+
25
+ Returns all webhooks (up to 200). Secret is never exposed in list responses.
26
+
27
+ ### Update Webhook
28
+
29
+ ```
30
+ PATCH /webhooks/{id}
31
+ ```
32
+
33
+ **Body:** `{ "url": "...", "eventTypes": [...], "isActive": true|false }` (all optional)
34
+
35
+ ### Delete Webhook
36
+
37
+ ```
38
+ delete request to `/webhooks/{id}`
39
+ ```
40
+
41
+ Permanently removes the webhook. All future deliveries are stopped.
42
+
43
+ ### Test Webhook
44
+
45
+ ```
46
+ POST /webhooks/{id}/test
47
+ ```
48
+
49
+ Sends a `webhook.test` event to the webhook endpoint, HMAC-signed with the webhook's secret. Returns success or failure status with HTTP response details.
50
+
51
+ **Payload delivered to your endpoint:**
52
+ ```json
53
+ {
54
+ "eventType": "webhook.test",
55
+ "data": {
56
+ "message": "Test delivery from Xquik"
57
+ },
58
+ "timestamp": "2026-02-27T12:00:00.000Z"
59
+ }
60
+ ```
61
+
62
+ The delivery includes the `X-Xquik-Signature` header, identical to production deliveries.
63
+
64
+ Returns `400 webhook_inactive` if the webhook is disabled. Reactivate via `PATCH /webhooks/{id}` before testing.
65
+
66
+ ### List Deliveries
67
+
68
+ ```
69
+ GET /webhooks/{id}/deliveries
70
+ ```
71
+
72
+ View delivery attempts and statuses for a webhook. Statuses: `pending`, `delivered`, `failed`, `exhausted`.
73
+
74
+ ---
@@ -0,0 +1,42 @@
1
+ # Xquik REST API Endpoints: X Accounts (Connected)
2
+
3
+ Manage connected X accounts for confirmation-gated write actions.
4
+
5
+ **Connecting or re-authenticating an X account is done by the user in the Xquik dashboard**, not via this skill. The skill never handles X login material. The agent should direct the user to the dashboard account page when a new account needs to be connected or an existing session needs to be refreshed.
6
+
7
+ The OpenAPI surface includes dashboard-owned account connection routes:
8
+
9
+ ```
10
+ POST /x/accounts
11
+ POST /x/account-connection-challenges/{id}/submit
12
+ POST /x/accounts/{id}/reauth
13
+ POST /x/accounts/bulk-retry
14
+ ```
15
+
16
+ Do not call these from this skill. They are listed here only so the skill docs match the public API surface and keep the dashboard-only boundary explicit.
17
+
18
+ ### List X Accounts
19
+
20
+ ```
21
+ GET /x/accounts
22
+ ```
23
+
24
+ Returns all connected X accounts. Response: `{ accounts: [{ id, username, displayName, isActive, createdAt }] }`.
25
+
26
+ ### Get X Account
27
+
28
+ ```
29
+ GET /x/accounts/{id}
30
+ ```
31
+
32
+ Returns `{ id, username, displayName, isActive, createdAt }`.
33
+
34
+ ### Disconnect X Account
35
+
36
+ ```
37
+ delete request to `/x/accounts/{id}`
38
+ ```
39
+
40
+ Permanently removes the account from Xquik. Returns `{ success: true }`. Before calling, confirm with the user.
41
+
42
+ ---
@@ -0,0 +1,206 @@
1
+ # Xquik REST API Endpoints: X API (Direct Lookups)
2
+
3
+ Metered operations that require account access.
4
+
5
+ ### Get Tweet
6
+
7
+ ```
8
+ GET /x/tweets/{id}
9
+ ```
10
+
11
+ Returns full tweet with engagement metrics (likes, retweets, replies, quotes, views, bookmarks), author info (username, followers, verified status, profile picture), and optional attached media (photos/videos with URLs).
12
+
13
+ ### Get Article
14
+
15
+ ```
16
+ GET /x/articles/{tweetId}
17
+ ```
18
+
19
+ Retrieve the full content of an X Article (long-form post) by numeric tweet ID. If the user gives an article URL, use the final status ID as `tweetId`. Returns title, body text with block-level formatting, cover image, inline images, and engagement metrics. Metered.
20
+
21
+ **Response:**
22
+ ```json
23
+ {
24
+ "title": "Why AI Will Transform Everything",
25
+ "coverImage": "https://pbs.twimg.com/...",
26
+ "bodyHtml": "<p>The future of AI...</p>",
27
+ "likeCount": 5200,
28
+ "retweetCount": 890,
29
+ "replyCount": 245,
30
+ "viewCount": 150000,
31
+ "bookmarkCount": 1200,
32
+ "author": {
33
+ "id": "44196397",
34
+ "username": "elonmusk",
35
+ "name": "Elon Musk"
36
+ }
37
+ }
38
+ ```
39
+
40
+ ### Search Tweets
41
+
42
+ ```
43
+ GET /x/tweets/search?q={query}
44
+ ```
45
+
46
+ Search using X syntax: keywords, `#hashtags`, `from:user`, `to:user`, `"exact phrases"`, `OR`, `-exclude`.
47
+
48
+ Returns tweet info with optional engagement metrics (likeCount, retweetCount, replyCount) and optional attached media. Some fields may be omitted if unavailable.
49
+
50
+ ### Get User
51
+
52
+ ```
53
+ GET /x/users/{id}
54
+ ```
55
+
56
+ Returns profile info. `id` accepts either an X username without `@` or a numeric user ID. Fields `id`, `username`, `name` are always present. All other fields (`description`, `followers`, `following`, `verified`, `profilePicture`, `location`, `createdAt`, `statusesCount`) are optional and omitted when unavailable.
57
+
58
+ ### Batch & Search Users
59
+
60
+ ```
61
+ GET /x/users/batch?ids=44196397,783214
62
+ GET /x/users/search?q=founder
63
+ ```
64
+
65
+ Batch lookup accepts up to 100 comma-separated numeric user IDs. User search returns matching profiles and may include a pagination cursor.
66
+
67
+ ### Check Follower
68
+
69
+ ```
70
+ GET /x/followers/check?source={username}&target={username}
71
+ ```
72
+
73
+ Returns `isFollowing` and `isFollowedBy` for both directions.
74
+
75
+ ### Get User Tweets
76
+
77
+ ```
78
+ GET /x/users/{id}/tweets
79
+ ```
80
+
81
+ Get a user's recent tweets by user ID. Metered per returned tweet.
82
+
83
+ ### Batch Tweets
84
+
85
+ ```
86
+ GET /x/tweets?ids=1893456789012345678,1893456789012345679
87
+ ```
88
+
89
+ Get multiple tweets by comma-separated tweet IDs. Maximum 100 IDs.
90
+
91
+ ### Get User Likes
92
+
93
+ ```
94
+ GET /x/users/{id}/likes
95
+ ```
96
+
97
+ Get tweets liked by a user. Metered per returned result.
98
+
99
+ ### Get User Media
100
+
101
+ ```
102
+ GET /x/users/{id}/media
103
+ ```
104
+
105
+ Get a user's media tweets (tweets containing photos/videos). Metered per returned result.
106
+
107
+ ### Get Tweet Favoriters
108
+
109
+ ```
110
+ GET /x/tweets/{id}/favoriters
111
+ ```
112
+
113
+ Get users who liked a tweet. Metered per returned result.
114
+
115
+ ### Tweet Conversation & Engagement Lists
116
+
117
+ ```
118
+ GET /x/tweets/{id}/quotes
119
+ GET /x/tweets/{id}/replies
120
+ GET /x/tweets/{id}/retweeters
121
+ GET /x/tweets/{id}/thread
122
+ ```
123
+
124
+ Read quote tweets, replies, retweeters, or the conversation thread for a tweet. These are paginated read operations.
125
+
126
+ ### User Social Graph Reads
127
+
128
+ ```
129
+ GET /x/users/{id}/followers
130
+ GET /x/users/{id}/following
131
+ GET /x/users/{id}/mentions
132
+ GET /x/users/{id}/verified-followers
133
+ ```
134
+
135
+ Read followers, following, mentions, and verified followers for a username or numeric user ID. These are paginated read operations.
136
+
137
+ ### Get Mutual Followers
138
+
139
+ ```
140
+ GET /x/users/{id}/followers-you-know
141
+ ```
142
+
143
+ Get mutual followers (followers you know). Metered per returned result.
144
+
145
+ ### X Lists
146
+
147
+ ```
148
+ GET /x/lists/{id}/followers
149
+ GET /x/lists/{id}/members
150
+ GET /x/lists/{id}/tweets
151
+ ```
152
+
153
+ Read list followers, members, or list timeline tweets by list ID.
154
+
155
+ ### X Communities
156
+
157
+ ```
158
+ GET /x/communities/search
159
+ GET /x/communities/tweets
160
+ GET /x/communities/{id}/info
161
+ GET /x/communities/{id}/members
162
+ GET /x/communities/{id}/moderators
163
+ GET /x/communities/{id}/tweets
164
+ ```
165
+
166
+ Search communities and read community metadata, members, moderators, or tweets. Community writes are listed under X Write and require confirmation.
167
+
168
+ ### Get Bookmarks
169
+
170
+ ```
171
+ GET /x/bookmarks
172
+ ```
173
+
174
+ Get bookmarked tweets. Requires a connected X account. Metered per returned result.
175
+
176
+ **Sensitive:** Returns private data. Confirm with user before calling.
177
+
178
+ ### Get Bookmark Folders
179
+
180
+ ```
181
+ GET /x/bookmarks/folders
182
+ ```
183
+
184
+ Get bookmark folders. Requires a connected X account. Metered.
185
+
186
+ ### Get Notifications
187
+
188
+ ```
189
+ GET /x/notifications
190
+ ```
191
+
192
+ Get notifications with type filter. Requires a connected X account. Metered per returned result.
193
+
194
+ **Sensitive:** Returns private data. Confirm with user before calling.
195
+
196
+ ### Get Home Timeline
197
+
198
+ ```
199
+ GET /x/timeline
200
+ ```
201
+
202
+ Get home timeline. Requires a connected X account. Metered per returned result.
203
+
204
+ **Sensitive:** Returns private data. Confirm with user before calling.
205
+
206
+ ---
@@ -0,0 +1,40 @@
1
+ # Xquik REST API Endpoints: X Media (Download)
2
+
3
+ ### Download Media
4
+
5
+ ```
6
+ POST /x/media/download
7
+ ```
8
+
9
+ Download images, videos, and GIFs from tweets. Single or bulk (up to 50). Returns a shareable gallery URL.
10
+
11
+ **Body:** Provide either `tweetInput` (single tweet) or `tweetIds` (bulk). Exactly 1 is required.
12
+
13
+ | Field | Type | Description |
14
+ |-------|------|-------------|
15
+ | `tweetInput` | string | Tweet URL or numeric tweet ID for a single download. Accepts `x.com` and `twitter.com` URL formats |
16
+ | `tweetIds` | string[] | Array of tweet URLs or IDs for bulk download. Maximum 50 items. Returns a single combined gallery |
17
+
18
+ **Response (single):**
19
+ ```json
20
+ {
21
+ "tweetId": "1893456789012345678",
22
+ "galleryUrl": "https://xquik.com/g/abc123",
23
+ "cacheHit": false
24
+ }
25
+ ```
26
+
27
+ **Response (bulk):**
28
+ ```json
29
+ {
30
+ "galleryUrl": "https://xquik.com/g/def456",
31
+ "totalTweets": 3,
32
+ "totalMedia": 7
33
+ }
34
+ ```
35
+
36
+ First download is metered. Subsequent requests for the same tweet return cached URLs when `cacheHit: true`. All downloads are saved to shareable gallery pages under `https://xquik.com/g/{token}`.
37
+
38
+ Returns `400 no_media` if the tweet has no downloadable media. Returns `400 too_many_tweets` if bulk array exceeds 50 items.
39
+
40
+ ---