curl --request GET \
--url https://api.twitterapi.io/twitter/tweet/thread_context \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.twitterapi.io/twitter/tweet/thread_context"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.twitterapi.io/twitter/tweet/thread_context', 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.twitterapi.io/twitter/tweet/thread_context",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.twitterapi.io/twitter/tweet/thread_context"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.twitterapi.io/twitter/tweet/thread_context")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.twitterapi.io/twitter/tweet/thread_context")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"replies": [
{
"type": "tweet",
"id": "<string>",
"url": "<string>",
"text": "<string>",
"source": "<string>",
"retweetCount": 123,
"replyCount": 123,
"likeCount": 123,
"quoteCount": 123,
"viewCount": 123,
"createdAt": "<string>",
"lang": "<string>",
"bookmarkCount": 123,
"isReply": true,
"inReplyToId": "<string>",
"conversationId": "<string>",
"displayTextRange": [
123
],
"inReplyToUserId": "<string>",
"inReplyToUsername": "<string>",
"author": {
"type": "user",
"userName": "<string>",
"url": "<string>",
"id": "<string>",
"name": "<string>",
"isBlueVerified": true,
"verifiedType": "<string>",
"profilePicture": "<string>",
"coverPicture": "<string>",
"description": "<string>",
"location": "<string>",
"followers": 123,
"following": 123,
"canDm": true,
"createdAt": "<string>",
"favouritesCount": 123,
"hasCustomTimelines": true,
"isTranslator": true,
"mediaCount": 123,
"statusesCount": 123,
"withheldInCountries": [
"<string>"
],
"affiliatesHighlightedLabel": {},
"possiblySensitive": true,
"pinnedTweetIds": [
"<string>"
],
"isAutomated": true,
"automatedBy": "<string>",
"unavailable": true,
"message": "<string>",
"unavailableReason": "<string>",
"profile_bio": {
"description": "<string>",
"entities": {
"description": {
"urls": [
{
"display_url": "<string>",
"expanded_url": "<string>",
"indices": [
123
],
"url": "<string>"
}
]
},
"url": {
"urls": [
{
"display_url": "<string>",
"expanded_url": "<string>",
"indices": [
123
],
"url": "<string>"
}
]
}
}
}
},
"entities": {
"hashtags": [
{
"indices": [
123
],
"text": "<string>"
}
],
"urls": [
{
"display_url": "<string>",
"expanded_url": "<string>",
"indices": [
123
],
"url": "<string>"
}
],
"user_mentions": [
{
"id_str": "<string>",
"name": "<string>",
"screen_name": "<string>"
}
]
},
"quoted_tweet": "<unknown>",
"retweeted_tweet": "<unknown>",
"isLimitedReply": true
}
],
"has_next_page": true,
"next_cursor": "<string>",
"message": "<string>"
}{
"error": 123,
"message": "<string>"
}Get Tweet Thread Context
Get the thread context of a tweet.Suppose a tweet thread consists of t1, t2 (replying to t1), t3 (replying to t2), and t4, t5, t6 (all replying to t3). If we provide an API where you input t3 and receive t1, t2, t3, t4, t5, t6.Pagination is supported.The pagination size cannot be set (due to Twitter’s limitations), and the data returned per page is not fixed.
curl --request GET \
--url https://api.twitterapi.io/twitter/tweet/thread_context \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.twitterapi.io/twitter/tweet/thread_context"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.twitterapi.io/twitter/tweet/thread_context', 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.twitterapi.io/twitter/tweet/thread_context",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.twitterapi.io/twitter/tweet/thread_context"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.twitterapi.io/twitter/tweet/thread_context")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.twitterapi.io/twitter/tweet/thread_context")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"replies": [
{
"type": "tweet",
"id": "<string>",
"url": "<string>",
"text": "<string>",
"source": "<string>",
"retweetCount": 123,
"replyCount": 123,
"likeCount": 123,
"quoteCount": 123,
"viewCount": 123,
"createdAt": "<string>",
"lang": "<string>",
"bookmarkCount": 123,
"isReply": true,
"inReplyToId": "<string>",
"conversationId": "<string>",
"displayTextRange": [
123
],
"inReplyToUserId": "<string>",
"inReplyToUsername": "<string>",
"author": {
"type": "user",
"userName": "<string>",
"url": "<string>",
"id": "<string>",
"name": "<string>",
"isBlueVerified": true,
"verifiedType": "<string>",
"profilePicture": "<string>",
"coverPicture": "<string>",
"description": "<string>",
"location": "<string>",
"followers": 123,
"following": 123,
"canDm": true,
"createdAt": "<string>",
"favouritesCount": 123,
"hasCustomTimelines": true,
"isTranslator": true,
"mediaCount": 123,
"statusesCount": 123,
"withheldInCountries": [
"<string>"
],
"affiliatesHighlightedLabel": {},
"possiblySensitive": true,
"pinnedTweetIds": [
"<string>"
],
"isAutomated": true,
"automatedBy": "<string>",
"unavailable": true,
"message": "<string>",
"unavailableReason": "<string>",
"profile_bio": {
"description": "<string>",
"entities": {
"description": {
"urls": [
{
"display_url": "<string>",
"expanded_url": "<string>",
"indices": [
123
],
"url": "<string>"
}
]
},
"url": {
"urls": [
{
"display_url": "<string>",
"expanded_url": "<string>",
"indices": [
123
],
"url": "<string>"
}
]
}
}
}
},
"entities": {
"hashtags": [
{
"indices": [
123
],
"text": "<string>"
}
],
"urls": [
{
"display_url": "<string>",
"expanded_url": "<string>",
"indices": [
123
],
"url": "<string>"
}
],
"user_mentions": [
{
"id_str": "<string>",
"name": "<string>",
"screen_name": "<string>"
}
]
},
"quoted_tweet": "<unknown>",
"retweeted_tweet": "<unknown>",
"isLimitedReply": true
}
],
"has_next_page": true,
"next_cursor": "<string>",
"message": "<string>"
}{
"error": 123,
"message": "<string>"
}Authorizations
Query Parameters
The tweet ID to get. Can be a reply tweet or a original tweet.
The cursor to paginate through the results. First page is "".
Response
Tweet replies response
Array of tweets
Show child attributes
Show child attributes
Indicates if there are more results available. If true, use next_cursor to fetch the next page. Warning: Due to Twitter API inconsistency, has_more might return true even when no additional data exists. In such cases, subsequent requests will return empty results - this is a known platform limitation.
Cursor for fetching the next page of results
Status of the request.success or error
success, error Message of the request.error message