Unfollow a user on X/Twitter
curl --request POST \
--url https://api.aisa.one/apis/v1/twitter/unfollow_twitter \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"target_user_id": "2244994945"
}
'import requests
url = "https://api.aisa.one/apis/v1/twitter/unfollow_twitter"
payload = { "target_user_id": "2244994945" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({target_user_id: '2244994945'})
};
fetch('https://api.aisa.one/apis/v1/twitter/unfollow_twitter', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aisa.one/apis/v1/twitter/unfollow_twitter",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'target_user_id' => '2244994945'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/apis/v1/twitter/unfollow_twitter"
payload := strings.NewReader("{\n \"target_user_id\": \"2244994945\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.aisa.one/apis/v1/twitter/unfollow_twitter")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"target_user_id\": \"2244994945\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/twitter/unfollow_twitter")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"target_user_id\": \"2244994945\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"following": false
}
}Post & Actions
Unfollow a User
Make the authenticated source user unfollow a target user on X/Twitter. Proxies the official X v2 unfollow-user endpoint through the AIsa gateway.
POST
https://api.aisa.one/apis/v1
/
twitter
/
unfollow_twitter
Unfollow a user on X/Twitter
curl --request POST \
--url https://api.aisa.one/apis/v1/twitter/unfollow_twitter \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"target_user_id": "2244994945"
}
'import requests
url = "https://api.aisa.one/apis/v1/twitter/unfollow_twitter"
payload = { "target_user_id": "2244994945" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({target_user_id: '2244994945'})
};
fetch('https://api.aisa.one/apis/v1/twitter/unfollow_twitter', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aisa.one/apis/v1/twitter/unfollow_twitter",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'target_user_id' => '2244994945'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/apis/v1/twitter/unfollow_twitter"
payload := strings.NewReader("{\n \"target_user_id\": \"2244994945\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.aisa.one/apis/v1/twitter/unfollow_twitter")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"target_user_id\": \"2244994945\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/twitter/unfollow_twitter")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"target_user_id\": \"2244994945\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"following": false
}
}Unfollow a user on X/Twitter on behalf of the authenticated source user. This is a proxy for the official X v2
DELETE /2/users/{source_user_id}/following/{target_user_id} endpoint, exposed through the AIsa gateway at https://api.aisa.one/apis/v1/twitter/unfollow_twitter. AIsa uses POST for consistency with the other Twitter write endpoints.
Prerequisites
- An AIsa API key (Bearer token for every request).
- A one-time OAuth authorization for the source user account. Link your X account by calling
POST /apis/v1/twitter/auth_twitter— that endpoint kicks off the OAuth flow and stores the resulting session against your AIsa key, so you do not pass OAuth tokens in the request body here. - The X session must hold the following scopes:
follows.write,tweet.read,users.read.
Looking to unfollow by
@username instead of numeric ID? Resolve the user first with GET /twitter/user/info, then pass the returned id as target_user_id.Response fields
| Field | Type | Meaning |
|---|---|---|
data.following | boolean | false once the source user no longer follows the target. Returned as false even if the source user wasn’t following the target to begin with — unfollow is idempotent. |
Idempotency
Callingunfollow_twitter against a user you’re not following is a no-op. The endpoint still returns 200 with { "data": { "following": false } }. This matches X’s own behavior and means you can safely retry.
For the full set of error responses and retry guidance, see Error Codes. Write endpoints count toward your standard key RPM/TPM — see Rate Limits.
Related
Link an X Account
Start the OAuth flow that enables this endpoint.
Follow a User
The inverse operation.
Check Follow Relationship
Verify the relationship before calling.
Authorizations
Your AIsa API key. The authenticated source user (the account doing the follow) is determined by the OAuth session attached to your key.
Body
application/json
Numeric ID of the X/Twitter user to unfollow. Must match the X regex ^[0-9]{1,19}$.
Pattern:
^[0-9]{1,19}$Example:
"2244994945"
Response
Unfollow succeeded (or the source user wasn't following the target to begin with).
Show child attributes
Show child attributes