x-developer
Version:
X (Twitter) data platform skill for AI coding agents. 100+ REST API endpoints, 2 MCP tools, 23 extraction types, HMAC webhooks.
82 lines (63 loc) • 2.65 kB
Markdown
name: follow-unfollow
description: "Use when the user wants to follow or unfollow accounts on X (Twitter), or check whether one account follows another. Single-target only; bulk follow operations require explicit per-account confirmation."
license: MIT
metadata:
internal: true
author: Xquik
version: "1.0.0"
openclaw:
requires:
env:
- XQUIK_API_KEY
primaryEnv: XQUIK_API_KEY
emoji: "➕"
homepage: https://docs.xquik.com
security:
contentTrust: trusted
contentIsolation: enforced
promptInjectionDefense: true
paymentConfirmation: required
writeConfirmation: required
executionModel: api-only
codeExecution: none
credentialProxy: false
# Follow & Unfollow on X
Follow and unfollow accounts as a connected user, and check follow state.
## Endpoints
| Endpoint | Purpose | Cost |
|---|---|---|
| POST /x/users/{id}/follow | Follow a user (numeric ID) | Write tier |
| DELETE /x/users/{id}/follow | Unfollow a user (numeric ID) | Write tier |
| GET /x/users/{username} | Resolve @handle to numeric user ID | Read tier |
| GET /x/followers/check?source=<a>&target=<b> | Does A follow B? | Read tier |
Base URL: `https://xquik.com/api/v1`. Auth: `x-api-key: xq_...` header.
## Quick reference
```
POST /x/users/{id}/follow
{ "account": "<connected_username>" }
-> { followed: true }
DELETE /x/users/{id}/follow
{ "account": "<connected_username>" }
```
The `{id}` path segment is the numeric user ID. Resolve a @handle with `GET /x/users/{username}` first.
## Typical flow
1. `GET /x/accounts` to pick the acting account.
2. `GET /x/users/{username}` to resolve each target handle to a numeric `id`.
3. Show the user the target handle and the acting account. Wait for approval.
4. Call `POST /x/users/{id}/follow` to follow, or `DELETE /x/users/{id}/follow` to unfollow.
## Bulk operations
If the user asks to follow or unfollow many accounts at once, list every target first, require explicit confirmation for the full list, then iterate with a short delay (1-2s) between calls to avoid rate limits. Never silently batch.
Hard no:
- Mass-following random accounts based on a scrape
- "Follow everyone who liked my tweet" workflows without user review of the full list
- Unfollowing loops that run in the background
## Errors
| Status | Code | Meaning |
|---|---|---|
| 403 | `target_blocked_you` | Cannot follow a user who blocked this account |
| 422 | `login_failed` | Reconnect in dashboard |
| 429 | `x_api_rate_limited` | Backoff |
## Related
Follower extraction: `extract-followers`. Full API: [x-twitter-scraper](../x-twitter-scraper/SKILL.md).