Reference example
# Fixed reference example. Playground inputs do not update this sample.
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"
}'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 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
Reference example
# Fixed reference example. Playground inputs do not update this sample.
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"
}'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.
Request contract
- Method and path: POST /apis/v1/twitter/unfollow_twitter
- Availability: enabled
- Request URL template: https://api.aisa.one/apis/v1/twitter/unfollow_twitter
- Runtime facts: a3adc9187fd943329f04d77651501718ebfb69f2eb47355d287b171db1c09ebc
{
"operationId": "unfollowTwitterUser",
"method": "POST",
"path": "/apis/v1/twitter/unfollow_twitter",
"servers": [
{
"url": "https://api.aisa.one"
}
],
"parameters": [],
"security": [
{
"bearerAuth": []
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"target_user_id"
],
"properties": {
"target_user_id": {
"type": "string",
"description": "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"
}
}
},
"examples": {
"unfollow_user": {
"summary": "Unfollow @TwitterDev (id 2244994945)",
"value": {
"target_user_id": "2244994945"
}
}
}
}
}
},
"x-aisa-status": "enabled",
"x-aisa-pricing": {
"cost_contract": "fixed_success",
"customer_multiplier": 1.0,
"customer_pricing": "provider_cost_multiplier",
"default_request_estimate_usd": 0.01,
"estimate_source": "profile_seed",
"evidence_source": "request_snapshot"
},
"components": {
"securitySchemes": {
"bearerAuth": {
"scheme": "bearer",
"type": "http"
}
}
}
}
Cost and request rules
Published reference price: $0.01 USD per successful request. Account-specific pricing and final settlement may differ. Published reference values are not an account-specific quote or a settled charge. For endpoints supporting X-AISA-Cost-Mode: quote, obtain a free quote for your exact request before execution; reconcile the settled cost with response metadata and Usage Logs. USD amounts use 1,000,000 integer micro-USD per dollar.- Default request reference estimate (USD): 0.01
- Cost contract: fixed_success
- Published reference multiplier: 1.0
- Settlement evidence source: request_snapshot
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
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