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.
- package/.claude-plugin/marketplace.json +60 -0
- package/.claude-plugin/plugin.json +45 -0
- package/.codex-plugin/plugin.json +61 -0
- package/.mcp.json +8 -0
- package/LICENSE +21 -0
- package/README.md +279 -0
- package/assets/icon.svg +1 -0
- package/commands/post.md +15 -0
- package/commands/search.md +16 -0
- package/commands/trending.md +17 -0
- package/commands/user.md +19 -0
- package/context7.json +33 -0
- package/logo.png +0 -0
- package/openclaw.plugin.json +25 -0
- package/package.json +79 -0
- package/scripts/check-versions.mjs +381 -0
- package/scripts/release-guard/content-policy.mjs +337 -0
- package/scripts/release-guard/frontmatter.mjs +148 -0
- package/scripts/release-guard/policy.mjs +223 -0
- package/server.json +18 -0
- package/skills/x-twitter-scraper/SKILL.md +387 -0
- package/skills/x-twitter-scraper/metadata.json +38 -0
- package/skills/x-twitter-scraper/references/api-endpoints-api-keys.md +31 -0
- package/skills/x-twitter-scraper/references/api-endpoints-compose.md +33 -0
- package/skills/x-twitter-scraper/references/api-endpoints-credits.md +11 -0
- package/skills/x-twitter-scraper/references/api-endpoints-drafts.md +86 -0
- package/skills/x-twitter-scraper/references/api-endpoints-draws.md +75 -0
- package/skills/x-twitter-scraper/references/api-endpoints-error-codes.md +37 -0
- package/skills/x-twitter-scraper/references/api-endpoints-events.md +48 -0
- package/skills/x-twitter-scraper/references/api-endpoints-extractions.md +97 -0
- package/skills/x-twitter-scraper/references/api-endpoints-monitors.md +74 -0
- package/skills/x-twitter-scraper/references/api-endpoints-radar.md +49 -0
- package/skills/x-twitter-scraper/references/api-endpoints-support.md +47 -0
- package/skills/x-twitter-scraper/references/api-endpoints-trends.md +25 -0
- package/skills/x-twitter-scraper/references/api-endpoints-tweet-style-cache.md +155 -0
- package/skills/x-twitter-scraper/references/api-endpoints-webhooks.md +74 -0
- package/skills/x-twitter-scraper/references/api-endpoints-x-accounts.md +42 -0
- package/skills/x-twitter-scraper/references/api-endpoints-x-api.md +206 -0
- package/skills/x-twitter-scraper/references/api-endpoints-x-media.md +40 -0
- package/skills/x-twitter-scraper/references/api-endpoints-x-write.md +204 -0
- package/skills/x-twitter-scraper/references/api-endpoints.md +30 -0
- package/skills/x-twitter-scraper/references/draws.md +57 -0
- package/skills/x-twitter-scraper/references/extractions.md +237 -0
- package/skills/x-twitter-scraper/references/mcp-setup.md +273 -0
- package/skills/x-twitter-scraper/references/mcp-tools.md +174 -0
- package/skills/x-twitter-scraper/references/python-examples.md +182 -0
- package/skills/x-twitter-scraper/references/security.md +124 -0
- package/skills/x-twitter-scraper/references/types-account-identity.md +9 -0
- package/skills/x-twitter-scraper/references/types-account.md +26 -0
- package/skills/x-twitter-scraper/references/types-api-keys.md +22 -0
- package/skills/x-twitter-scraper/references/types-bookmarks-and-timeline.md +46 -0
- package/skills/x-twitter-scraper/references/types-credits.md +11 -0
- package/skills/x-twitter-scraper/references/types-download-media.md +22 -0
- package/skills/x-twitter-scraper/references/types-draws.md +60 -0
- package/skills/x-twitter-scraper/references/types-error.md +10 -0
- package/skills/x-twitter-scraper/references/types-events.md +43 -0
- package/skills/x-twitter-scraper/references/types-extractions.md +106 -0
- package/skills/x-twitter-scraper/references/types-mcp-add-webhook.md +14 -0
- package/skills/x-twitter-scraper/references/types-mcp-check-follow.md +10 -0
- package/skills/x-twitter-scraper/references/types-mcp-compose-tweet.md +31 -0
- package/skills/x-twitter-scraper/references/types-mcp-estimate-extraction.md +15 -0
- package/skills/x-twitter-scraper/references/types-mcp-get-account.md +26 -0
- package/skills/x-twitter-scraper/references/types-mcp-get-draw.md +30 -0
- package/skills/x-twitter-scraper/references/types-mcp-get-events.md +19 -0
- package/skills/x-twitter-scraper/references/types-mcp-get-trends.md +16 -0
- package/skills/x-twitter-scraper/references/types-mcp-get-user-info.md +16 -0
- package/skills/x-twitter-scraper/references/types-mcp-list-monitors.md +15 -0
- package/skills/x-twitter-scraper/references/types-mcp-lookup-tweet.md +25 -0
- package/skills/x-twitter-scraper/references/types-mcp-output-schemas.md +22 -0
- package/skills/x-twitter-scraper/references/types-mcp-refine-tweet.md +13 -0
- package/skills/x-twitter-scraper/references/types-mcp-run-draw.md +18 -0
- package/skills/x-twitter-scraper/references/types-mcp-run-extraction.md +12 -0
- package/skills/x-twitter-scraper/references/types-mcp-score-tweet.md +16 -0
- package/skills/x-twitter-scraper/references/types-mcp-search-tweets.md +17 -0
- package/skills/x-twitter-scraper/references/types-mcp-test-webhook.md +11 -0
- package/skills/x-twitter-scraper/references/types-monitors.md +20 -0
- package/skills/x-twitter-scraper/references/types-radar.md +40 -0
- package/skills/x-twitter-scraper/references/types-request-bodies.md +30 -0
- package/skills/x-twitter-scraper/references/types-rest-api-vs-mcp-field-naming.md +15 -0
- package/skills/x-twitter-scraper/references/types-support.md +25 -0
- package/skills/x-twitter-scraper/references/types-trends.md +18 -0
- package/skills/x-twitter-scraper/references/types-tweet-drafts.md +20 -0
- package/skills/x-twitter-scraper/references/types-tweet-style-cache.md +50 -0
- package/skills/x-twitter-scraper/references/types-user-activity.md +35 -0
- package/skills/x-twitter-scraper/references/types-webhooks.md +38 -0
- package/skills/x-twitter-scraper/references/types-x-accounts.md +16 -0
- package/skills/x-twitter-scraper/references/types-x-api.md +69 -0
- package/skills/x-twitter-scraper/references/types-x-articles.md +21 -0
- package/skills/x-twitter-scraper/references/types-x-write.md +39 -0
- package/skills/x-twitter-scraper/references/types.md +48 -0
- package/skills/x-twitter-scraper/references/usage.md +50 -0
- package/skills/x-twitter-scraper/references/webhooks.md +243 -0
- package/skills/x-twitter-scraper/references/workflows.md +202 -0
- package/skills/x-twitter-scraper/skill-card.md +76 -0
- package/skills/x-twitter-scraper/skillspector-report.md +17 -0
- package/skills/xquik-social-research/LICENSE +21 -0
- package/skills/xquik-social-research/SKILL.md +77 -0
- package/skills.sh.json +77 -0
- package/start.sh +2 -0
- package/stub-server.mjs +209 -0
- package/task-guides/check-mutuals.md +55 -0
- package/task-guides/clean-followers.md +71 -0
- package/task-guides/export-tweets-csv.md +70 -0
- package/task-guides/extract-followers.md +83 -0
- package/task-guides/find-bangers.md +61 -0
- package/task-guides/find-influencers.md +72 -0
- package/task-guides/find-viral-tweets.md +80 -0
- package/task-guides/follow-unfollow.md +83 -0
- package/task-guides/for-you-feed.md +63 -0
- package/task-guides/going-viral.md +68 -0
- package/task-guides/grow-followers.md +66 -0
- package/task-guides/monitor-accounts.md +81 -0
- package/task-guides/optimize-tweets.md +80 -0
- package/task-guides/post-tweets.md +108 -0
- package/task-guides/run-giveaway.md +90 -0
- package/task-guides/search-tweets.md +122 -0
- package/task-guides/send-dms.md +92 -0
- package/task-guides/top-replies.md +71 -0
- package/task-guides/track-competitors.md +73 -0
- package/task-guides/track-hashtags.md +86 -0
- package/task-guides/track-mentions.md +88 -0
- package/task-guides/trending-news.md +68 -0
- package/task-guides/tweet-analytics.md +129 -0
- package/task-guides/tweet-ideas.md +65 -0
- package/task-guides/tweet-replies.md +82 -0
- package/task-guides/tweet-style.md +72 -0
- package/task-guides/tweet-webhooks.md +84 -0
- package/task-guides/update-x-profile.md +75 -0
- package/task-guides/user-tweets.md +148 -0
- package/task-guides/who-liked.md +68 -0
- package/task-guides/who-quoted.md +68 -0
- package/task-guides/who-retweeted.md +67 -0
- package/task-guides/write-threads.md +72 -0
- package/task-guides/write-tweets.md +84 -0
- package/task-guides/x-articles.md +84 -0
- package/task-guides/x-bookmarks.md +63 -0
- package/task-guides/x-communities.md +71 -0
- package/task-guides/x-lists.md +70 -0
- package/task-guides/x-spaces.md +67 -0
- 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
|
+
---
|