x-developer 2.6.7 → 2.7.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.
- package/.claude-plugin/marketplace.json +4 -4
- package/.claude-plugin/plugin.json +2 -27
- package/.codex-plugin/plugin.json +4 -28
- package/README.de.md +505 -0
- package/README.es.md +504 -0
- package/README.fr.md +507 -0
- package/README.it.md +499 -0
- package/README.ja.md +493 -0
- package/README.ko.md +494 -0
- package/README.md +486 -123
- package/README.tr.md +502 -0
- package/README.zh-CN.md +484 -0
- package/assets/logo-400.png +0 -0
- package/commands/post.md +3 -3
- package/commands/search.md +1 -1
- package/commands/trending.md +1 -1
- package/commands/user.md +1 -1
- package/context7.json +6 -12
- package/docker-mcp-registry/xquik/readme.md +1 -0
- package/docker-mcp-registry/xquik/server.yaml +23 -0
- package/docker-mcp-registry/xquik/tools.json +1 -0
- package/glama.json +4 -0
- package/mcp.json +9 -0
- package/openclaw.plugin.json +2 -2
- package/package.json +24 -20
- package/plugin.json +22 -0
- package/registry.json +60 -0
- package/server.json +2 -2
- package/skills/x-twitter-scraper/LICENSE +21 -0
- package/skills/x-twitter-scraper/SKILL.md +175 -457
- package/skills/x-twitter-scraper/metadata.json +19 -9
- package/skills/x-twitter-scraper/references/compare-faq.md +101 -0
- package/skills/x-twitter-scraper/references/extractions.md +65 -290
- package/skills/x-twitter-scraper/references/mcp.md +24 -0
- package/skills/x-twitter-scraper/references/monitors-webhooks.md +167 -0
- package/skills/x-twitter-scraper/references/reads.md +416 -0
- package/skills/x-twitter-scraper/references/writes.md +111 -0
- package/skills/xquik-mcp/SKILL.md +75 -0
- package/skills/xquik-mcp/references/mcp-setup.md +255 -0
- package/skills/xquik-social-research/SKILL.md +61 -74
- package/skills.sh.json +6 -68
- package/start.sh +2 -2
- package/stub-server.mjs +37 -86
- package/task-guides/check-mutuals.md +3 -3
- package/task-guides/clean-followers.md +4 -4
- package/task-guides/export-tweets-csv.md +7 -7
- package/task-guides/extract-followers.md +10 -10
- package/task-guides/find-bangers.md +2 -2
- package/task-guides/find-influencers.md +4 -4
- package/task-guides/find-viral-tweets.md +9 -9
- package/task-guides/follow-unfollow.md +5 -5
- package/task-guides/for-you-feed.md +4 -4
- package/task-guides/going-viral.md +6 -6
- package/task-guides/grow-followers.md +4 -4
- package/task-guides/monitor-accounts.md +5 -5
- package/task-guides/optimize-tweets.md +3 -3
- package/task-guides/post-tweets.md +13 -13
- package/task-guides/run-giveaway.md +5 -5
- package/task-guides/search-tweets.md +7 -7
- package/task-guides/send-dms.md +11 -11
- package/task-guides/top-replies.md +7 -7
- package/task-guides/track-competitors.md +10 -10
- package/task-guides/track-hashtags.md +11 -11
- package/task-guides/track-mentions.md +7 -7
- package/task-guides/trending-news.md +4 -4
- package/task-guides/tweet-analytics.md +12 -12
- package/task-guides/tweet-ideas.md +2 -2
- package/task-guides/tweet-replies.md +8 -8
- package/task-guides/tweet-style.md +4 -4
- package/task-guides/tweet-webhooks.md +7 -7
- package/task-guides/update-x-profile.md +5 -5
- package/task-guides/user-tweets.md +10 -10
- package/task-guides/who-liked.md +4 -4
- package/task-guides/who-quoted.md +4 -4
- package/task-guides/who-retweeted.md +4 -4
- package/task-guides/write-threads.md +6 -6
- package/task-guides/write-tweets.md +8 -8
- package/task-guides/x-articles.md +3 -3
- package/task-guides/x-bookmarks.md +4 -4
- package/task-guides/x-communities.md +4 -4
- package/task-guides/x-lists.md +4 -4
- package/task-guides/x-spaces.md +4 -4
- package/task-guides/x-trends.md +6 -6
- package/x-twitter-scraper.json +10 -0
- package/CHANGELOG.md +0 -94
- package/scripts/check-reproducible.mjs +0 -48
- package/scripts/check-versions.mjs +0 -24
- package/scripts/release-guard/content-policy.mjs +0 -410
- package/scripts/release-guard/context.mjs +0 -61
- package/scripts/release-guard/frontmatter.mjs +0 -151
- package/scripts/release-guard/policy-checks.mjs +0 -134
- package/scripts/release-guard/policy.mjs +0 -226
- package/scripts/release-guard/repository-checks.mjs +0 -256
- package/skills/x-twitter-scraper/references/api-endpoints-api-keys.md +0 -14
- package/skills/x-twitter-scraper/references/api-endpoints-compose.md +0 -33
- package/skills/x-twitter-scraper/references/api-endpoints-credits.md +0 -11
- package/skills/x-twitter-scraper/references/api-endpoints-drafts.md +0 -105
- package/skills/x-twitter-scraper/references/api-endpoints-draws.md +0 -101
- package/skills/x-twitter-scraper/references/api-endpoints-error-codes.md +0 -67
- package/skills/x-twitter-scraper/references/api-endpoints-events.md +0 -50
- package/skills/x-twitter-scraper/references/api-endpoints-extractions.md +0 -113
- package/skills/x-twitter-scraper/references/api-endpoints-monitors.md +0 -111
- package/skills/x-twitter-scraper/references/api-endpoints-radar.md +0 -50
- package/skills/x-twitter-scraper/references/api-endpoints-support.md +0 -53
- package/skills/x-twitter-scraper/references/api-endpoints-trends.md +0 -48
- package/skills/x-twitter-scraper/references/api-endpoints-tweet-style-cache.md +0 -186
- package/skills/x-twitter-scraper/references/api-endpoints-webhooks.md +0 -120
- package/skills/x-twitter-scraper/references/api-endpoints-x-accounts.md +0 -54
- package/skills/x-twitter-scraper/references/api-endpoints-x-api.md +0 -267
- package/skills/x-twitter-scraper/references/api-endpoints-x-media.md +0 -50
- package/skills/x-twitter-scraper/references/api-endpoints-x-write.md +0 -270
- package/skills/x-twitter-scraper/references/api-endpoints.md +0 -30
- package/skills/x-twitter-scraper/references/automate-twitter-giveaways.md +0 -130
- package/skills/x-twitter-scraper/references/best-x-api-alternative.md +0 -198
- package/skills/x-twitter-scraper/references/compare-twitter-apis.md +0 -151
- package/skills/x-twitter-scraper/references/draws.md +0 -57
- package/skills/x-twitter-scraper/references/export-twitter-followers.md +0 -127
- package/skills/x-twitter-scraper/references/extract-x-community-data.md +0 -121
- package/skills/x-twitter-scraper/references/mcp-setup.md +0 -331
- package/skills/x-twitter-scraper/references/mcp-tools.md +0 -183
- package/skills/x-twitter-scraper/references/monitor-twitter-webhooks.md +0 -121
- package/skills/x-twitter-scraper/references/python-examples.md +0 -201
- package/skills/x-twitter-scraper/references/reliable-twitter-data-api-2026.md +0 -239
- package/skills/x-twitter-scraper/references/scrape-export-twitter-data.md +0 -173
- package/skills/x-twitter-scraper/references/security.md +0 -111
- package/skills/x-twitter-scraper/references/track-twitter-keywords-mentions.md +0 -148
- package/skills/x-twitter-scraper/references/twitter-api-alternative-faq.md +0 -128
- package/skills/x-twitter-scraper/references/twitter-api-without-x-account.md +0 -110
- package/skills/x-twitter-scraper/references/twitter-data-pipeline.md +0 -136
- package/skills/x-twitter-scraper/references/twitter-scraper-api-guide.md +0 -229
- package/skills/x-twitter-scraper/references/types-account-identity.md +0 -9
- package/skills/x-twitter-scraper/references/types-account.md +0 -26
- package/skills/x-twitter-scraper/references/types-api-keys.md +0 -22
- package/skills/x-twitter-scraper/references/types-bookmarks-and-timeline.md +0 -46
- package/skills/x-twitter-scraper/references/types-credits.md +0 -11
- package/skills/x-twitter-scraper/references/types-download-media.md +0 -22
- package/skills/x-twitter-scraper/references/types-draws.md +0 -60
- package/skills/x-twitter-scraper/references/types-error.md +0 -29
- package/skills/x-twitter-scraper/references/types-events.md +0 -23
- package/skills/x-twitter-scraper/references/types-extractions.md +0 -136
- package/skills/x-twitter-scraper/references/types-mcp-output-schemas.md +0 -13
- package/skills/x-twitter-scraper/references/types-monitors.md +0 -49
- package/skills/x-twitter-scraper/references/types-radar.md +0 -47
- package/skills/x-twitter-scraper/references/types-request-bodies.md +0 -30
- package/skills/x-twitter-scraper/references/types-rest-api-vs-mcp-field-naming.md +0 -11
- package/skills/x-twitter-scraper/references/types-support.md +0 -46
- package/skills/x-twitter-scraper/references/types-trends.md +0 -21
- package/skills/x-twitter-scraper/references/types-tweet-drafts.md +0 -20
- package/skills/x-twitter-scraper/references/types-tweet-style-cache.md +0 -50
- package/skills/x-twitter-scraper/references/types-user-activity.md +0 -35
- package/skills/x-twitter-scraper/references/types-webhooks.md +0 -46
- package/skills/x-twitter-scraper/references/types-x-accounts.md +0 -16
- package/skills/x-twitter-scraper/references/types-x-api.md +0 -144
- package/skills/x-twitter-scraper/references/types-x-articles.md +0 -36
- package/skills/x-twitter-scraper/references/types-x-write.md +0 -78
- package/skills/x-twitter-scraper/references/types.md +0 -31
- package/skills/x-twitter-scraper/references/usage.md +0 -50
- package/skills/x-twitter-scraper/references/webhooks.md +0 -321
- package/skills/x-twitter-scraper/references/workflows.md +0 -215
- package/skills/x-twitter-scraper/skill-card.md +0 -84
- package/skills/x-twitter-scraper/skillspector-report.md +0 -20
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
# Xquik REST API endpoints: drafts
|
|
2
|
-
|
|
3
|
-
## Require approval for drafts
|
|
4
|
-
|
|
5
|
-
`GET` operations expose private saved content. State the exact draft scope and
|
|
6
|
-
obtain explicit approval immediately before each read. `POST` and `DELETE`
|
|
7
|
-
operations are non-default writes. Show the exact draft text or draft ID and
|
|
8
|
-
obtain explicit approval immediately before each write. Never infer approval
|
|
9
|
-
from an earlier request or retry a failed write automatically.
|
|
10
|
-
|
|
11
|
-
### Create draft
|
|
12
|
-
|
|
13
|
-
`POST /drafts`
|
|
14
|
-
|
|
15
|
-
Save a tweet draft for later.
|
|
16
|
-
|
|
17
|
-
Get approval first. Preview the complete text and metadata. Create the draft
|
|
18
|
-
only after the user explicitly approves that exact payload.
|
|
19
|
-
|
|
20
|
-
Send this request body:
|
|
21
|
-
|
|
22
|
-
| Field | Type | Required | Description |
|
|
23
|
-
|-------|------|----------|-------------|
|
|
24
|
-
| `text` | string | Yes | The draft tweet text |
|
|
25
|
-
| `topic` | string | No | Topic the tweet is about |
|
|
26
|
-
| `goal` | string | No | `engagement`, `followers`, `authority`, or `conversation` |
|
|
27
|
-
|
|
28
|
-
For a 201 response, the API returns:
|
|
29
|
-
|
|
30
|
-
```json
|
|
31
|
-
{
|
|
32
|
-
"id": "123",
|
|
33
|
-
"text": "draft text",
|
|
34
|
-
"topic": "product launch",
|
|
35
|
-
"goal": "engagement",
|
|
36
|
-
"createdAt": "2026-02-24T10:30:00.000Z",
|
|
37
|
-
"updatedAt": "2026-02-24T10:30:00.000Z"
|
|
38
|
-
}
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
---
|
|
42
|
-
|
|
43
|
-
### List drafts
|
|
44
|
-
|
|
45
|
-
`GET /drafts`
|
|
46
|
-
|
|
47
|
-
List saved tweet drafts with cursor pagination.
|
|
48
|
-
|
|
49
|
-
This is a private read. Show the requested page size and account scope. List drafts
|
|
50
|
-
only after explicit approval for that exact read.
|
|
51
|
-
|
|
52
|
-
Use these query parameters:
|
|
53
|
-
|
|
54
|
-
| Parameter | Type | Required | Default | Description |
|
|
55
|
-
|-----------|------|----------|---------|-------------|
|
|
56
|
-
| `limit` | number | No | 50 | Results per page; maximum 50 |
|
|
57
|
-
| `afterCursor` | string | No | - | Pagination cursor from previous response |
|
|
58
|
-
|
|
59
|
-
For a 200 response, the API returns:
|
|
60
|
-
|
|
61
|
-
```json
|
|
62
|
-
{
|
|
63
|
-
"drafts": [
|
|
64
|
-
{
|
|
65
|
-
"id": "123",
|
|
66
|
-
"text": "draft text",
|
|
67
|
-
"topic": "product launch",
|
|
68
|
-
"goal": "engagement",
|
|
69
|
-
"createdAt": "2026-02-24T10:30:00.000Z",
|
|
70
|
-
"updatedAt": "2026-02-24T10:30:00.000Z"
|
|
71
|
-
}
|
|
72
|
-
],
|
|
73
|
-
"afterCursor": "cursor_string",
|
|
74
|
-
"hasMore": true
|
|
75
|
-
}
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
### Get draft
|
|
81
|
-
|
|
82
|
-
`GET /drafts/{id}`
|
|
83
|
-
|
|
84
|
-
Get a specific draft by ID.
|
|
85
|
-
|
|
86
|
-
This is a private read. Show the draft ID. Fetch it only after explicit approval for
|
|
87
|
-
that exact read, including any preview before deletion.
|
|
88
|
-
|
|
89
|
-
For a 200 response, the API returns 1 draft object.
|
|
90
|
-
|
|
91
|
-
Possible errors include `400 invalid_id` and `404 draft_not_found`.
|
|
92
|
-
|
|
93
|
-
---
|
|
94
|
-
|
|
95
|
-
### Delete draft
|
|
96
|
-
|
|
97
|
-
Send a delete request to `/drafts/{id}`.
|
|
98
|
-
|
|
99
|
-
This action is destructive. Deletion is permanent and cannot be recovered through
|
|
100
|
-
this API. Show the draft ID and text, then obtain explicit approval immediately
|
|
101
|
-
before deleting it. Returns `204 No Content`.
|
|
102
|
-
|
|
103
|
-
Possible errors include `400 invalid_id` and `404 draft_not_found`.
|
|
104
|
-
|
|
105
|
-
---
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
# Xquik REST API endpoints: draws
|
|
2
|
-
|
|
3
|
-
## Protect giveaway participant data
|
|
4
|
-
|
|
5
|
-
Draw creation and participant exports are metered or privacy-sensitive actions.
|
|
6
|
-
Confirm the source tweet, eligibility rules, requested data type, export
|
|
7
|
-
audience, and retention plan. Use the smallest necessary dataset. Do not
|
|
8
|
-
export entries for surveillance, discrimination, harassment, or unrelated
|
|
9
|
-
secondary use.
|
|
10
|
-
Draw history and results are account-scoped private reads. Require exact-scope
|
|
11
|
-
approval before listing draws or retrieving winners.
|
|
12
|
-
|
|
13
|
-
### Create draw
|
|
14
|
-
|
|
15
|
-
```
|
|
16
|
-
POST /draws
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
Run a giveaway draw from a tweet. The draw selects random winners from replies.
|
|
20
|
-
|
|
21
|
-
Get approval first. Show the source tweet, winner count, backup count,
|
|
22
|
-
filters, and estimated usage. Also show the lawful purpose, participant-data
|
|
23
|
-
handling, export audience, and retention plan. Record every field before
|
|
24
|
-
persisting participant data.
|
|
25
|
-
|
|
26
|
-
Send this body:
|
|
27
|
-
```json
|
|
28
|
-
{
|
|
29
|
-
"tweetUrl": "https://x.com/user/status/1893456789012345678",
|
|
30
|
-
"winnerCount": 3,
|
|
31
|
-
"backupCount": 2,
|
|
32
|
-
"uniqueAuthorsOnly": true,
|
|
33
|
-
"mustRetweet": true,
|
|
34
|
-
"mustFollowUsername": "burakbayir",
|
|
35
|
-
"filterMinFollowers": 100,
|
|
36
|
-
"filterAccountAgeDays": 30,
|
|
37
|
-
"filterLanguage": "en",
|
|
38
|
-
"requiredKeywords": ["giveaway"],
|
|
39
|
-
"requiredHashtags": ["#contest"],
|
|
40
|
-
"requiredMentions": ["@xquik"]
|
|
41
|
-
}
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
All filter fields are optional. Only `tweetUrl` is required.
|
|
45
|
-
|
|
46
|
-
The API returns:
|
|
47
|
-
```json
|
|
48
|
-
{
|
|
49
|
-
"id": "42",
|
|
50
|
-
"tweetId": "1893456789012345678",
|
|
51
|
-
"tweetUrl": "https://x.com/user/status/1893456789012345678",
|
|
52
|
-
"tweetText": "Like and repost to enter. We will select 3 winners tomorrow.",
|
|
53
|
-
"tweetAuthorUsername": "xquik",
|
|
54
|
-
"tweetLikeCount": 4200,
|
|
55
|
-
"tweetRetweetCount": 1800,
|
|
56
|
-
"tweetReplyCount": 1500,
|
|
57
|
-
"tweetQuoteCount": 120,
|
|
58
|
-
"status": "completed",
|
|
59
|
-
"totalEntries": 1500,
|
|
60
|
-
"validEntries": 890,
|
|
61
|
-
"createdAt": "2026-02-24T10:00:00.000Z",
|
|
62
|
-
"drawnAt": "2026-02-24T10:01:00.000Z"
|
|
63
|
-
}
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
### List draws
|
|
67
|
-
|
|
68
|
-
```
|
|
69
|
-
GET /draws
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
Cursor-paginated. Returns compact draw objects.
|
|
73
|
-
|
|
74
|
-
This is a private read. Show the exact account, requested page scope, and returned
|
|
75
|
-
field scope. List draws only after explicit approval for that exact read.
|
|
76
|
-
|
|
77
|
-
### Get draw
|
|
78
|
-
|
|
79
|
-
```
|
|
80
|
-
GET /draws/{id}
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
Returns full draw details including winners.
|
|
84
|
-
|
|
85
|
-
This is a private read. Show the exact account, draw ID, and returned-data scope.
|
|
86
|
-
Retrieve details only after explicit approval for that exact read.
|
|
87
|
-
|
|
88
|
-
### Export draw
|
|
89
|
-
|
|
90
|
-
```
|
|
91
|
-
GET /draws/{id}/export?format=csv&type=winners
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
Choose `csv`, `json`, `md`, `md-document`, `pdf`, `txt`, or `xlsx`. Choose `winners` or `entries`; the default is `winners`. Entry exports support 100,000 rows, except PDF supports 10,000.
|
|
95
|
-
|
|
96
|
-
Get approval first. Full entry exports can contain participant identity and
|
|
97
|
-
activity data. Show the lawful purpose, exact draw, type, format, audience, and
|
|
98
|
-
retention period. Export only after explicit approval for that exact request.
|
|
99
|
-
Prefer winners-only output. Do not retain data beyond the approved purpose.
|
|
100
|
-
|
|
101
|
-
---
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
# Xquik REST API endpoints: error codes
|
|
2
|
-
|
|
3
|
-
Default v1 responses put a legacy string code in `error`. Send
|
|
4
|
-
`xquik-api-contract: 2026-04-29` to receive an object with `message`, `type`,
|
|
5
|
-
and `code`. OpenAPI enumerates 112 codes, including `closed`, `expired`,
|
|
6
|
-
`missing_url`, and `user_not_found`. This table highlights common codes.
|
|
7
|
-
`closed` and `expired` map to 410. `missing_url` maps to 502.
|
|
8
|
-
|
|
9
|
-
| Status | Code | Meaning |
|
|
10
|
-
|--------|------|---------|
|
|
11
|
-
| 400 | `invalid_input` | Request body failed validation |
|
|
12
|
-
| 400 | `invalid_id` | Path parameter is not a valid ID |
|
|
13
|
-
| 400 | `invalid_json` | Invalid JSON in request body |
|
|
14
|
-
| 400 | `invalid_tweet_url` | Tweet URL format is invalid |
|
|
15
|
-
| 400 | `invalid_tweet_id` | Tweet ID is empty or invalid |
|
|
16
|
-
| 400 | `invalid_username` | X username is empty or invalid |
|
|
17
|
-
| 400 | `invalid_tool_type` | Extraction tool type not recognized |
|
|
18
|
-
| 400 | `invalid_format` | Export format not `csv`, `json`, `md`, `md-document`, `pdf`, `txt`, or `xlsx` |
|
|
19
|
-
| 400 | `invalid_params` | Export query parameters are missing or invalid |
|
|
20
|
-
| 400 | `invalid_coverage_cursor` | Automatic coverage cursor is malformed. Restart without it |
|
|
21
|
-
| 400 | `missing_query` | Required query parameter is missing |
|
|
22
|
-
| 400 | `missing_params` | Required query parameters are missing |
|
|
23
|
-
| 400 | `no_media` | Tweet has no downloadable media |
|
|
24
|
-
| 400 | `webhook_inactive` | Webhook is disabled; applies only to webhook tests |
|
|
25
|
-
| 401 | `unauthenticated` | Missing or invalid API key |
|
|
26
|
-
| 403 | `account_needs_reauth` | X account session expired; use dashboard re-auth flow |
|
|
27
|
-
| 402 | `no_subscription` | No active plan |
|
|
28
|
-
| 402 | `subscription_inactive` | Plan is not active |
|
|
29
|
-
| 402 | `no_credits` | No credit balance record exists |
|
|
30
|
-
| 402 | `insufficient_credits` | Credit balance is too low |
|
|
31
|
-
| 403 | `api_key_limit_reached` | API key limit reached; maximum 100 |
|
|
32
|
-
| 404 | `not_found` | Resource does not exist |
|
|
33
|
-
| 404 | `user_not_found` | X user not found |
|
|
34
|
-
| 404 | `tweet_not_found` | Tweet not found |
|
|
35
|
-
| 404 | `style_not_found` | No cached style found |
|
|
36
|
-
| 404 | `draft_not_found` | Draft not found |
|
|
37
|
-
| 409 | `monitor_already_exists` | Duplicate monitor for same username |
|
|
38
|
-
| 409 | `coverage_cursor_unavailable` | Wait the exact `Retry-After` seconds, then retry the same cursor once |
|
|
39
|
-
| 410 | `coverage_cursor_gone` | No `Retry-After`. Restart without a cursor and deduplicate by ID |
|
|
40
|
-
| 422 | `login_failed` | Account connection failed; use dashboard re-auth flow |
|
|
41
|
-
| 429 | - | Rate limited. Retry with backoff |
|
|
42
|
-
| 429 | `x_api_rate_limited` | X data source rate limited. Retry |
|
|
43
|
-
| 500 | `internal_error` | Server error |
|
|
44
|
-
| 502 | `x_api_unavailable` | X data source temporarily unavailable |
|
|
45
|
-
| 502 | `x_api_unauthorized` | X data source authentication failed. Retry |
|
|
46
|
-
|
|
47
|
-
## Cursor recovery examples
|
|
48
|
-
|
|
49
|
-
`409 coverage_cursor_unavailable` requires an integer `Retry-After` response
|
|
50
|
-
header. Wait that many seconds, then retry the same cursor once.
|
|
51
|
-
|
|
52
|
-
```json
|
|
53
|
-
{
|
|
54
|
-
"error": "coverage_cursor_unavailable",
|
|
55
|
-
"message": "Cursor busy. Retry after the indicated delay."
|
|
56
|
-
}
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
`410 coverage_cursor_gone` has no `Retry-After` header. Restart without a
|
|
60
|
-
cursor and deduplicate by ID.
|
|
61
|
-
|
|
62
|
-
```json
|
|
63
|
-
{
|
|
64
|
-
"error": "coverage_cursor_gone",
|
|
65
|
-
"message": "Cursor finished, expired, or superseded. Restart pagination without cursor."
|
|
66
|
-
}
|
|
67
|
-
```
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
# Xquik REST API endpoints: events
|
|
2
|
-
|
|
3
|
-
### List events
|
|
4
|
-
|
|
5
|
-
```
|
|
6
|
-
GET /events
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
Use these query parameters:
|
|
10
|
-
|
|
11
|
-
| Parameter | Type | Description |
|
|
12
|
-
|-------|------|-------------|
|
|
13
|
-
| `monitorId` | string | Filter by monitor ID |
|
|
14
|
-
| `keywordMonitorId` | string | Filter by keyword monitor ID |
|
|
15
|
-
| `eventType` | string | Filter by event type |
|
|
16
|
-
| `limit` | number | Results per page from 1-100; defaults to 50 |
|
|
17
|
-
| `cursor` | string | Previous `nextCursor` |
|
|
18
|
-
|
|
19
|
-
The API returns:
|
|
20
|
-
```json
|
|
21
|
-
{
|
|
22
|
-
"events": [
|
|
23
|
-
{
|
|
24
|
-
"id": "9010",
|
|
25
|
-
"type": "tweet.new",
|
|
26
|
-
"monitorId": "7",
|
|
27
|
-
"monitorType": "account",
|
|
28
|
-
"username": "elonmusk",
|
|
29
|
-
"occurredAt": "2026-02-24T16:45:00.000Z",
|
|
30
|
-
"data": {
|
|
31
|
-
"tweetId": "1893556789012345678",
|
|
32
|
-
"text": "Hello world",
|
|
33
|
-
"metrics": { "likes": 3200, "retweets": 890, "replies": 245 }
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
],
|
|
37
|
-
"hasMore": true,
|
|
38
|
-
"nextCursor": "MjAyNi0wMi0yNFQxNjozMDowMC4wMDBa..."
|
|
39
|
-
}
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
### Get event
|
|
43
|
-
|
|
44
|
-
```
|
|
45
|
-
GET /events/{id}
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
Returns 1 event.
|
|
49
|
-
|
|
50
|
-
---
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
# Xquik REST API endpoints: extractions
|
|
2
|
-
|
|
3
|
-
## Protect extracted data
|
|
4
|
-
|
|
5
|
-
Extraction creation and export can collect and disclose large datasets. First
|
|
6
|
-
confirm the lawful purpose, exact target, `resultsLimit`, recipients, and
|
|
7
|
-
retention period. Estimate usage, show the estimate, and obtain explicit
|
|
8
|
-
approval for that exact bounded job. Never use extraction for private data,
|
|
9
|
-
surveillance, discrimination, harassment, doxxing, or unrelated secondary use.
|
|
10
|
-
Extraction history and results are account-scoped private reads. Require
|
|
11
|
-
exact-scope approval before listing jobs or retrieving results.
|
|
12
|
-
|
|
13
|
-
### Create extraction
|
|
14
|
-
|
|
15
|
-
```
|
|
16
|
-
POST /extractions
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
Run a bulk data extraction job. See `references/extractions.md` for all 23 tools.
|
|
20
|
-
|
|
21
|
-
Get approval first. Call the estimate endpoint with the same body first.
|
|
22
|
-
Create the job only when the estimate returns `allowed: true`. Then require
|
|
23
|
-
approval for the target, bound, usage, and data-handling plan.
|
|
24
|
-
|
|
25
|
-
Send this body:
|
|
26
|
-
```json
|
|
27
|
-
{
|
|
28
|
-
"toolType": "reply_extractor",
|
|
29
|
-
"targetTweetId": "1893704267862470862",
|
|
30
|
-
"resultsLimit": 500
|
|
31
|
-
}
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
The API accepts an omitted `resultsLimit`. This Skill must always send an
|
|
35
|
-
explicit finite positive bound. The bound stops early and limits usage.
|
|
36
|
-
|
|
37
|
-
The request accepts single or batch targets, mixed targets, relation targets,
|
|
38
|
-
deduplication controls, output metadata, and current result filters. See
|
|
39
|
-
[Extraction Tools](extractions.md) and the OpenAPI schema. Send the same body
|
|
40
|
-
to estimate and create.
|
|
41
|
-
|
|
42
|
-
The API returns:
|
|
43
|
-
```json
|
|
44
|
-
{
|
|
45
|
-
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
|
46
|
-
"toolType": "reply_extractor",
|
|
47
|
-
"status": "running"
|
|
48
|
-
}
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
### Estimate extraction
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
POST /extractions/estimate
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
Preview usage before running. Same body as create.
|
|
58
|
-
|
|
59
|
-
The API returns:
|
|
60
|
-
```json
|
|
61
|
-
{
|
|
62
|
-
"allowed": true,
|
|
63
|
-
"creditsAvailable": "50000",
|
|
64
|
-
"creditsRequired": "150",
|
|
65
|
-
"source": "replyCount",
|
|
66
|
-
"estimatedResults": 150
|
|
67
|
-
}
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
### List extractions
|
|
71
|
-
|
|
72
|
-
```
|
|
73
|
-
GET /extractions
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
Cursor-paginated. Use `limit`, `cursor`, `status`, and `toolType`. Pass each
|
|
77
|
-
`nextCursor` unchanged while `hasMore` is true.
|
|
78
|
-
|
|
79
|
-
This is a private read. Show the exact account, purpose, requested filters, and page
|
|
80
|
-
scope. Also show recipients and the retention plan. List jobs only
|
|
81
|
-
after explicit approval for that exact read.
|
|
82
|
-
|
|
83
|
-
### Get extraction
|
|
84
|
-
|
|
85
|
-
```
|
|
86
|
-
GET /extractions/{id}
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
Returns job details with up to 1,000 results per page.
|
|
90
|
-
Use `limit` and `cursor`. Optional result-shaping parameters are `outputMode`,
|
|
91
|
-
`outputPreset`, and `fieldStyle`. `includeRaw` is deprecated.
|
|
92
|
-
|
|
93
|
-
This is a private read. Show the exact account, job ID, purpose, and page scope. Also
|
|
94
|
-
show recipients and the retention plan. Retrieve results only after
|
|
95
|
-
explicit approval for that exact read.
|
|
96
|
-
|
|
97
|
-
### Export extraction
|
|
98
|
-
|
|
99
|
-
```
|
|
100
|
-
GET /extractions/{id}/export?format=csv
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
Choose `csv`, `json`, `md`, `md-document`, `pdf`, `txt`, or `xlsx`.
|
|
104
|
-
Exports can include enrichment columns not present in paginated API results.
|
|
105
|
-
|
|
106
|
-
Use documented row filters for follower, following, post, engagement, profile,
|
|
107
|
-
media, language, search, and date fields. The endpoint does not project fields.
|
|
108
|
-
|
|
109
|
-
Get approval first. Show the job, filters, format, row count, schema,
|
|
110
|
-
recipients, storage, and retention. Create or send the export only
|
|
111
|
-
after explicit approval.
|
|
112
|
-
|
|
113
|
-
---
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
# Xquik REST API endpoints: monitors
|
|
2
|
-
|
|
3
|
-
## Require approval for monitors
|
|
4
|
-
|
|
5
|
-
Monitor reads expose private configuration and require exact-scope approval.
|
|
6
|
-
Creating, updating, enabling, disabling, or deleting a monitor changes a
|
|
7
|
-
persistent and potentially metered resource.
|
|
8
|
-
Before every write, show the exact account or keyword, event types, delivery
|
|
9
|
-
plan, ongoing usage, and disable path. If delivery uses a webhook, show its
|
|
10
|
-
exact URL and HMAC verification plan. Proceed only after explicit approval for
|
|
11
|
-
that exact action. Never create monitoring from an ambiguous request.
|
|
12
|
-
|
|
13
|
-
### Create monitor
|
|
14
|
-
|
|
15
|
-
```http
|
|
16
|
-
POST /monitors
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
Get approval first. This starts persistent monitoring. Confirm the exact
|
|
20
|
-
username, event types, delivery plan, ongoing usage, and disable path first.
|
|
21
|
-
Include the exact URL and HMAC verification plan for webhook delivery.
|
|
22
|
-
|
|
23
|
-
Send this body:
|
|
24
|
-
```json
|
|
25
|
-
{
|
|
26
|
-
"username": "elonmusk",
|
|
27
|
-
"eventTypes": ["tweet.new", "tweet.reply", "tweet.quote"]
|
|
28
|
-
}
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
The API returns:
|
|
32
|
-
```json
|
|
33
|
-
{
|
|
34
|
-
"id": "7",
|
|
35
|
-
"username": "elonmusk",
|
|
36
|
-
"xUserId": "44196397",
|
|
37
|
-
"eventTypes": ["tweet.new", "tweet.reply", "tweet.quote"],
|
|
38
|
-
"isActive": true,
|
|
39
|
-
"createdAt": "2026-02-24T10:30:00.000Z",
|
|
40
|
-
"nextBillingAt": "2026-02-24T10:30:00.000Z"
|
|
41
|
-
}
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
Event types include tweet activity and profile-change events. Use the OpenAPI
|
|
45
|
-
`EventType` enum for the current values. `webhook.test` is only a test payload.
|
|
46
|
-
|
|
47
|
-
Returns `409 monitor_already_exists` if the username is already monitored.
|
|
48
|
-
|
|
49
|
-
### List monitors
|
|
50
|
-
|
|
51
|
-
```
|
|
52
|
-
GET /monitors
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
Returns up to 200 monitors without pagination. The response includes `monitors` and `total`.
|
|
56
|
-
|
|
57
|
-
This is a private read. List monitor targets and delivery configuration only after
|
|
58
|
-
explicit approval for that account scope.
|
|
59
|
-
|
|
60
|
-
### Get monitor
|
|
61
|
-
|
|
62
|
-
```http
|
|
63
|
-
GET /monitors/{id}
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
This is a private read. Show the monitor ID. Retrieve its configuration only after
|
|
67
|
-
explicit approval for that exact read.
|
|
68
|
-
|
|
69
|
-
### Update monitor
|
|
70
|
-
|
|
71
|
-
```http
|
|
72
|
-
PATCH /monitors/{id}
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
Get approval first. Show the current and proposed event types and active
|
|
76
|
-
state. Apply only the explicitly approved change.
|
|
77
|
-
|
|
78
|
-
Send `{ "eventTypes": [...], "isActive": true|false }`. Both fields are optional.
|
|
79
|
-
|
|
80
|
-
### Delete monitor
|
|
81
|
-
|
|
82
|
-
```
|
|
83
|
-
DELETE /monitors/{id}
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
This action is destructive. This permanently stops tracking and deletes associated
|
|
87
|
-
monitor data. Show the monitor ID, target, and lost data. Delete only after
|
|
88
|
-
explicit approval immediately before the call.
|
|
89
|
-
|
|
90
|
-
### Keyword monitors
|
|
91
|
-
|
|
92
|
-
```
|
|
93
|
-
GET /monitors/keywords
|
|
94
|
-
POST /monitors/keywords
|
|
95
|
-
GET /monitors/keywords/{id}
|
|
96
|
-
PATCH /monitors/keywords/{id}
|
|
97
|
-
DELETE /monitors/keywords/{id}
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
Create and manage ongoing keyword monitors. They are persistent resources. Confirm the query, event delivery, and ongoing usage before creating or enabling one.
|
|
101
|
-
|
|
102
|
-
Create with `{ "query": "#buildinpublic", "eventTypes": ["tweet.new"] }`.
|
|
103
|
-
Poll its events with `GET /events?keywordMonitorId=<id>`.
|
|
104
|
-
|
|
105
|
-
Creating, updating, enabling, disabling, or deleting a keyword monitor requires
|
|
106
|
-
explicit approval for the exact monitor. For creates and updates, show the
|
|
107
|
-
proposed keyword, event types, and delivery changes. For enable or disable,
|
|
108
|
-
show the active-state transition. For deletion, show the exact target and all
|
|
109
|
-
associated data that will be permanently lost.
|
|
110
|
-
|
|
111
|
-
---
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
# Xquik REST API endpoints: radar
|
|
2
|
-
|
|
3
|
-
### List radar items
|
|
4
|
-
|
|
5
|
-
```
|
|
6
|
-
GET /radar
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
Get trending topics and news from supported trend and news sources.
|
|
10
|
-
|
|
11
|
-
Use these query parameters:
|
|
12
|
-
|
|
13
|
-
| Parameter | Type | Description |
|
|
14
|
-
|-------|------|-------------|
|
|
15
|
-
| `after` | string | Previous `nextCursor` |
|
|
16
|
-
| `source` | string | `github`, `google_trends`, `hacker_news`, `polymarket`, `reddit`, `trustmrr`, or `wikipedia` |
|
|
17
|
-
| `category` | string | `general`, `tech`, `dev`, `science`, `culture`, `politics`, `business`, or `entertainment` |
|
|
18
|
-
| `limit` | number | Items per page from 1-100; defaults to 50 |
|
|
19
|
-
| `hours` | number | Look-back window from 1-72 hours; defaults to 6 |
|
|
20
|
-
| `region` | string | `US`, `GB`, `TR`, `ES`, `DE`, `FR`, `JP`, `IN`, `BR`, `CA`, `MX`, or `global`; defaults to `global` |
|
|
21
|
-
|
|
22
|
-
The API returns:
|
|
23
|
-
```json
|
|
24
|
-
{
|
|
25
|
-
"items": [
|
|
26
|
-
{
|
|
27
|
-
"id": "12345",
|
|
28
|
-
"title": "Claude 4.6 released",
|
|
29
|
-
"description": "Anthropic releases Claude 4.6.",
|
|
30
|
-
"url": "https://example.com/article",
|
|
31
|
-
"imageUrl": "https://example.com/image.png",
|
|
32
|
-
"source": "hacker_news",
|
|
33
|
-
"sourceId": "hn_12345",
|
|
34
|
-
"category": "tech",
|
|
35
|
-
"region": "global",
|
|
36
|
-
"language": "en",
|
|
37
|
-
"score": 450,
|
|
38
|
-
"metadata": { "points": 450, "numberComments": 132, "author": "pgdev" },
|
|
39
|
-
"publishedAt": "2026-03-05T10:00:00.000Z",
|
|
40
|
-
"createdAt": "2026-03-05T10:05:00.000Z"
|
|
41
|
-
}
|
|
42
|
-
],
|
|
43
|
-
"hasMore": true,
|
|
44
|
-
"nextCursor": "NDUwfDIwMjYtMDMtMDRUMDg6MzA6MDAuMDAwWnwxMjM0NQ=="
|
|
45
|
-
}
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
Each item contains `id`, `title`, `source`, `sourceId`, `category`, `region`, `language`, `score`, `metadata`, `publishedAt`, and `createdAt`. It may include `description`, `url`, and `imageUrl`. The response also returns `hasMore` and `nextCursor`.
|
|
49
|
-
|
|
50
|
-
---
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
# Xquik REST API endpoints: support
|
|
2
|
-
|
|
3
|
-
## Protect private support data
|
|
4
|
-
|
|
5
|
-
Tickets can disclose private account context. Preview each subject, message,
|
|
6
|
-
file, ticket ID, or status change. Obtain approval for that exact action. Before
|
|
7
|
-
private reads, show the account, purpose, scope, bound, recipients, and retention
|
|
8
|
-
plan. Exclude secrets, unrelated context, and unnecessary personal data.
|
|
9
|
-
|
|
10
|
-
### Create or reply
|
|
11
|
-
|
|
12
|
-
```http
|
|
13
|
-
POST /support/tickets
|
|
14
|
-
POST /support/tickets/{id}/messages
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
Create accepts JSON `{ "subject": "...", "body": "..." }`. Subjects allow
|
|
18
|
-
1-500 characters. Reply accepts JSON `{ "body": "..." }`. Bodies allow
|
|
19
|
-
1-10,000 characters. Multipart create requires `subject` plus `body`, 1-4
|
|
20
|
-
`attachments`, or both. Multipart reply requires `body`, 1-4 `attachments`, or
|
|
21
|
-
both. Attach JPEG, PNG, GIF, WebP, MP4, MOV, or WebM files. Images allow 10 MB
|
|
22
|
-
each. Videos allow 25 MB each. Combined media allows 30 MB.
|
|
23
|
-
|
|
24
|
-
Both return `{ "publicId": "tkt_...", "attachments": [] }`.
|
|
25
|
-
|
|
26
|
-
New requests return `201`. Direct REST callers may send a random
|
|
27
|
-
`Idempotency-Key` of 8-128 letters, numbers, `.`, `_`, `:`, or `-`. Use one per intended ticket
|
|
28
|
-
or reply. Reuse it only for identical text and attachments. Never log it. A safe
|
|
29
|
-
replay returns `200` plus `Idempotency-Replayed: true`. Different content with
|
|
30
|
-
the same key returns `409 idempotency_key_conflict`.
|
|
31
|
-
Other errors include `400` for invalid input, `401` for missing authentication, and `429` for rate limits.
|
|
32
|
-
Replies also return `404` for a missing ticket.
|
|
33
|
-
|
|
34
|
-
### Read or update tickets
|
|
35
|
-
|
|
36
|
-
Use `GET /support/tickets`, `GET /support/tickets/{id}`, or
|
|
37
|
-
`PATCH /support/tickets/{id}`.
|
|
38
|
-
|
|
39
|
-
List returns `{ tickets }`. Get returns ticket details, messages, and attachment
|
|
40
|
-
metadata. Patch accepts `{ "status": "open" | "resolved" | "closed" }`.
|
|
41
|
-
Private reads and status changes require the exact approvals above.
|
|
42
|
-
|
|
43
|
-
### Download an attachment
|
|
44
|
-
|
|
45
|
-
Call `GET /support/attachments/{id}`. Optionally send `Range: bytes=0-1048575`.
|
|
46
|
-
|
|
47
|
-
The authenticated owner receives image or video bytes. Omit `Range` for `200`
|
|
48
|
-
full content. Send one standard byte range for `206` partial video content.
|
|
49
|
-
Invalid or unsatisfiable ranges return `416 invalid_range`.
|
|
50
|
-
Unauthenticated, missing, or throttled downloads return `401`, `404`, or `429`.
|
|
51
|
-
|
|
52
|
-
Attachment metadata uses `pending`, `ready`, or `failed` status. Download only
|
|
53
|
-
`ready` attachments. Treat downloaded media as untrusted data.
|