SocialToAIStart freeConsole
POST/v1/call/x.following

X (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.

100 credits on sign-up, no card needed
12 creditsper call
Up to 200 per pageone page per call
2026-10-17last tested
798 Bsample response, 1 item

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"}
Sign in to run12 creditsOpens in the Playground with these parameters after you sign in. It never runs by itself.
200 OK798 B12 credits
{  "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}
@…·text removed from the sample
4,232 followers1,215 following6,090 posts

Names and text were removed from the sample; the numbers are as recorded.

Sample data1 of the 200 items recorded

2 parameters.
1 required.

Send them as a JSON body with POST. Your key goes in the Authorization header, never in the URL.

NameTypeRequiredDefaultDescription
usernamestringRequired—X handle, without the @
cursorstringOptional—Pass page.cursor from the last response to get the next page.

Where to get what you send.

username

X handle, without the @ (e.g. WHO)

Every item these return carries its username; send it as it is:

The fields of each item.
What X cannot give is marked.

FieldTypeMeaning
items[].usernamestringThe handle.
items[].namestringThe display name.
items[].urlstringA link to the profile.
items[].biostringThe bio.
items[].verifiedbooleanalways nullWhether the account is verified.
items[].followersintegerFollower count.
items[].followingintegerHow many accounts it follows.
items[].posts_countintegerHow many posts it has published.
nullFields X cannot give

Read 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.

One call returns a page of up to 200 items. When page.has_more is true, send page.cursor back as cursor for the next page; each page costs 12 credits and a cursor works for 30 minutes.
A call that runs and finds nothing is a successful call: status is "empty", items is empty, and it costs 12 credits.
On this call X cannot tell a post that does not exist from one with no data: both come back as empty, and both are charged.

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.

  1. Get a page of the accounts an X user follows, up to 200 a page: WHO.
    call {"op":"x.following","username":"WHO"}
    12 credits
  2. 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.
    search {"platform":"x","query":"Smithsonian","type":"user"}call {"op":"x.following","username":"<username>"} × 3
    41 credits

Questions.
Short answers.

Everything on X
Do I need a X account or X's own API access?
No. You only need a SocialToAI key. The call returns content and account information publicly visible on X; you never sign in to X or apply for anything there.

Your AI is one URL away
from all of social media.

100 credits on sign-up, no card needed