/v1/call/x.followingX (Twitter) user following API
Only on X.
The X (Twitter) user following API returns a page of the accounts an X user follows, up to 200 a page. One call costs 12 credits ($0.024 to $0.04 depending on the pack); failed calls are free. Call it over HTTP or from your AI client over MCP. Last tested 2026-10-17.
Last updated:
Request and response
curl https://api.socialtoai.com/v1/call/x.following \ -H "Authorization: Bearer $SOCIALTOAI_KEY" \ -H "Content-Type: application/json" \ -d '{ "username": "WHO" }'import osimport requestsresponse = requests.post( "https://api.socialtoai.com/v1/call/x.following", headers={"Authorization": f"Bearer {os.environ['SOCIALTOAI_KEY']}"}, json={ "username": "WHO", },)print(response.json())# Connected over MCP? Ask in plain words.Use the X user following interface (x.following) with username: WHO.# Your AI calls the call tool with:{ "username": "WHO"}{ "op": "x.following", "platform": "x", "status": "ok", "items": [ { "platform": "x", "id": "…", "ref": "…", "approx": [], "type": "account", "username": "…", "name": "…", "url": "https://example.com/…", "bio": "…", "verified": null, "followers": 4232, "following": 1215, "posts_count": 6090 } ], "unavailable": ["verified"], "page": { "has_more": true, "cursor": "cur_…", "cursor_expires_at": "2026-10-12T19:34:49.000Z" }, "cost_credits": 12}Names and text were removed from the sample; the numbers are as recorded.
2 parameters.
1 required.
Send them as a JSON body with POST. Your key goes in the Authorization header, never in the URL.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| username | string | Required | — | X handle, without the @ |
| cursor | string | Optional | — | Pass page.cursor from the last response to get the next page. |
Where to get what you send.
usernameX handle, without the @ (e.g. WHO)
Every item these return carries its username; send it as it is:
followersUser followerssearch · type=userSearchcommunity_membersCommunity memberslist_followersList followerslist_membersList members
The fields of each item.
What X cannot give is marked.
| Field | Type | Meaning |
|---|---|---|
| items[].username | string | The handle. |
| items[].name | string | The display name. |
| items[].url | string | A link to the profile. |
| items[].bio | string | The bio. |
| items[].verified | booleanalways null | Whether the account is verified. |
| items[].followers | integer | Follower count. |
| items[].following | integer | How many accounts it follows. |
| items[].posts_count | integer | How many posts it has published. |
nullFields X cannot giveRead null as “X did not give this”, not as zero. These are always null on this call:
verifiedWhether the account is verified.
Every item also has platform, id, ref, approx and type; the response around the items is the same on every call. Response format
What to expect.
1 call per second per key, 5 after a purchase; going over is not charged. Rate limits
A failed call costs 0 credits and is never retried on its own. Error codes
Once connected over MCP, these questions use it.
Get a page of the accounts an X user follows, up to 200 a page: WHO.
12 creditscall {"op":"x.following","username":"WHO"}Find X accounts about "Smithsonian", then for the first 3: get a page of the accounts an X user follows, up to 200 a page.
41 creditssearch {"platform":"x","query":"Smithsonian","type":"user"}call {"op":"x.following","username":"<username>"} × 3