twitter-developer-api 2.5.3 → 2.7.0

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 (160) hide show
  1. package/.claude-plugin/marketplace.json +4 -4
  2. package/.claude-plugin/plugin.json +5 -28
  3. package/.codex-plugin/plugin.json +5 -29
  4. package/README.de.md +505 -0
  5. package/README.es.md +504 -0
  6. package/README.fr.md +507 -0
  7. package/README.it.md +499 -0
  8. package/README.ja.md +493 -0
  9. package/README.ko.md +494 -0
  10. package/README.md +511 -221
  11. package/README.tr.md +502 -0
  12. package/README.zh-CN.md +484 -0
  13. package/assets/logo-400.png +0 -0
  14. package/commands/post.md +16 -9
  15. package/commands/search.md +5 -8
  16. package/commands/trending.md +7 -7
  17. package/commands/user.md +4 -10
  18. package/context7.json +11 -13
  19. package/docker-mcp-registry/xquik/readme.md +1 -0
  20. package/docker-mcp-registry/xquik/server.yaml +23 -0
  21. package/docker-mcp-registry/xquik/tools.json +1 -0
  22. package/glama.json +4 -0
  23. package/mcp.json +9 -0
  24. package/openclaw.plugin.json +4 -4
  25. package/package.json +32 -13
  26. package/plugin.json +22 -0
  27. package/registry.json +60 -0
  28. package/server.json +21 -2
  29. package/skills/x-twitter-scraper/LICENSE +21 -0
  30. package/skills/x-twitter-scraper/SKILL.md +175 -350
  31. package/skills/x-twitter-scraper/metadata.json +19 -9
  32. package/skills/x-twitter-scraper/references/compare-faq.md +101 -0
  33. package/skills/x-twitter-scraper/references/extractions.md +65 -216
  34. package/skills/x-twitter-scraper/references/mcp.md +24 -0
  35. package/skills/x-twitter-scraper/references/monitors-webhooks.md +167 -0
  36. package/skills/x-twitter-scraper/references/reads.md +416 -0
  37. package/skills/x-twitter-scraper/references/writes.md +111 -0
  38. package/skills/xquik-mcp/SKILL.md +75 -0
  39. package/skills/xquik-mcp/references/mcp-setup.md +255 -0
  40. package/skills/xquik-social-research/SKILL.md +66 -68
  41. package/skills.sh.json +6 -68
  42. package/start.sh +4 -1
  43. package/stub-server.mjs +125 -135
  44. package/task-guides/check-mutuals.md +11 -11
  45. package/task-guides/clean-followers.md +17 -17
  46. package/task-guides/export-tweets-csv.md +26 -17
  47. package/task-guides/extract-followers.md +20 -20
  48. package/task-guides/find-bangers.md +18 -16
  49. package/task-guides/find-influencers.md +18 -15
  50. package/task-guides/find-viral-tweets.md +22 -22
  51. package/task-guides/follow-unfollow.md +24 -18
  52. package/task-guides/for-you-feed.md +12 -12
  53. package/task-guides/going-viral.md +20 -19
  54. package/task-guides/grow-followers.md +18 -16
  55. package/task-guides/monitor-accounts.md +24 -25
  56. package/task-guides/optimize-tweets.md +18 -17
  57. package/task-guides/post-tweets.md +37 -32
  58. package/task-guides/run-giveaway.md +16 -16
  59. package/task-guides/search-tweets.md +33 -22
  60. package/task-guides/send-dms.md +31 -22
  61. package/task-guides/top-replies.md +36 -20
  62. package/task-guides/track-competitors.md +22 -22
  63. package/task-guides/track-hashtags.md +24 -25
  64. package/task-guides/track-mentions.md +25 -24
  65. package/task-guides/trending-news.md +22 -17
  66. package/task-guides/tweet-analytics.md +27 -27
  67. package/task-guides/tweet-ideas.md +11 -11
  68. package/task-guides/tweet-replies.md +72 -24
  69. package/task-guides/tweet-style.md +12 -12
  70. package/task-guides/tweet-webhooks.md +29 -25
  71. package/task-guides/update-x-profile.md +22 -19
  72. package/task-guides/user-tweets.md +45 -34
  73. package/task-guides/who-liked.md +12 -12
  74. package/task-guides/who-quoted.md +13 -13
  75. package/task-guides/who-retweeted.md +13 -13
  76. package/task-guides/write-threads.md +14 -18
  77. package/task-guides/write-tweets.md +19 -19
  78. package/task-guides/x-articles.md +19 -14
  79. package/task-guides/x-bookmarks.md +12 -12
  80. package/task-guides/x-communities.md +12 -12
  81. package/task-guides/x-lists.md +11 -11
  82. package/task-guides/x-spaces.md +12 -12
  83. package/task-guides/x-trends.md +19 -19
  84. package/x-twitter-scraper.json +10 -0
  85. package/scripts/check-versions.mjs +0 -381
  86. package/scripts/release-guard/content-policy.mjs +0 -337
  87. package/scripts/release-guard/frontmatter.mjs +0 -148
  88. package/scripts/release-guard/policy.mjs +0 -223
  89. package/skills/x-twitter-scraper/references/api-endpoints-api-keys.md +0 -31
  90. package/skills/x-twitter-scraper/references/api-endpoints-compose.md +0 -33
  91. package/skills/x-twitter-scraper/references/api-endpoints-credits.md +0 -11
  92. package/skills/x-twitter-scraper/references/api-endpoints-drafts.md +0 -86
  93. package/skills/x-twitter-scraper/references/api-endpoints-draws.md +0 -75
  94. package/skills/x-twitter-scraper/references/api-endpoints-error-codes.md +0 -37
  95. package/skills/x-twitter-scraper/references/api-endpoints-events.md +0 -48
  96. package/skills/x-twitter-scraper/references/api-endpoints-extractions.md +0 -97
  97. package/skills/x-twitter-scraper/references/api-endpoints-monitors.md +0 -74
  98. package/skills/x-twitter-scraper/references/api-endpoints-radar.md +0 -49
  99. package/skills/x-twitter-scraper/references/api-endpoints-support.md +0 -47
  100. package/skills/x-twitter-scraper/references/api-endpoints-trends.md +0 -25
  101. package/skills/x-twitter-scraper/references/api-endpoints-tweet-style-cache.md +0 -155
  102. package/skills/x-twitter-scraper/references/api-endpoints-webhooks.md +0 -74
  103. package/skills/x-twitter-scraper/references/api-endpoints-x-accounts.md +0 -42
  104. package/skills/x-twitter-scraper/references/api-endpoints-x-api.md +0 -206
  105. package/skills/x-twitter-scraper/references/api-endpoints-x-media.md +0 -40
  106. package/skills/x-twitter-scraper/references/api-endpoints-x-write.md +0 -204
  107. package/skills/x-twitter-scraper/references/api-endpoints.md +0 -30
  108. package/skills/x-twitter-scraper/references/draws.md +0 -57
  109. package/skills/x-twitter-scraper/references/mcp-setup.md +0 -273
  110. package/skills/x-twitter-scraper/references/mcp-tools.md +0 -174
  111. package/skills/x-twitter-scraper/references/python-examples.md +0 -182
  112. package/skills/x-twitter-scraper/references/security.md +0 -124
  113. package/skills/x-twitter-scraper/references/types-account-identity.md +0 -9
  114. package/skills/x-twitter-scraper/references/types-account.md +0 -26
  115. package/skills/x-twitter-scraper/references/types-api-keys.md +0 -22
  116. package/skills/x-twitter-scraper/references/types-bookmarks-and-timeline.md +0 -46
  117. package/skills/x-twitter-scraper/references/types-credits.md +0 -11
  118. package/skills/x-twitter-scraper/references/types-download-media.md +0 -22
  119. package/skills/x-twitter-scraper/references/types-draws.md +0 -60
  120. package/skills/x-twitter-scraper/references/types-error.md +0 -10
  121. package/skills/x-twitter-scraper/references/types-events.md +0 -43
  122. package/skills/x-twitter-scraper/references/types-extractions.md +0 -106
  123. package/skills/x-twitter-scraper/references/types-mcp-add-webhook.md +0 -14
  124. package/skills/x-twitter-scraper/references/types-mcp-check-follow.md +0 -10
  125. package/skills/x-twitter-scraper/references/types-mcp-compose-tweet.md +0 -31
  126. package/skills/x-twitter-scraper/references/types-mcp-estimate-extraction.md +0 -15
  127. package/skills/x-twitter-scraper/references/types-mcp-get-account.md +0 -26
  128. package/skills/x-twitter-scraper/references/types-mcp-get-draw.md +0 -30
  129. package/skills/x-twitter-scraper/references/types-mcp-get-events.md +0 -19
  130. package/skills/x-twitter-scraper/references/types-mcp-get-trends.md +0 -16
  131. package/skills/x-twitter-scraper/references/types-mcp-get-user-info.md +0 -16
  132. package/skills/x-twitter-scraper/references/types-mcp-list-monitors.md +0 -15
  133. package/skills/x-twitter-scraper/references/types-mcp-lookup-tweet.md +0 -25
  134. package/skills/x-twitter-scraper/references/types-mcp-output-schemas.md +0 -22
  135. package/skills/x-twitter-scraper/references/types-mcp-refine-tweet.md +0 -13
  136. package/skills/x-twitter-scraper/references/types-mcp-run-draw.md +0 -18
  137. package/skills/x-twitter-scraper/references/types-mcp-run-extraction.md +0 -12
  138. package/skills/x-twitter-scraper/references/types-mcp-score-tweet.md +0 -16
  139. package/skills/x-twitter-scraper/references/types-mcp-search-tweets.md +0 -17
  140. package/skills/x-twitter-scraper/references/types-mcp-test-webhook.md +0 -11
  141. package/skills/x-twitter-scraper/references/types-monitors.md +0 -20
  142. package/skills/x-twitter-scraper/references/types-radar.md +0 -40
  143. package/skills/x-twitter-scraper/references/types-request-bodies.md +0 -30
  144. package/skills/x-twitter-scraper/references/types-rest-api-vs-mcp-field-naming.md +0 -15
  145. package/skills/x-twitter-scraper/references/types-support.md +0 -25
  146. package/skills/x-twitter-scraper/references/types-trends.md +0 -18
  147. package/skills/x-twitter-scraper/references/types-tweet-drafts.md +0 -20
  148. package/skills/x-twitter-scraper/references/types-tweet-style-cache.md +0 -50
  149. package/skills/x-twitter-scraper/references/types-user-activity.md +0 -35
  150. package/skills/x-twitter-scraper/references/types-webhooks.md +0 -38
  151. package/skills/x-twitter-scraper/references/types-x-accounts.md +0 -16
  152. package/skills/x-twitter-scraper/references/types-x-api.md +0 -69
  153. package/skills/x-twitter-scraper/references/types-x-articles.md +0 -21
  154. package/skills/x-twitter-scraper/references/types-x-write.md +0 -39
  155. package/skills/x-twitter-scraper/references/types.md +0 -48
  156. package/skills/x-twitter-scraper/references/usage.md +0 -50
  157. package/skills/x-twitter-scraper/references/webhooks.md +0 -243
  158. package/skills/x-twitter-scraper/references/workflows.md +0 -202
  159. package/skills/x-twitter-scraper/skill-card.md +0 -76
  160. package/skills/x-twitter-scraper/skillspector-report.md +0 -17
@@ -1,223 +0,0 @@
1
- /** Each entry: path (relative to root) + extractor returning the version string. */
2
- function parseJsonVersion(raw) {
3
- return JSON.parse(raw).version;
4
- }
5
-
6
- export const versionSurfaces = [
7
- { path: "server.json", get: parseJsonVersion },
8
- { path: "openclaw.plugin.json", get: parseJsonVersion },
9
- { path: ".codex-plugin/plugin.json", get: parseJsonVersion },
10
- { path: ".claude-plugin/plugin.json", get: parseJsonVersion },
11
- {
12
- path: ".claude-plugin/marketplace.json",
13
- get: (j) => {
14
- const m = JSON.parse(j);
15
- return [m.metadata?.version, ...(m.plugins ?? []).map((p) => p.version)];
16
- },
17
- },
18
- {
19
- path: "skills/x-twitter-scraper/metadata.json",
20
- get: parseJsonVersion,
21
- },
22
- {
23
- path: "skills/x-twitter-scraper/SKILL.md",
24
- get: (t) => {
25
- const match = /^\s*version:\s*"([^"]+)"/m.exec(t);
26
- return match?.[1];
27
- },
28
- },
29
- {
30
- path: "stub-server.mjs",
31
- get: (t) => /version:\s*"([^"]+)"/.exec(t)?.[1],
32
- },
33
- ];
34
-
35
- export const skillFrontmatterExpectations = {
36
- scalars: {
37
- author: "Xquik <support@xquik.com>",
38
- compatibility:
39
- "Requires internet access to call the first-party Xquik REST API.",
40
- "metadata.author": "Xquik",
41
- "metadata.capabilities.network.allowed": true,
42
- "metadata.capabilities.shell.allowed": false,
43
- "metadata.capabilities.filesystem.read": false,
44
- "metadata.capabilities.filesystem.write": false,
45
- "metadata.capabilities.mcp.allowed": true,
46
- "metadata.capabilities.mcp.transport": "native-http-or-oauth-only",
47
- "metadata.capabilities.codeExecution.allowed": false,
48
- "metadata.capabilities.localNetwork.allowed": false,
49
- "metadata.openclaw.primaryEnv": "XQUIK_API_KEY",
50
- "metadata.openclaw.homepage": "https://docs.xquik.com",
51
- "metadata.security.credentialsHandledByAgent": "api-key-only",
52
- "metadata.security.credentialsTransmitted": "xquik-api-key-only",
53
- "metadata.security.xLoginSecretsHandled": false,
54
- "metadata.security.passwordsCollected": false,
55
- "metadata.security.totpCollected": false,
56
- "metadata.security.sessionCookiesCollected": false,
57
- "metadata.security.contentIsolation": "enforced",
58
- "metadata.security.inputValidation": "enforced",
59
- "metadata.security.outputSanitization": "enforced",
60
- "metadata.security.writeConfirmation": "required",
61
- "metadata.security.persistentResourceConfirmation": "required",
62
- "metadata.security.accountChangeExecution": false,
63
- "metadata.security.autonomousPlanChanges": false,
64
- "metadata.security.planChanges": "dashboard-only",
65
- "metadata.security.creditChanges": "dashboard-only",
66
- "metadata.security.mcpTransport": "native-http-or-oauth-only",
67
- "metadata.security.thirdPartyContentIsolation": "explicit-boundary-markers",
68
- "metadata.security.executionModel": "api-only",
69
- "metadata.security.codeExecution": "none",
70
- "metadata.security.localFileAccess": "none",
71
- "metadata.security.localNetworkAccess": "none",
72
- "metadata.security.auditLogging": "enabled",
73
- "metadata.security.rateLimiting": "per-method-tier",
74
- "metadata.security.usageConfirmation": "required",
75
- "metadata.security.securityReference": "references/security.md",
76
- },
77
- arrays: {
78
- tags: ["twitter", "x", "social-media", "api-development", "scraping"],
79
- "metadata.capabilities.network.hosts": ["xquik.com", "docs.xquik.com"],
80
- "metadata.capabilities.environment.required": ["XQUIK_API_KEY"],
81
- "metadata.capabilities.environment.optional": ["XQUIK_WEBHOOK_SECRET"],
82
- "metadata.openclaw.requires.env": ["XQUIK_API_KEY"],
83
- "metadata.security.allowedHosts": ["xquik.com", "docs.xquik.com"],
84
- },
85
- enums: {
86
- "metadata.security.contentTrust": ["mixed"],
87
- },
88
- };
89
-
90
- export const taskGuideFrontmatterExpectations = {
91
- scalars: {
92
- "metadata.internal": true,
93
- "metadata.author": "Xquik",
94
- "metadata.openclaw.primaryEnv": "XQUIK_API_KEY",
95
- "metadata.openclaw.homepage": "https://docs.xquik.com",
96
- "metadata.security.contentIsolation": "enforced",
97
- "metadata.security.promptInjectionDefense": true,
98
- "metadata.security.writeConfirmation": "required",
99
- "metadata.security.usageConfirmation": "required",
100
- "metadata.security.planChanges": "dashboard-only",
101
- "metadata.security.creditChanges": "dashboard-only",
102
- "metadata.security.executionModel": "api-only",
103
- "metadata.security.codeExecution": "none",
104
- "metadata.security.credentialProxy": false,
105
- },
106
- arrays: {
107
- "metadata.openclaw.requires.env": ["XQUIK_API_KEY"],
108
- },
109
- enums: {
110
- "metadata.security.contentTrust": ["trusted", "mixed", "untrusted"],
111
- },
112
- };
113
-
114
- export const manifestReferences = [
115
- [".codex-plugin/plugin.json", "skills"],
116
- [".codex-plugin/plugin.json", "mcpServers"],
117
- [".codex-plugin/plugin.json", "interface.composerIcon"],
118
- [".claude-plugin/plugin.json", "skills"],
119
- [".claude-plugin/plugin.json", "mcpServers"],
120
- ["openclaw.plugin.json", "skills"],
121
- ];
122
-
123
- export const jsonFieldExpectations = [
124
- {
125
- path: "package.json",
126
- fields: {
127
- name: "x-developer",
128
- "author.name": "Xquik",
129
- "author.url": "https://docs.xquik.com",
130
- homepage: "https://docs.xquik.com",
131
- license: "MIT",
132
- "repository.url": "git+https://github.com/Xquik-dev/x-twitter-scraper.git",
133
- "bugs.url": "https://github.com/Xquik-dev/x-twitter-scraper/issues",
134
- },
135
- },
136
- {
137
- path: "openclaw.plugin.json",
138
- fields: {
139
- id: "x-developer",
140
- name: "X Developer API",
141
- "skills.0": "./skills",
142
- "providerAuthEnvVars.xquik.0": "XQUIK_API_KEY",
143
- "uiHints.apiKey.sensitive": true,
144
- "configSchema.additionalProperties": false,
145
- },
146
- },
147
- {
148
- path: ".codex-plugin/plugin.json",
149
- fields: {
150
- name: "x-twitter-scraper",
151
- "author.name": "Xquik",
152
- homepage: "https://docs.xquik.com",
153
- repository: "https://github.com/Xquik-dev/x-twitter-scraper",
154
- license: "MIT",
155
- skills: "./skills/",
156
- mcpServers: "./.mcp.json",
157
- "interface.developerName": "Xquik",
158
- "interface.websiteURL": "https://docs.xquik.com",
159
- "interface.privacyPolicyURL": "https://xquik.com/privacy",
160
- "interface.termsOfServiceURL": "https://xquik.com/terms",
161
- },
162
- },
163
- {
164
- path: ".claude-plugin/plugin.json",
165
- fields: {
166
- name: "x-twitter-scraper",
167
- "author.name": "Xquik",
168
- homepage: "https://docs.xquik.com",
169
- repository: "https://github.com/Xquik-dev/x-twitter-scraper",
170
- license: "MIT",
171
- skills: "./skills/",
172
- mcpServers: "./.mcp.json",
173
- "userConfig.api_key.sensitive": true,
174
- },
175
- },
176
- {
177
- path: ".claude-plugin/marketplace.json",
178
- fields: {
179
- name: "x-twitter-scraper",
180
- "owner.name": "Xquik",
181
- "owner.email": "support@xquik.com",
182
- "plugins.0.name": "x-twitter-scraper",
183
- "plugins.0.homepage": "https://docs.xquik.com",
184
- "plugins.0.repository": "https://github.com/Xquik-dev/x-twitter-scraper",
185
- "plugins.0.license": "MIT",
186
- },
187
- },
188
- {
189
- path: "server.json",
190
- fields: {
191
- name: "com.xquik/mcp",
192
- title: "Xquik MCP Server",
193
- "repository.url": "https://github.com/Xquik-dev/x-twitter-scraper",
194
- "repository.source": "github",
195
- websiteUrl: "https://docs.xquik.com/mcp/overview",
196
- "remotes.0.type": "streamable-http",
197
- "remotes.0.url": "https://xquik.com/mcp",
198
- },
199
- },
200
- {
201
- path: "skills/x-twitter-scraper/metadata.json",
202
- fields: {
203
- organization: "Xquik",
204
- homepage: "https://docs.xquik.com",
205
- repository: "https://github.com/Xquik-dev/x-twitter-scraper",
206
- license: "MIT",
207
- "security.defaultMode": "read-only-public-data",
208
- "security.localExecution": false,
209
- "security.localFileAccess": false,
210
- "security.localNetworkAccess": false,
211
- "security.untrustedContentBoundaries": true,
212
- },
213
- },
214
- ];
215
-
216
- export const markdownRoots = [
217
- ".github",
218
- "commands",
219
- "docker-mcp-registry",
220
- "mcpize",
221
- "skills",
222
- "task-guides",
223
- ];
@@ -1,31 +0,0 @@
1
- # Xquik REST API Endpoints: API Keys
2
-
3
- Session auth only. These endpoints do not accept API key auth.
4
-
5
- ### Create API Key
6
-
7
- ```
8
- POST /api-keys
9
- ```
10
-
11
- **Body:** `{ "name": "My Key" }` (optional)
12
-
13
- **Response:** Returns `fullKey` (shown only once), `prefix`, `name`, `id`, `createdAt`.
14
-
15
- ### List API Keys
16
-
17
- ```
18
- GET /api-keys
19
- ```
20
-
21
- Returns all keys with `id`, `name`, `prefix`, `isActive`, `createdAt`, `lastUsedAt`. Full key is never exposed.
22
-
23
- ### Revoke API Key
24
-
25
- ```
26
- delete request to `/api-keys/{id}`
27
- ```
28
-
29
- Permanent and irreversible. The key stops working immediately.
30
-
31
- ---
@@ -1,33 +0,0 @@
1
- # Xquik REST API Endpoints: Compose
2
-
3
- ### Compose Tweet
4
-
5
- ```
6
- POST /compose
7
- ```
8
-
9
- Compose, refine, and score tweets with Xquik style signals. Three-step workflow.
10
-
11
- **Body:**
12
-
13
- | Field | Type | Required | Description |
14
- |-------|------|----------|-------------|
15
- | `step` | string | Yes | `compose`, `refine`, or `score` |
16
- | `topic` | string | No | Tweet topic (compose, refine) |
17
- | `goal` | string | No | `engagement`, `followers`, `authority`, `conversation` |
18
- | `styleUsername` | string | No | Cached style username for voice matching (compose) |
19
- | `tone` | string | No | Desired tone (refine) |
20
- | `additionalContext` | string | No | Extra context or URLs (refine) |
21
- | `callToAction` | string | No | Desired CTA (refine) |
22
- | `mediaType` | string | No | `photo`, `video`, `none` (refine) |
23
- | `draft` | string | No | Tweet text to evaluate (score) |
24
- | `hasLink` | boolean | No | Link attached (score) |
25
- | `hasMedia` | boolean | No | Media attached (score) |
26
-
27
- **Response (step=compose):** Returns `contentRules`, `scorerWeights`, `followUpQuestions`, `algorithmInsights`, `engagementMultipliers`, `topPenalties`.
28
-
29
- **Response (step=refine):** Returns `compositionGuidance`, `examplePatterns`.
30
-
31
- **Response (step=score):** Returns `totalChecks`, `passedCount`, `topSuggestion`, `checklist[]` with `factor`, `passed`, `suggestion`.
32
-
33
- ---
@@ -1,11 +0,0 @@
1
- # Xquik REST API Endpoints: Credits
2
-
3
- ### Get Credit Balance
4
-
5
- ```
6
- GET /credits
7
- ```
8
-
9
- Get credit balance and lifetime usage fields. Plan and credit changes are dashboard-only and intentionally omitted from this installable skill.
10
-
11
- ---
@@ -1,86 +0,0 @@
1
- # Xquik REST API Endpoints: Drafts
2
-
3
- ### Create Draft
4
-
5
- `POST /drafts`
6
-
7
- Save a tweet draft for later.
8
-
9
- **Request body:**
10
-
11
- | Field | Type | Required | Description |
12
- |-------|------|----------|-------------|
13
- | `text` | string | Yes | The draft tweet text |
14
- | `topic` | string | No | Topic the tweet is about |
15
- | `goal` | string | No | Optimization goal: `engagement`, `followers`, `authority`, `conversation` |
16
-
17
- **Response (201):**
18
-
19
- ```json
20
- {
21
- "id": "123",
22
- "text": "draft text",
23
- "topic": "product launch",
24
- "goal": "engagement",
25
- "createdAt": "2026-02-24T10:30:00.000Z",
26
- "updatedAt": "2026-02-24T10:30:00.000Z"
27
- }
28
- ```
29
-
30
- ---
31
-
32
- ### List Drafts
33
-
34
- `GET /drafts`
35
-
36
- List saved tweet drafts with cursor pagination.
37
-
38
- **Query parameters:**
39
-
40
- | Parameter | Type | Required | Default | Description |
41
- |-----------|------|----------|---------|-------------|
42
- | `limit` | number | No | 50 | Results per page (max 50) |
43
- | `afterCursor` | string | No | - | Pagination cursor from previous response |
44
-
45
- **Response (200):**
46
-
47
- ```json
48
- {
49
- "drafts": [
50
- {
51
- "id": "123",
52
- "text": "draft text",
53
- "topic": "product launch",
54
- "goal": "engagement",
55
- "createdAt": "2026-02-24T10:30:00.000Z",
56
- "updatedAt": "2026-02-24T10:30:00.000Z"
57
- }
58
- ],
59
- "afterCursor": "cursor_string",
60
- "hasMore": true
61
- }
62
- ```
63
-
64
- ---
65
-
66
- ### Get Draft
67
-
68
- `GET /drafts/{id}`
69
-
70
- Get a specific draft by ID.
71
-
72
- **Response (200):** Single draft object.
73
-
74
- **Errors:** `400 invalid_id`, `404 draft_not_found`
75
-
76
- ---
77
-
78
- ### Delete Draft
79
-
80
- delete request to `/drafts/{id}`
81
-
82
- Delete a draft. Returns `204 No Content`.
83
-
84
- **Errors:** `400 invalid_id`, `404 draft_not_found`
85
-
86
- ---
@@ -1,75 +0,0 @@
1
- # Xquik REST API Endpoints: Draws
2
-
3
- ### Create Draw
4
-
5
- ```
6
- POST /draws
7
- ```
8
-
9
- Run a giveaway draw from a tweet. Picks random winners from replies.
10
-
11
- **Body:**
12
- ```json
13
- {
14
- "tweetUrl": "https://x.com/user/status/1893456789012345678",
15
- "winnerCount": 3,
16
- "backupCount": 2,
17
- "uniqueAuthorsOnly": true,
18
- "mustRetweet": true,
19
- "mustFollowUsername": "burakbayir",
20
- "filterMinFollowers": 100,
21
- "filterAccountAgeDays": 30,
22
- "filterLanguage": "en",
23
- "requiredKeywords": ["giveaway"],
24
- "requiredHashtags": ["#contest"],
25
- "requiredMentions": ["@xquik"]
26
- }
27
- ```
28
-
29
- All filter fields are optional. Only `tweetUrl` is required.
30
-
31
- **Response:**
32
- ```json
33
- {
34
- "id": "42",
35
- "tweetId": "1893456789012345678",
36
- "tweetUrl": "https://x.com/user/status/1893456789012345678",
37
- "tweetText": "Like & RT to enter! Picking 3 winners tomorrow.",
38
- "tweetAuthorUsername": "xquik",
39
- "tweetLikeCount": 4200,
40
- "tweetRetweetCount": 1800,
41
- "tweetReplyCount": 1500,
42
- "tweetQuoteCount": 120,
43
- "status": "completed",
44
- "totalEntries": 1500,
45
- "validEntries": 890,
46
- "createdAt": "2026-02-24T10:00:00.000Z",
47
- "drawnAt": "2026-02-24T10:01:00.000Z"
48
- }
49
- ```
50
-
51
- ### List Draws
52
-
53
- ```
54
- GET /draws
55
- ```
56
-
57
- Cursor-paginated. Returns compact draw objects.
58
-
59
- ### Get Draw
60
-
61
- ```
62
- GET /draws/{id}
63
- ```
64
-
65
- Returns full draw details including winners.
66
-
67
- ### Export Draw
68
-
69
- ```
70
- GET /draws/{id}/export?format=csv&type=winners
71
- ```
72
-
73
- Formats: `csv`, `json`, `md`, `md-document`, `pdf`, `txt`, `xlsx`. Types: `winners` (default), `entries`. Entry exports capped at 100,000 rows (PDF capped at 10,000).
74
-
75
- ---
@@ -1,37 +0,0 @@
1
- # Xquik REST API Endpoints: Error Codes
2
-
3
- | Status | Code | Meaning |
4
- |--------|------|---------|
5
- | 400 | `invalid_input` | Request body failed validation |
6
- | 400 | `invalid_id` | Path parameter is not a valid ID |
7
- | 400 | `invalid_json` | Invalid JSON in request body |
8
- | 400 | `invalid_tweet_url` | Tweet URL format is invalid |
9
- | 400 | `invalid_tweet_id` | Tweet ID is empty or invalid |
10
- | 400 | `invalid_username` | X username is empty or invalid |
11
- | 400 | `invalid_tool_type` | Extraction tool type not recognized |
12
- | 400 | `invalid_format` | Export format not `csv`, `json`, `md`, `md-document`, `pdf`, `txt`, or `xlsx` |
13
- | 400 | `invalid_params` | Export query parameters are missing or invalid |
14
- | 400 | `missing_query` | Required query parameter is missing |
15
- | 400 | `missing_params` | Required query parameters are missing |
16
- | 400 | `no_media` | Tweet has no downloadable media |
17
- | 400 | `webhook_inactive` | Webhook is disabled (test-webhook only) |
18
- | 401 | `unauthenticated` | Missing or invalid API key |
19
- | 403 | `account_needs_reauth` | X account session expired; use dashboard re-auth flow |
20
- | 402 | `no_subscription` | No active plan |
21
- | 402 | `subscription_inactive` | Plan is not active |
22
- | 402 | `no_credits` | No credit balance record exists |
23
- | 402 | `insufficient_credits` | Credit balance is too low |
24
- | 403 | `api_key_limit_reached` | API key limit reached (100 max) |
25
- | 404 | `not_found` | Resource does not exist |
26
- | 404 | `user_not_found` | X user not found |
27
- | 404 | `tweet_not_found` | Tweet not found |
28
- | 404 | `style_not_found` | No cached style found |
29
- | 404 | `draft_not_found` | Draft not found |
30
- | 409 | `monitor_already_exists` | Duplicate monitor for same username |
31
- | 422 | `login_failed` | Account connection failed; use dashboard re-auth flow |
32
- | 429 | - | Rate limited. Retry with backoff |
33
- | 429 | `x_api_rate_limited` | X data source rate limited. Retry |
34
- | 500 | `internal_error` | Server error |
35
- | 502 | `stream_registration_failed` | Stream registration failed. Retry |
36
- | 502 | `x_api_unavailable` | X data source temporarily unavailable |
37
- | 502 | `x_api_unauthorized` | X data source authentication failed. Retry |
@@ -1,48 +0,0 @@
1
- # Xquik REST API Endpoints: Events
2
-
3
- ### List Events
4
-
5
- ```
6
- GET /events
7
- ```
8
-
9
- **Query parameters:**
10
-
11
- | Param | Type | Description |
12
- |-------|------|-------------|
13
- | `monitorId` | string | Filter by monitor ID |
14
- | `eventType` | string | Filter by event type |
15
- | `limit` | number | Results per page (1-100, default 50) |
16
- | `after` | string | Cursor for next page |
17
-
18
- **Response:**
19
- ```json
20
- {
21
- "events": [
22
- {
23
- "id": "9010",
24
- "type": "tweet.new",
25
- "monitorId": "7",
26
- "username": "elonmusk",
27
- "occurredAt": "2026-02-24T16:45:00.000Z",
28
- "data": {
29
- "tweetId": "1893556789012345678",
30
- "text": "Hello world",
31
- "metrics": { "likes": 3200, "retweets": 890, "replies": 245 }
32
- }
33
- }
34
- ],
35
- "hasMore": true,
36
- "nextCursor": "MjAyNi0wMi0yNFQxNjozMDowMC4wMDBa..."
37
- }
38
- ```
39
-
40
- ### Get Event
41
-
42
- ```
43
- GET /events/{id}
44
- ```
45
-
46
- Returns a single event with full details.
47
-
48
- ---
@@ -1,97 +0,0 @@
1
- # Xquik REST API Endpoints: Extractions
2
-
3
- ### Create Extraction
4
-
5
- ```
6
- POST /extractions
7
- ```
8
-
9
- Run a bulk data extraction job. See `references/extractions.md` for all 23 tool types.
10
-
11
- **Body:**
12
- ```json
13
- {
14
- "toolType": "reply_extractor",
15
- "targetTweetId": "1893704267862470862",
16
- "resultsLimit": 500
17
- }
18
- ```
19
-
20
- `resultsLimit` (optional): Maximum results to extract. Stops early instead of fetching all data. Useful for controlling usage.
21
-
22
- **Tweet Search Filters** (`tweet_search_extractor` only):
23
-
24
- | Field | Type | Description |
25
- |-------|------|-------------|
26
- | `fromUser` | string | Author username |
27
- | `toUser` | string | Directed to user |
28
- | `mentioning` | string | Mentions user |
29
- | `language` | string | Language code (e.g., `en`) |
30
- | `sinceDate` | string | Start date (YYYY-MM-DD) |
31
- | `untilDate` | string | End date (YYYY-MM-DD) |
32
- | `mediaType` | string | `images`, `videos`, `gifs`, or `media` |
33
- | `minFaves` | number | Minimum likes |
34
- | `minRetweets` | number | Minimum retweets |
35
- | `minReplies` | number | Minimum replies |
36
- | `verifiedOnly` | boolean | Verified authors only |
37
- | `replies` | string | `include`, `exclude`, or `only` |
38
- | `retweets` | string | `include`, `exclude`, or `only` |
39
- | `exactPhrase` | string | Exact match text |
40
- | `excludeWords` | string | Comma-separated words to exclude |
41
- | `advancedQuery` | string | Raw X search operators appended to query |
42
-
43
- These filters are converted to X search operators and combined with `searchQuery`.
44
-
45
- **Response:**
46
- ```json
47
- {
48
- "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
49
- "toolType": "reply_extractor",
50
- "status": "running"
51
- }
52
- ```
53
-
54
- ### Estimate Extraction
55
-
56
- ```
57
- POST /extractions/estimate
58
- ```
59
-
60
- Preview usage before running. Same body as create.
61
-
62
- **Response:**
63
- ```json
64
- {
65
- "allowed": true,
66
- "creditsAvailable": "50000",
67
- "creditsRequired": "150",
68
- "source": "replyCount",
69
- "estimatedResults": 150
70
- }
71
- ```
72
-
73
- ### List Extractions
74
-
75
- ```
76
- GET /extractions
77
- ```
78
-
79
- Cursor-paginated. Filter by `status` and `toolType`.
80
-
81
- ### Get Extraction
82
-
83
- ```
84
- GET /extractions/{id}
85
- ```
86
-
87
- Returns job details with paginated results (up to 1,000 per page).
88
-
89
- ### Export Extraction
90
-
91
- ```
92
- GET /extractions/{id}/export?format=csv
93
- ```
94
-
95
- Formats: `csv`, `json`, `md`, `md-document`, `pdf`, `txt`, `xlsx`. 100,000 row limit (PDF 10,000). Exports include enrichment columns not in the API response.
96
-
97
- ---