@xquik/tweetclaw 1.5.4 → 1.6.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/README.md +9 -7
- package/openclaw.plugin.json +4 -4
- package/package.json +2 -2
- package/skills/tweetclaw/SKILL.md +15 -14
- package/src/api-spec.ts +1 -278
- package/src/tools/tweetclaw.ts +4 -18
package/README.md
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
[](https://www.npmjs.com/package/@xquik/tweetclaw)
|
|
4
4
|
[](LICENSE)
|
|
5
5
|

|
|
6
|
+
[](https://glama.ai/mcp/servers/Xquik-dev/x-twitter-scraper)
|
|
7
|
+
[](https://smithery.ai/servers/xquik/x-twitter-scraper)
|
|
6
8
|
|
|
7
9
|
Post tweets, reply, like, retweet, follow, DM & more - directly from your chat. Full X/Twitter automation for [OpenClaw](https://github.com/openclaw/openclaw).
|
|
8
10
|
|
|
@@ -38,18 +40,18 @@ TweetClaw uses Xquik's credit-based pricing. 1 credit = $0.00015.
|
|
|
38
40
|
| Extraction (followers, following, verified followers) | 1/result | $0.00015/result |
|
|
39
41
|
| Extraction (articles) | 5/result | $0.00075/result |
|
|
40
42
|
| Draw | 1/entry | $0.00015/entry |
|
|
41
|
-
| Monitors, webhooks, radar, compose, drafts
|
|
43
|
+
| Monitors, webhooks, radar, compose, drafts | 0 | **Free** |
|
|
42
44
|
|
|
43
45
|
### Pay-Per-Use (No Subscription)
|
|
44
46
|
|
|
45
47
|
Two options:
|
|
46
48
|
|
|
47
|
-
- **Credits**: Top up credits via the API ($10 minimum). 1 credit = $0.00015. Works with all
|
|
49
|
+
- **Credits**: Top up credits via the API ($10 minimum). 1 credit = $0.00015. Works with all 111 endpoints.
|
|
48
50
|
- **MPP**: 32 read-only X-API endpoints accept anonymous on-chain payments via Machine Payments Protocol. No account needed. SDK: `npm i mppx viem`.
|
|
49
51
|
|
|
50
52
|
### Free Operations
|
|
51
53
|
|
|
52
|
-
Tweet composition, style analysis, drafts, curated radar (7 sources), account management,
|
|
54
|
+
Tweet composition, style analysis, drafts, curated radar (7 sources), account management, support tickets - all free, no credits consumed.
|
|
53
55
|
|
|
54
56
|
## Install
|
|
55
57
|
|
|
@@ -59,7 +61,7 @@ openclaw plugins install @xquik/tweetclaw
|
|
|
59
61
|
|
|
60
62
|
## Configure
|
|
61
63
|
|
|
62
|
-
### Option A: API key (full access,
|
|
64
|
+
### Option A: API key (full access, 111 endpoints)
|
|
63
65
|
|
|
64
66
|
Get an API key at [dashboard.xquik.com](https://dashboard.xquik.com/). Store it in an environment variable and configure TweetClaw to use it:
|
|
65
67
|
|
|
@@ -71,7 +73,7 @@ openclaw config set plugins.entries.tweetclaw.config.apiKey "$XQUIK_API_KEY"
|
|
|
71
73
|
|
|
72
74
|
### Option B: Credits (pay-per-use, no subscription)
|
|
73
75
|
|
|
74
|
-
Top up credits from the Xquik dashboard or via `POST /credits/topup`. All
|
|
76
|
+
Top up credits from the Xquik dashboard or via `POST /credits/topup`. All 111 endpoints available. 1 credit = $0.00015.
|
|
75
77
|
|
|
76
78
|
### Option C: MPP pay-per-use (no account needed, 32 read-only endpoints)
|
|
77
79
|
|
|
@@ -152,7 +154,7 @@ You: "Monitor @elonmusk for new tweets and follower changes"
|
|
|
152
154
|
|
|
153
155
|
## API Coverage
|
|
154
156
|
|
|
155
|
-
|
|
157
|
+
111 endpoints across 11 categories:
|
|
156
158
|
|
|
157
159
|
| Category | Examples | Cost |
|
|
158
160
|
|----------|---------|------|
|
|
@@ -163,7 +165,6 @@ You: "Monitor @elonmusk for new tweets and follower changes"
|
|
|
163
165
|
| **Extraction** | Run extraction jobs (23 tool types: replies, followers, communities, favoriters, user_likes, user_media, etc.) | 1-5 credits/result |
|
|
164
166
|
| **Draws** | Run giveaway draws on tweets, export results | 1 credit/entry |
|
|
165
167
|
| **Monitoring** | Create monitors, view events, manage webhooks | Free |
|
|
166
|
-
| **Automations** | Create flows, add steps, test runs, inbound webhooks | Free |
|
|
167
168
|
| **Account** | Manage API keys, subscription, connected X accounts | Free |
|
|
168
169
|
| **Credits** | Check balance, top up credits | Free |
|
|
169
170
|
| **Trends** | X trending topics, curated radar from 7 sources | 3 credits / Free |
|
|
@@ -174,6 +175,7 @@ You: "Monitor @elonmusk for new tweets and follower changes"
|
|
|
174
175
|
- [Xquik Platform](https://xquik.com)
|
|
175
176
|
- [API Documentation](https://docs.xquik.com)
|
|
176
177
|
- [Billing & Pricing](https://docs.xquik.com/guides/billing)
|
|
178
|
+
- Framework guides: [Mastra](https://docs.xquik.com/guides/mastra), [CrewAI](https://docs.xquik.com/guides/crewai), [LangChain](https://docs.xquik.com/guides/langchain), [Pydantic AI](https://docs.xquik.com/guides/pydantic-ai), [Google ADK](https://docs.xquik.com/guides/google-adk), [Microsoft Agent Framework](https://docs.xquik.com/guides/microsoft-agent-framework), [Composio migration](https://docs.xquik.com/guides/composio-migration)
|
|
177
179
|
- [npm Package](https://www.npmjs.com/package/@xquik/tweetclaw)
|
|
178
180
|
- [OpenClaw](https://github.com/openclaw/openclaw)
|
|
179
181
|
|
package/openclaw.plugin.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "tweetclaw",
|
|
3
3
|
"name": "TweetClaw",
|
|
4
|
-
"version": "1.
|
|
5
|
-
"description": "Post tweets, reply, like, retweet, follow, DM from your chat - full X/Twitter automation powered by Xquik.
|
|
4
|
+
"version": "1.6.1",
|
|
5
|
+
"description": "Post tweets, reply, like, retweet, follow, DM from your chat - full X/Twitter automation powered by Xquik. 111 endpoints, reads from $0.00015/call.",
|
|
6
6
|
"primaryCredential": "apiKey",
|
|
7
7
|
"alternateCredentials": ["tempoSigningKey"],
|
|
8
8
|
"configSchema": {
|
|
9
9
|
"type": "object",
|
|
10
10
|
"additionalProperties": false,
|
|
11
11
|
"properties": {
|
|
12
|
-
"apiKey": { "type": "string", "minLength": 1, "description": "Xquik API key (get one at dashboard.xquik.com). Required for full access to all
|
|
12
|
+
"apiKey": { "type": "string", "minLength": 1, "description": "Xquik API key (get one at dashboard.xquik.com). Required for full access to all 111 endpoints." },
|
|
13
13
|
"tempoSigningKey": { "type": "string", "minLength": 1, "description": "MPP signing key for pay-per-use mode. No account needed. 32 read-only X-API endpoints." },
|
|
14
14
|
"baseUrl": { "type": "string", "default": "https://xquik.com" },
|
|
15
15
|
"pollingInterval": { "type": "number", "default": 60, "description": "Event polling interval in seconds" },
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
]
|
|
22
22
|
},
|
|
23
23
|
"uiHints": {
|
|
24
|
-
"apiKey": { "label": "Xquik API Key", "sensitive": true, "placeholder": "xq_...", "help": "Full access to all
|
|
24
|
+
"apiKey": { "label": "Xquik API Key", "sensitive": true, "placeholder": "xq_...", "help": "Full access to all 111 endpoints. Generate at dashboard.xquik.com." },
|
|
25
25
|
"tempoSigningKey": { "label": "MPP Signing Key", "sensitive": true, "placeholder": "0x...", "help": "Pay-per-use mode via Machine Payments Protocol. No account needed. 32 read-only X-API endpoints only." },
|
|
26
26
|
"baseUrl": { "label": "API Base URL", "placeholder": "https://xquik.com", "advanced": true, "help": "Only change if using a self-hosted Xquik instance." },
|
|
27
27
|
"pollingInterval": { "label": "Event Poll Interval (seconds)", "advanced": true, "help": "How often to check for new monitor events. Default: 60 seconds." },
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xquik/tweetclaw",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Post tweets, reply, like, retweet, follow, DM & more from OpenClaw - full X/Twitter automation via Xquik.
|
|
3
|
+
"version": "1.6.1",
|
|
4
|
+
"description": "Post tweets, reply, like, retweet, follow, DM & more from OpenClaw - full X/Twitter automation via Xquik. 111 endpoints, reads from $0.00015/call.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"repository": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: tweetclaw
|
|
3
|
-
description: "OpenClaw plugin for X/Twitter automation. Post tweets, reply, like, retweet, follow, DM, search, extract data, run giveaways, monitor accounts
|
|
3
|
+
description: "OpenClaw plugin for X/Twitter automation. Post tweets, reply, like, retweet, follow, DM, search, extract data, run giveaways, monitor accounts via Xquik. 111 endpoints, 2 tools (explore + tweetclaw), 2 commands (/xstatus, /xtrends), background event poller. Reads from $0.00015/call - 33x cheaper than the official X API."
|
|
4
4
|
homepage: https://xquik.com
|
|
5
5
|
read_when:
|
|
6
6
|
- Posting, replying, liking, retweeting, or following on X/Twitter
|
|
@@ -41,7 +41,7 @@ TweetClaw uses Xquik's credit-based pricing. 1 credit = $0.00015.
|
|
|
41
41
|
| Extraction (followers, following, verified followers) | 1/result | $0.00015/result |
|
|
42
42
|
| Extraction (articles) | 5/result | $0.00075/result |
|
|
43
43
|
| Draw | 1/entry | $0.00015/entry |
|
|
44
|
-
| Monitors, webhooks, radar, compose, drafts
|
|
44
|
+
| Monitors, webhooks, radar, compose, drafts | 0 | **Free** |
|
|
45
45
|
|
|
46
46
|
### vs Official X API
|
|
47
47
|
|
|
@@ -55,11 +55,22 @@ TweetClaw uses Xquik's credit-based pricing. 1 credit = $0.00015.
|
|
|
55
55
|
|
|
56
56
|
### Pay-Per-Use (No Subscription)
|
|
57
57
|
|
|
58
|
-
- **Credits**: Top up via `POST /api/v1/credits/topup` ($10 minimum). Works with all
|
|
58
|
+
- **Credits**: Top up via `POST /api/v1/credits/topup` ($10 minimum). Works with all 111 endpoints.
|
|
59
59
|
- **MPP**: 32 read-only endpoints accept anonymous on-chain payments. No account needed. SDK: `npm i mppx viem`.
|
|
60
60
|
|
|
61
61
|
MPP pricing: tweet lookup ($0.00015), tweet search ($0.00015/tweet), user lookup ($0.00015), user tweets ($0.00015/tweet), follower check ($0.00105), article ($0.00105), media download ($0.00015/media), trends ($0.00045), X trends ($0.00045), quotes ($0.00015/tweet), replies ($0.00015/tweet), retweeters ($0.00015/user), favoriters ($0.00015/user), thread ($0.00015/tweet), user likes ($0.00015/tweet), user media ($0.00015/tweet), community info ($0.00015), community members ($0.00015/user), community moderators ($0.00015/user), community tweets ($0.00015/tweet), community search ($0.00015/community), communities tweets ($0.00015/tweet), list followers ($0.00015/user), list members ($0.00015/user), list tweets ($0.00015/tweet), users batch ($0.00015/user), users search ($0.00015/user), user followers ($0.00015/user), followers you know ($0.00015/user), user following ($0.00015/user), user mentions ($0.00015/tweet), verified followers ($0.00015/user).
|
|
62
62
|
|
|
63
|
+
## Documentation
|
|
64
|
+
|
|
65
|
+
Prefer retrieval from docs for current limits, pricing, and API signatures:
|
|
66
|
+
|
|
67
|
+
| Source | Use for |
|
|
68
|
+
|--------|---------|
|
|
69
|
+
| [docs.xquik.com](https://docs.xquik.com) | Full docs home |
|
|
70
|
+
| [API reference](https://docs.xquik.com/api-reference/overview) | Endpoint parameters, response shapes |
|
|
71
|
+
| [Billing guide](https://docs.xquik.com/guides/billing) | Credit costs, subscription tiers, pay-per-use pricing |
|
|
72
|
+
| Framework guides: [Mastra](https://docs.xquik.com/guides/mastra), [CrewAI](https://docs.xquik.com/guides/crewai), [LangChain](https://docs.xquik.com/guides/langchain), [Pydantic AI](https://docs.xquik.com/guides/pydantic-ai), [Google ADK](https://docs.xquik.com/guides/google-adk), [Microsoft Agent Framework](https://docs.xquik.com/guides/microsoft-agent-framework), [Composio migration](https://docs.xquik.com/guides/composio-migration) | Framework-specific integration recipes |
|
|
73
|
+
|
|
63
74
|
## When to Use
|
|
64
75
|
|
|
65
76
|
Use TweetClaw when the user wants to:
|
|
@@ -80,8 +91,6 @@ Use TweetClaw when the user wants to:
|
|
|
80
91
|
- Analyze a user's writing style
|
|
81
92
|
- Check trending topics on X
|
|
82
93
|
- Download tweet media (images, videos, GIFs)
|
|
83
|
-
- Set up Telegram alerts for monitor events
|
|
84
|
-
- Create and manage automation flows (triggers, steps, test runs)
|
|
85
94
|
- Check credit balance or top up credits
|
|
86
95
|
- Open and manage support tickets
|
|
87
96
|
- Read X Articles (long-form posts)
|
|
@@ -114,7 +123,7 @@ Configure the signing key in your OpenClaw plugin config:
|
|
|
114
123
|
|
|
115
124
|
## Tools
|
|
116
125
|
|
|
117
|
-
TweetClaw registers 2 tools that cover the entire Xquik API (
|
|
126
|
+
TweetClaw registers 2 tools that cover the entire Xquik API (111 endpoints):
|
|
118
127
|
|
|
119
128
|
### `explore` (free, no network)
|
|
120
129
|
|
|
@@ -287,13 +296,6 @@ You: "How many credits do I have?" or "Top up my credits"
|
|
|
287
296
|
Agent uses tweetclaw -> GET /api/v1/credits or POST /api/v1/credits/topup
|
|
288
297
|
```
|
|
289
298
|
|
|
290
|
-
### Create an automation flow (free)
|
|
291
|
-
|
|
292
|
-
```
|
|
293
|
-
You: "Create an automation that sends a DM when I get a new follower"
|
|
294
|
-
Agent uses tweetclaw -> creates flow with monitor_event trigger, adds send_dm step, tests it
|
|
295
|
-
```
|
|
296
|
-
|
|
297
299
|
### Read an X Article
|
|
298
300
|
|
|
299
301
|
```
|
|
@@ -320,7 +322,6 @@ Agent uses tweetclaw -> creates ticket with subject and description
|
|
|
320
322
|
| Extraction | Reply/follower/community extraction (23 tools) | 1-5 credits/result |
|
|
321
323
|
| Draws | Giveaway draws, export results | 1 credit/entry |
|
|
322
324
|
| Monitoring | Create monitors, view events, webhooks | Free |
|
|
323
|
-
| Automations | Create flows, add steps, test runs, inbound webhooks | Free |
|
|
324
325
|
| Account | API keys, subscription, connected X accounts | Free |
|
|
325
326
|
| Credits | Check balance, top up | Free |
|
|
326
327
|
| Trends | X trending topics, curated radar from 7 sources | 3 credits / Free |
|
package/src/api-spec.ts
CHANGED
|
@@ -3,10 +3,7 @@ import type { EndpointInfo, EndpointParameter } from './types.js';
|
|
|
3
3
|
const RESPONSE_SUCCESS = '{ success: true }';
|
|
4
4
|
const DESCRIPTION_PAGINATION_CURSOR = 'Pagination cursor';
|
|
5
5
|
const DESCRIPTION_STYLE_USERNAME = 'X username of cached style';
|
|
6
|
-
const DESCRIPTION_EXPORT_FORMAT = 'Export format (csv,
|
|
7
|
-
const CATEGORY_BOT = 'bot';
|
|
8
|
-
const DESCRIPTION_PLATFORM_USER_ID = 'Platform user ID';
|
|
9
|
-
const CATEGORY_INTEGRATIONS = 'integrations';
|
|
6
|
+
const DESCRIPTION_EXPORT_FORMAT = 'Export format (csv, json, md, md-document, pdf, txt, xlsx)';
|
|
10
7
|
const CATEGORY_X_ACCOUNTS = 'x-accounts';
|
|
11
8
|
|
|
12
9
|
const PAGINATION_PARAMS: readonly EndpointParameter[] = [
|
|
@@ -45,9 +42,6 @@ const PARAM_DRAW_ID: EndpointParameter =
|
|
|
45
42
|
const PARAM_EXTRACTION_ID: EndpointParameter =
|
|
46
43
|
{ description: 'Extraction public ID', in: 'path', name: 'id', required: true, type: 'string' };
|
|
47
44
|
|
|
48
|
-
const PARAM_INTEGRATION_ID: EndpointParameter =
|
|
49
|
-
{ description: 'Integration ID', in: 'path', name: 'id', required: true, type: 'string' };
|
|
50
|
-
|
|
51
45
|
const PARAM_X_ACCOUNT: EndpointParameter =
|
|
52
46
|
{ description: 'X account (@username or account ID)', in: 'body', name: 'account', required: true, type: 'string' };
|
|
53
47
|
|
|
@@ -87,13 +81,9 @@ const PARAM_MEDIA_URL: EndpointParameter =
|
|
|
87
81
|
{ description: 'URL to download media from (alternative to file, HTTPS only)', in: 'body', name: 'url', required: false, type: 'string' };
|
|
88
82
|
|
|
89
83
|
const RESPONSE_COMMUNITY_ACTION = '{ communityId, communityName, success: true }';
|
|
90
|
-
const CATEGORY_AUTOMATIONS = 'automations';
|
|
91
84
|
const CATEGORY_SUPPORT = 'support';
|
|
92
85
|
const CATEGORY_X_WRITE = 'x-write';
|
|
93
86
|
|
|
94
|
-
const PARAM_AUTOMATION_SLUG: EndpointParameter =
|
|
95
|
-
{ description: 'Flow slug', in: 'path', name: 'slug', required: true, type: 'string' };
|
|
96
|
-
|
|
97
87
|
const PARAM_TICKET_ID: EndpointParameter =
|
|
98
88
|
{ description: 'Ticket public ID', in: 'path', name: 'id', required: true, type: 'string' };
|
|
99
89
|
|
|
@@ -686,134 +676,6 @@ const API_SPEC: readonly EndpointInfo[] = [
|
|
|
686
676
|
summary: 'Get trending items by source',
|
|
687
677
|
},
|
|
688
678
|
|
|
689
|
-
// --- Bot ---
|
|
690
|
-
{
|
|
691
|
-
category: CATEGORY_BOT,
|
|
692
|
-
free: true,
|
|
693
|
-
method: 'POST',
|
|
694
|
-
parameters: [
|
|
695
|
-
{ description: 'Platform name (telegram)', in: 'body', name: 'platform', required: true, type: 'string' },
|
|
696
|
-
{ description: DESCRIPTION_PLATFORM_USER_ID, in: 'body', name: 'platformUserId', required: true, type: 'string' },
|
|
697
|
-
],
|
|
698
|
-
path: '/api/v1/bot/platform-links',
|
|
699
|
-
responseShape: '{ id, platform, platformUserId, createdAt }',
|
|
700
|
-
summary: 'Link a platform user to an Xquik account',
|
|
701
|
-
},
|
|
702
|
-
{
|
|
703
|
-
category: CATEGORY_BOT,
|
|
704
|
-
free: true,
|
|
705
|
-
method: 'DELETE',
|
|
706
|
-
parameters: [
|
|
707
|
-
{ description: 'Platform name (telegram)', in: 'body', name: 'platform', required: true, type: 'string' },
|
|
708
|
-
{ description: DESCRIPTION_PLATFORM_USER_ID, in: 'body', name: 'platformUserId', required: true, type: 'string' },
|
|
709
|
-
],
|
|
710
|
-
path: '/api/v1/bot/platform-links',
|
|
711
|
-
responseShape: RESPONSE_SUCCESS,
|
|
712
|
-
summary: 'Unlink a platform user from an Xquik account',
|
|
713
|
-
},
|
|
714
|
-
{
|
|
715
|
-
category: CATEGORY_BOT,
|
|
716
|
-
free: true,
|
|
717
|
-
method: 'GET',
|
|
718
|
-
parameters: [
|
|
719
|
-
{ description: 'Platform name', in: 'query', name: 'platform', required: true, type: 'string' },
|
|
720
|
-
{ description: DESCRIPTION_PLATFORM_USER_ID, in: 'query', name: 'platformUserId', required: true, type: 'string' },
|
|
721
|
-
],
|
|
722
|
-
path: '/api/v1/bot/platform-links/lookup',
|
|
723
|
-
responseShape: '{ userId }',
|
|
724
|
-
summary: 'Look up an Xquik user by platform identity',
|
|
725
|
-
},
|
|
726
|
-
{
|
|
727
|
-
category: CATEGORY_BOT,
|
|
728
|
-
free: true,
|
|
729
|
-
method: 'POST',
|
|
730
|
-
parameters: [
|
|
731
|
-
{ description: DESCRIPTION_PLATFORM_USER_ID, in: 'body', name: 'platformUserId', required: true, type: 'string' },
|
|
732
|
-
{ description: 'Input token count', in: 'body', name: 'inputTokens', required: true, type: 'number' },
|
|
733
|
-
{ description: 'Output token count', in: 'body', name: 'outputTokens', required: true, type: 'number' },
|
|
734
|
-
],
|
|
735
|
-
path: '/api/v1/bot/usage',
|
|
736
|
-
responseShape: RESPONSE_SUCCESS,
|
|
737
|
-
summary: 'Track bot token usage',
|
|
738
|
-
},
|
|
739
|
-
|
|
740
|
-
// --- Integrations ---
|
|
741
|
-
{
|
|
742
|
-
category: CATEGORY_INTEGRATIONS,
|
|
743
|
-
free: true,
|
|
744
|
-
method: 'GET',
|
|
745
|
-
path: '/api/v1/integrations',
|
|
746
|
-
responseShape: '{ integrations: [{ id, type, name, config, eventTypes, isActive, ... }] }',
|
|
747
|
-
summary: 'List all integrations (Telegram push notifications)',
|
|
748
|
-
},
|
|
749
|
-
{
|
|
750
|
-
category: CATEGORY_INTEGRATIONS,
|
|
751
|
-
free: true,
|
|
752
|
-
method: 'POST',
|
|
753
|
-
parameters: [
|
|
754
|
-
{ description: 'Integration type (telegram)', in: 'body', name: 'type', required: true, type: 'string' },
|
|
755
|
-
{ description: 'Display name', in: 'body', name: 'name', required: true, type: 'string' },
|
|
756
|
-
{ description: 'Config with chatId', in: 'body', name: 'config', required: true, type: 'object' },
|
|
757
|
-
{ description: 'Event types to subscribe to', in: 'body', name: 'eventTypes', required: true, type: 'string[]' },
|
|
758
|
-
],
|
|
759
|
-
path: '/api/v1/integrations',
|
|
760
|
-
responseShape: '{ id, type, name, config, eventTypes, isActive, ... }',
|
|
761
|
-
summary: 'Create a new integration for push notifications',
|
|
762
|
-
},
|
|
763
|
-
{
|
|
764
|
-
category: CATEGORY_INTEGRATIONS,
|
|
765
|
-
free: true,
|
|
766
|
-
method: 'GET',
|
|
767
|
-
parameters: [PARAM_INTEGRATION_ID],
|
|
768
|
-
path: '/api/v1/integrations/:id',
|
|
769
|
-
responseShape: '{ id, type, name, config, eventTypes, filters, isActive, ... }',
|
|
770
|
-
summary: 'Get integration details',
|
|
771
|
-
},
|
|
772
|
-
{
|
|
773
|
-
category: CATEGORY_INTEGRATIONS,
|
|
774
|
-
free: true,
|
|
775
|
-
method: 'PATCH',
|
|
776
|
-
parameters: [
|
|
777
|
-
PARAM_INTEGRATION_ID,
|
|
778
|
-
{ description: 'Display name', in: 'body', name: 'name', required: false, type: 'string' },
|
|
779
|
-
{ description: 'Event types', in: 'body', name: 'eventTypes', required: false, type: 'string[]' },
|
|
780
|
-
{ description: 'Active status', in: 'body', name: 'isActive', required: false, type: 'boolean' },
|
|
781
|
-
{ description: 'Silent notifications', in: 'body', name: 'silentPush', required: false, type: 'boolean' },
|
|
782
|
-
],
|
|
783
|
-
path: '/api/v1/integrations/:id',
|
|
784
|
-
responseShape: '{ id, type, name, config, eventTypes, isActive, ... }',
|
|
785
|
-
summary: 'Update an integration',
|
|
786
|
-
},
|
|
787
|
-
{
|
|
788
|
-
category: CATEGORY_INTEGRATIONS,
|
|
789
|
-
free: true,
|
|
790
|
-
method: 'DELETE',
|
|
791
|
-
parameters: [PARAM_INTEGRATION_ID],
|
|
792
|
-
path: '/api/v1/integrations/:id',
|
|
793
|
-
responseShape: '{ success: true }',
|
|
794
|
-
summary: 'Delete an integration',
|
|
795
|
-
},
|
|
796
|
-
{
|
|
797
|
-
category: CATEGORY_INTEGRATIONS,
|
|
798
|
-
free: true,
|
|
799
|
-
method: 'GET',
|
|
800
|
-
parameters: [
|
|
801
|
-
PARAM_INTEGRATION_ID,
|
|
802
|
-
{ description: 'Max items', in: 'query', name: 'limit', required: false, type: 'number' },
|
|
803
|
-
],
|
|
804
|
-
path: '/api/v1/integrations/:id/deliveries',
|
|
805
|
-
responseShape: '{ deliveries: [{ id, eventType, status, attempts, createdAt, ... }] }',
|
|
806
|
-
summary: 'List delivery history for an integration',
|
|
807
|
-
},
|
|
808
|
-
{
|
|
809
|
-
category: CATEGORY_INTEGRATIONS,
|
|
810
|
-
free: true,
|
|
811
|
-
method: 'POST',
|
|
812
|
-
parameters: [PARAM_INTEGRATION_ID],
|
|
813
|
-
path: '/api/v1/integrations/:id/test',
|
|
814
|
-
responseShape: '{ success: true }',
|
|
815
|
-
summary: 'Send a test delivery to the integration',
|
|
816
|
-
},
|
|
817
679
|
|
|
818
680
|
// --- X Account Management ---
|
|
819
681
|
{
|
|
@@ -1059,145 +921,6 @@ const API_SPEC: readonly EndpointInfo[] = [
|
|
|
1059
921
|
summary: 'Leave community',
|
|
1060
922
|
},
|
|
1061
923
|
|
|
1062
|
-
// --- Automations ---
|
|
1063
|
-
{
|
|
1064
|
-
category: CATEGORY_AUTOMATIONS,
|
|
1065
|
-
free: true,
|
|
1066
|
-
method: 'GET',
|
|
1067
|
-
path: '/api/v1/automations',
|
|
1068
|
-
responseShape: '{ items: [{ id, name, slug, triggerType, triggerConfig, isActive, runCount, lastRunAt, createdAt, updatedAt }] }',
|
|
1069
|
-
summary: 'List all automation flows',
|
|
1070
|
-
},
|
|
1071
|
-
{
|
|
1072
|
-
category: CATEGORY_AUTOMATIONS,
|
|
1073
|
-
free: true,
|
|
1074
|
-
method: 'POST',
|
|
1075
|
-
parameters: [
|
|
1076
|
-
{ description: 'Flow name', in: 'body', name: 'name', required: true, type: 'string' },
|
|
1077
|
-
{ description: 'Trigger type: monitor_event, schedule, search, webhook_inbound', in: 'body', name: 'triggerType', required: true, type: 'string' },
|
|
1078
|
-
{ description: 'Trigger-specific configuration', in: 'body', name: 'triggerConfig', required: true, type: 'object' },
|
|
1079
|
-
{ description: 'Template slug to scaffold from', in: 'body', name: 'templateSlug', required: false, type: 'string' },
|
|
1080
|
-
],
|
|
1081
|
-
path: '/api/v1/automations',
|
|
1082
|
-
responseShape: '{ id, name, slug, triggerType, triggerConfig, isActive, createdAt, updatedAt }',
|
|
1083
|
-
summary: 'Create a new automation flow',
|
|
1084
|
-
},
|
|
1085
|
-
{
|
|
1086
|
-
category: CATEGORY_AUTOMATIONS,
|
|
1087
|
-
free: true,
|
|
1088
|
-
method: 'GET',
|
|
1089
|
-
parameters: [PARAM_AUTOMATION_SLUG],
|
|
1090
|
-
path: '/api/v1/automations/:slug',
|
|
1091
|
-
responseShape: '{ id, name, slug, triggerType, triggerConfig, isActive, steps, recentRuns, createdAt, updatedAt }',
|
|
1092
|
-
summary: 'Get flow details with steps and recent runs',
|
|
1093
|
-
},
|
|
1094
|
-
{
|
|
1095
|
-
category: CATEGORY_AUTOMATIONS,
|
|
1096
|
-
free: true,
|
|
1097
|
-
method: 'PATCH',
|
|
1098
|
-
parameters: [
|
|
1099
|
-
PARAM_AUTOMATION_SLUG,
|
|
1100
|
-
{ description: 'Current updatedAt for optimistic concurrency', in: 'body', name: 'expectedUpdatedAt', required: true, type: 'string' },
|
|
1101
|
-
{ description: 'Updated flow name', in: 'body', name: 'name', required: false, type: 'string' },
|
|
1102
|
-
{ description: 'Updated trigger type', in: 'body', name: 'triggerType', required: false, type: 'string' },
|
|
1103
|
-
{ description: 'Updated trigger config', in: 'body', name: 'triggerConfig', required: false, type: 'object' },
|
|
1104
|
-
{ description: 'Activate or deactivate', in: 'body', name: 'isActive', required: false, type: 'boolean' },
|
|
1105
|
-
],
|
|
1106
|
-
path: '/api/v1/automations/:slug',
|
|
1107
|
-
responseShape: '{ id, name, slug, triggerType, triggerConfig, isActive, createdAt, updatedAt }',
|
|
1108
|
-
summary: 'Update flow name, trigger, or active status',
|
|
1109
|
-
},
|
|
1110
|
-
{
|
|
1111
|
-
category: CATEGORY_AUTOMATIONS,
|
|
1112
|
-
free: true,
|
|
1113
|
-
method: 'DELETE',
|
|
1114
|
-
parameters: [PARAM_AUTOMATION_SLUG],
|
|
1115
|
-
path: '/api/v1/automations/:slug',
|
|
1116
|
-
responseShape: RESPONSE_SUCCESS,
|
|
1117
|
-
summary: 'Delete a flow and all its steps',
|
|
1118
|
-
},
|
|
1119
|
-
{
|
|
1120
|
-
category: CATEGORY_AUTOMATIONS,
|
|
1121
|
-
free: true,
|
|
1122
|
-
method: 'POST',
|
|
1123
|
-
parameters: [
|
|
1124
|
-
PARAM_AUTOMATION_SLUG,
|
|
1125
|
-
{ description: 'Step type: action, condition, extraction', in: 'body', name: 'stepType', required: true, type: 'string' },
|
|
1126
|
-
{ description: 'Branch: main, if_true, if_false', in: 'body', name: 'branch', required: true, type: 'string' },
|
|
1127
|
-
{ description: 'Step-specific configuration', in: 'body', name: 'config', required: true, type: 'object' },
|
|
1128
|
-
{ description: 'Order position in branch', in: 'body', name: 'position', required: false, type: 'number' },
|
|
1129
|
-
{ description: 'Parent step ID for condition branches', in: 'body', name: 'parentStepId', required: false, type: 'string' },
|
|
1130
|
-
{ description: 'Action type: create_tweet, follow, like, reply_tweet, retweet, send_dm, send_email, send_telegram, unfollow', in: 'body', name: 'actionType', required: false, type: 'string' },
|
|
1131
|
-
{ description: 'Extraction tool type', in: 'body', name: 'extractionType', required: false, type: 'string' },
|
|
1132
|
-
{ description: 'Variable name for extraction output', in: 'body', name: 'outputName', required: false, type: 'string' },
|
|
1133
|
-
],
|
|
1134
|
-
path: '/api/v1/automations/:slug/steps',
|
|
1135
|
-
responseShape: '{ id, flowId, stepType, actionType, extractionType, branch, config, position, createdAt }',
|
|
1136
|
-
summary: 'Add an action, condition, or extraction step to a flow',
|
|
1137
|
-
},
|
|
1138
|
-
{
|
|
1139
|
-
category: CATEGORY_AUTOMATIONS,
|
|
1140
|
-
free: true,
|
|
1141
|
-
method: 'PATCH',
|
|
1142
|
-
parameters: [
|
|
1143
|
-
PARAM_AUTOMATION_SLUG,
|
|
1144
|
-
{ description: 'Step ID to update', in: 'body', name: 'stepId', required: true, type: 'string' },
|
|
1145
|
-
{ description: 'Updated step config', in: 'body', name: 'config', required: false, type: 'object' },
|
|
1146
|
-
{ description: 'Updated step type', in: 'body', name: 'stepType', required: false, type: 'string' },
|
|
1147
|
-
{ description: 'Updated branch', in: 'body', name: 'branch', required: false, type: 'string' },
|
|
1148
|
-
{ description: 'Updated position', in: 'body', name: 'position', required: false, type: 'number' },
|
|
1149
|
-
{ description: 'Updated action type', in: 'body', name: 'actionType', required: false, type: 'string' },
|
|
1150
|
-
{ description: 'Updated extraction type', in: 'body', name: 'extractionType', required: false, type: 'string' },
|
|
1151
|
-
{ description: 'Updated output variable name', in: 'body', name: 'outputName', required: false, type: 'string' },
|
|
1152
|
-
],
|
|
1153
|
-
path: '/api/v1/automations/:slug/steps',
|
|
1154
|
-
responseShape: '{ id, flowId, stepType, actionType, extractionType, branch, config, position, createdAt }',
|
|
1155
|
-
summary: 'Update a step configuration or position',
|
|
1156
|
-
},
|
|
1157
|
-
{
|
|
1158
|
-
category: CATEGORY_AUTOMATIONS,
|
|
1159
|
-
free: true,
|
|
1160
|
-
method: 'DELETE',
|
|
1161
|
-
parameters: [
|
|
1162
|
-
PARAM_AUTOMATION_SLUG,
|
|
1163
|
-
{ description: 'Step ID to delete', in: 'body', name: 'stepId', required: true, type: 'string' },
|
|
1164
|
-
],
|
|
1165
|
-
path: '/api/v1/automations/:slug/steps',
|
|
1166
|
-
responseShape: RESPONSE_SUCCESS,
|
|
1167
|
-
summary: 'Remove a step from a flow',
|
|
1168
|
-
},
|
|
1169
|
-
{
|
|
1170
|
-
category: CATEGORY_AUTOMATIONS,
|
|
1171
|
-
free: true,
|
|
1172
|
-
method: 'PATCH',
|
|
1173
|
-
parameters: [
|
|
1174
|
-
PARAM_AUTOMATION_SLUG,
|
|
1175
|
-
{ description: 'Array of { stepId, positionX, positionY } (max 10)', in: 'body', name: 'positions', required: true, type: 'array' },
|
|
1176
|
-
],
|
|
1177
|
-
path: '/api/v1/automations/:slug/steps/positions',
|
|
1178
|
-
responseShape: RESPONSE_SUCCESS,
|
|
1179
|
-
summary: 'Batch update canvas positions for flow steps',
|
|
1180
|
-
},
|
|
1181
|
-
{
|
|
1182
|
-
category: CATEGORY_AUTOMATIONS,
|
|
1183
|
-
free: true,
|
|
1184
|
-
method: 'POST',
|
|
1185
|
-
parameters: [PARAM_AUTOMATION_SLUG],
|
|
1186
|
-
path: '/api/v1/automations/:slug/test',
|
|
1187
|
-
responseShape: '{ status, result, runId, error? }',
|
|
1188
|
-
summary: 'Test run a flow with synthetic trigger data',
|
|
1189
|
-
},
|
|
1190
|
-
{
|
|
1191
|
-
category: CATEGORY_AUTOMATIONS,
|
|
1192
|
-
free: true,
|
|
1193
|
-
method: 'POST',
|
|
1194
|
-
parameters: [
|
|
1195
|
-
{ description: 'Inbound webhook token', in: 'path', name: 'token', required: true, type: 'string' },
|
|
1196
|
-
],
|
|
1197
|
-
path: '/api/v1/webhooks/inbound/:token',
|
|
1198
|
-
responseShape: '{ accepted: true, flowId }',
|
|
1199
|
-
summary: 'Trigger a flow via inbound webhook (no auth required, token acts as auth)',
|
|
1200
|
-
},
|
|
1201
924
|
|
|
1202
925
|
// --- Support ---
|
|
1203
926
|
{
|
package/src/tools/tweetclaw.ts
CHANGED
|
@@ -245,21 +245,7 @@ async () => {
|
|
|
245
245
|
}
|
|
246
246
|
\`\`\`
|
|
247
247
|
|
|
248
|
-
### 16.
|
|
249
|
-
\`\`\`javascript
|
|
250
|
-
async () => {
|
|
251
|
-
return xquik.request('/api/v1/integrations', {
|
|
252
|
-
method: 'POST',
|
|
253
|
-
body: {
|
|
254
|
-
type: 'telegram',
|
|
255
|
-
chatId: '123456789',
|
|
256
|
-
eventTypes: ['tweet.new', 'tweet.reply', 'draw.completed', 'extraction.completed']
|
|
257
|
-
}
|
|
258
|
-
});
|
|
259
|
-
}
|
|
260
|
-
\`\`\`
|
|
261
|
-
|
|
262
|
-
### 17. Community actions (create, join, leave)
|
|
248
|
+
### 16. Community actions (create, join, leave)
|
|
263
249
|
\`\`\`javascript
|
|
264
250
|
async () => {
|
|
265
251
|
// Join a community
|
|
@@ -273,14 +259,14 @@ async () => {
|
|
|
273
259
|
}
|
|
274
260
|
\`\`\`
|
|
275
261
|
|
|
276
|
-
###
|
|
262
|
+
### 17. Subscribe (FREE - returns checkout URL)
|
|
277
263
|
\`\`\`javascript
|
|
278
264
|
async () => {
|
|
279
265
|
return xquik.request('/api/v1/subscribe', { method: 'POST' });
|
|
280
266
|
}
|
|
281
267
|
\`\`\`
|
|
282
268
|
|
|
283
|
-
###
|
|
269
|
+
### 18. Draft & optimize tweet text (3-step compose flow, FREE)
|
|
284
270
|
\`\`\`javascript
|
|
285
271
|
async () => {
|
|
286
272
|
// Use this ONLY when the user wants help WRITING tweet text.
|
|
@@ -297,7 +283,7 @@ async () => {
|
|
|
297
283
|
\`\`\`
|
|
298
284
|
|
|
299
285
|
## Cost
|
|
300
|
-
- Free: /api/v1/compose, /api/v1/styles (cached lookup/save/delete/compare), /api/v1/drafts, /api/v1/radar, /api/v1/subscribe, /api/v1/account, /api/v1/api-keys, /api/v1/
|
|
286
|
+
- Free: /api/v1/compose, /api/v1/styles (cached lookup/save/delete/compare), /api/v1/drafts, /api/v1/radar, /api/v1/subscribe, /api/v1/account, /api/v1/api-keys, /api/v1/x/accounts, /api/v1/support/*
|
|
301
287
|
- MPP pay-per-use (no account/subscription needed, 32 endpoints): GET /api/v1/x/tweets/:id ($0.00015/call), GET /api/v1/x/tweets/search ($0.00015/tweet), GET /api/v1/x/tweets/:id/quotes ($0.00015/tweet), GET /api/v1/x/tweets/:id/replies ($0.00015/tweet), GET /api/v1/x/tweets/:id/retweeters ($0.00015/user), GET /api/v1/x/tweets/:id/favoriters ($0.00015/user), GET /api/v1/x/tweets/:id/thread ($0.00015/tweet), GET /api/v1/x/users/:username ($0.00015/call), GET /api/v1/x/users/:id/tweets ($0.00015/tweet), GET /api/v1/x/users/:id/likes ($0.00015/tweet), GET /api/v1/x/users/:id/media ($0.00015/tweet), GET /api/v1/x/followers/check ($0.00105/call), GET /api/v1/x/articles/:tweetId ($0.00105/call), POST /api/v1/x/media/download ($0.00015/media), GET /api/v1/trends ($0.00045/call), GET /api/v1/x/trends ($0.00045/call), GET /api/v1/x/communities/:id/info ($0.00015/call), GET /api/v1/x/communities/:id/members ($0.00015/user), GET /api/v1/x/communities/:id/moderators ($0.00015/user), GET /api/v1/x/communities/:id/tweets ($0.00015/tweet), GET /api/v1/x/communities/search ($0.00015/community), GET /api/v1/x/communities/tweets ($0.00015/tweet), GET /api/v1/x/lists/:id/followers ($0.00015/user), GET /api/v1/x/lists/:id/members ($0.00015/user), GET /api/v1/x/lists/:id/tweets ($0.00015/tweet), GET /api/v1/x/users/batch ($0.00015/user), GET /api/v1/x/users/search ($0.00015/user), GET /api/v1/x/users/:id/followers ($0.00015/user), GET /api/v1/x/users/:id/followers-you-know ($0.00015/user), GET /api/v1/x/users/:id/following ($0.00015/user), GET /api/v1/x/users/:id/mentions ($0.00015/tweet), GET /api/v1/x/users/:id/verified-followers ($0.00015/user)
|
|
302
288
|
- Subscription required: /api/v1/styles (X API refresh when cache >7 days), /api/v1/x/profile, /api/v1/x/communities, /api/v1/x/dm, /api/v1/extractions, /api/v1/draws, /api/v1/monitors, /api/v1/events, /api/v1/webhooks, /api/v1/styles/:username/performance, /api/v1/trending/:source
|
|
303
289
|
- Write actions (subscription required): POST /api/v1/x/tweets, DELETE /api/v1/x/tweets/:id, POST|DELETE /api/v1/x/tweets/:id/like, POST /api/v1/x/tweets/:id/retweet, POST|DELETE /api/v1/x/users/:id/follow, POST /api/v1/x/dm/:userId, POST /api/v1/x/media, PATCH /api/v1/x/profile, PATCH /api/v1/x/profile/avatar, PATCH /api/v1/x/profile/banner, POST|DELETE /api/v1/x/communities, POST|DELETE /api/v1/x/communities/:id/join
|