curl --request GET \
--url https://api.x.com/2/insights/historical \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.x.com/2/insights/historical"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.x.com/2/insights/historical', 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.x.com/2/insights/historical",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.x.com/2/insights/historical"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.x.com/2/insights/historical")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.x.com/2/insights/historical")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"errors": [
{
"error": "<string>",
"tweets": [
"<string>"
]
}
],
"measurement": {
"metrics_time_series": [
{
"tweet_id": "1346889436626259968",
"value": {
"metric_values": [
{
"metric_type": "<string>",
"metric_value": 123
}
],
"timestamp": {
"iso8601_time": "<string>"
}
}
}
],
"metrics_total": [
{
"tweet_id": "1346889436626259968",
"value": [
{
"metric_type": "<string>",
"metric_value": 123
}
]
}
]
}
}
],
"errors": [
{
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"status": 123
}
]
}{
"code": 123,
"message": "<string>"
}Get historical Post insights
Retrieves historical engagement metrics for specified Posts within a defined time range.
curl --request GET \
--url https://api.x.com/2/insights/historical \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.x.com/2/insights/historical"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.x.com/2/insights/historical', 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.x.com/2/insights/historical",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.x.com/2/insights/historical"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.x.com/2/insights/historical")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.x.com/2/insights/historical")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"errors": [
{
"error": "<string>",
"tweets": [
"<string>"
]
}
],
"measurement": {
"metrics_time_series": [
{
"tweet_id": "1346889436626259968",
"value": {
"metric_values": [
{
"metric_type": "<string>",
"metric_value": 123
}
],
"timestamp": {
"iso8601_time": "<string>"
}
}
}
],
"metrics_total": [
{
"tweet_id": "1346889436626259968",
"value": [
{
"metric_type": "<string>",
"metric_value": 123
}
]
}
]
}
}
],
"errors": [
{
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"status": 123
}
]
}{
"code": 123,
"message": "<string>"
}Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Query Parameters
List of PostIds for historical metrics.
1 - 25 elementsUnique identifier of this Tweet. This is returned as a string in order to avoid complications with languages and tools that cannot handle large integers.
^[0-9]{1,19}$["20"]
YYYY-MM-DDTHH:mm:ssZ. The UTC timestamp representing the end of the time range.
YYYY-MM-DDTHH:mm:ssZ. The UTC timestamp representing the start of the time range.
granularity of metrics response.
Daily, Hourly, Weekly, Total "Total"
request metrics for historical request.
1AppInstallAttempts, AppOpens, DetailExpands, EmailTweet, Engagements, Follows, HashtagClicks, Impressions, Likes, LinkClicks, MediaEngagements, MediaViews, PermalinkClicks, ProfileVisits, QuoteTweets, Replies, Retweets, UniqueVideoViews, UrlClicks, UserProfileClicks, VideoCompletions, VideoPlayed25Percent, VideoPlayed50Percent, VideoPlayed75Percent, VideoStarts, VideoViews A comma separated list of Engagement fields to display. The fields available for a Engagement object.
1errors, measurement ["errors", "measurement"]
Response
The request has succeeded.
1Show child attributes
Show child attributes
1An HTTP Problem Details object, as defined in IETF RFC 7807 (https://tools.ietf.org/html/rfc7807).
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
- Option 6
- Option 7
- Option 8
- Option 9
- Option 10
- Option 11
- Option 12
- Option 13
- Option 14
- Option 15
- Option 16
- Option 17
- Option 18
Show child attributes
Show child attributes