Tweet
curl --request GET \
--url https://api.scraperize.com/v1/twitter/tweet \
--header 'x-api-key: <api-key>'import requests
url = "https://api.scraperize.com/v1/twitter/tweet"
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.scraperize.com/v1/twitter/tweet', 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.scraperize.com/v1/twitter/tweet",
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.scraperize.com/v1/twitter/tweet"
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.scraperize.com/v1/twitter/tweet")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.scraperize.com/v1/twitter/tweet")
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{
"data": {
"focalTweet": {
"id": "2092616549722968274",
"url": "https://x.com/honour_can_code/status/2092616549722968274",
"text": "Global talent meets Global market \nand realized they cannot compete\n\nnow they’re back to local market",
"isLongForm": false,
"lang": null,
"createdAtMs": 1787753639000,
"createdAt": "2026-08-26T14:13:59.000Z",
"counts": {
"likes": 1890,
"retweets": 361,
"replies": 83,
"quotes": null,
"bookmarks": 82
},
"views": "111097",
"author": {
"id": "1551091092468162560",
"name": "Robinson Honour",
"screenName": "honour_can_code",
"url": "https://x.com/honour_can_code",
"bio": "building @pxxl_space",
"avatarUrl": "https://pbs.twimg.com/profile_images/1930817536863375361/OWkQS_oM_normal.jpg",
"avatarUrlHd": "https://pbs.twimg.com/profile_images/1930817536863375361/OWkQS_oM_400x400.jpg",
"followers": 13078,
"following": 1932,
"tweetCount": 16114,
"verified": true,
"verifiedType": null,
"protected": false,
"profileImageShape": "Circle",
"professionalCategory": null
},
"media": [],
"mentions": [],
"urls": [],
"hashtags": [],
"cashtags": [],
"card": null,
"communityNote": null,
"article": null,
"isReply": false,
"replyToTweetId": null,
"replyToUserId": null,
"isQuote": false,
"quotedTweetId": null,
"quotedTweet": null,
"possiblySensitive": null,
"conversationControl": null,
"editTweetIds": null,
"place": null
},
"replies": [
{
"id": "2092648660848783643",
"url": "https://x.com/jayhemz/status/2092648660848783643",
"text": "@honour_can_code I go lie for you?",
"isLongForm": false,
"lang": null,
"createdAtMs": 1787761294000,
"createdAt": "2026-08-26T16:21:34.000Z",
"counts": {
"likes": 86,
"retweets": 2,
"replies": 6,
"quotes": null,
"bookmarks": 1
},
"views": "6560",
"author": {
"id": "1625981691058704384",
"name": "Johnmark Obiefuna",
"screenName": "jayhemz",
"url": "https://x.com/jayhemz",
"bio": null,
"avatarUrl": "https://pbs.twimg.com/profile_images/2062452288128442368/mEjipPZ9_normal.jpg",
"avatarUrlHd": "https://pbs.twimg.com/profile_images/2062452288128442368/mEjipPZ9_400x400.jpg",
"followers": 11002,
"following": 2636,
"tweetCount": 14989,
"verified": true,
"verifiedType": null,
"protected": false,
"profileImageShape": "Circle",
"professionalCategory": null
},
"media": [],
"mentions": [
{
"screenName": "honour_can_code",
"id": "1551091092468162560",
"indices": [
0,
16
]
}
],
"urls": [],
"hashtags": [],
"cashtags": [],
"card": null,
"communityNote": null,
"article": null,
"isReply": true,
"replyToTweetId": "2092616549722968274",
"replyToUserId": "1551091092468162560",
"isQuote": false,
"quotedTweetId": null,
"quotedTweet": null,
"possiblySensitive": null,
"conversationControl": null,
"editTweetIds": null,
"place": null
},
{
"id": "2092623785853632573",
"url": "https://x.com/dili369_/status/2092623785853632573",
"text": "@honour_can_code The unstoppable force met the moveable object",
"isLongForm": false,
"lang": null,
"createdAtMs": 1787755364000,
"createdAt": "2026-08-26T14:42:44.000Z",
"counts": {
"likes": 31,
"retweets": 0,
"replies": 1,
"quotes": null,
"bookmarks": 0
},
"views": "3329",
"author": {
"id": "1700457183807205376",
"name": "DILI",
"screenName": "dili369_",
"url": "https://x.com/dili369_",
"bio": null,
"avatarUrl": "https://pbs.twimg.com/profile_images/2097802899275546624/HoSifLls_normal.jpg",
"avatarUrlHd": "https://pbs.twimg.com/profile_images/2097802899275546624/HoSifLls_400x400.jpg",
"followers": 2340,
"following": 1948,
"tweetCount": 22206,
"verified": true,
"verifiedType": null,
"protected": false,
"profileImageShape": "Circle",
"professionalCategory": null
},
"media": [],
"mentions": [
{
"screenName": "honour_can_code",
"id": "1551091092468162560",
"indices": [
0,
16
]
}
],
"urls": [],
"hashtags": [],
"cashtags": [],
"card": null,
"communityNote": null,
"article": null,
"isReply": true,
"replyToTweetId": "2092616549722968274",
"replyToUserId": "1551091092468162560",
"isQuote": false,
"quotedTweetId": null,
"quotedTweet": null,
"possiblySensitive": null,
"conversationControl": null,
"editTweetIds": null,
"place": null
},
{
"id": "2092662184731975716",
"url": "https://x.com/agentm2021/status/2092662184731975716",
"text": "@honour_can_code The CEOs with god complexes who believe they're world class geniuses shackled by the average Naija employee.\n\nFunny people",
"isLongForm": false,
"lang": null,
"createdAtMs": 1787764519000,
"createdAt": "2026-08-26T17:15:19.000Z",
"counts": {
"likes": 24,
"retweets": 0,
"replies": 0,
"quotes": null,
"bookmarks": 0
},
"views": "1739",
"author": {
"id": "1300178055856558080",
"name": "splintercell",
"screenName": "agentm2021",
"url": "https://x.com/agentm2021",
"bio": null,
"avatarUrl": "https://pbs.twimg.com/profile_images/1387517169345437696/G8BcGg0O_normal.jpg",
"avatarUrlHd": "https://pbs.twimg.com/profile_images/1387517169345437696/G8BcGg0O_400x400.jpg",
"followers": 92,
"following": 111,
"tweetCount": 25177,
"verified": false,
"verifiedType": null,
"protected": false,
"profileImageShape": "Circle",
"professionalCategory": null
},
"media": [],
"mentions": [
{
"screenName": "honour_can_code",
"id": "1551091092468162560",
"indices": [
0,
16
]
}
],
"urls": [],
"hashtags": [],
"cashtags": [],
"card": null,
"communityNote": null,
"article": null,
"isReply": true,
"replyToTweetId": "2092616549722968274",
"replyToUserId": "1551091092468162560",
"isQuote": false,
"quotedTweetId": null,
"quotedTweet": null,
"possiblySensitive": null,
"conversationControl": null,
"editTweetIds": null,
"place": null
}
],
"replyCount": 3,
"fetchedAt": "2026-09-14T12:12:44.891Z"
},
"meta": {
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f",
"creditsCharged": 1,
"creditsRemaining": 4999,
"cached": false
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "API key required — pass it in the `x-api-key` header.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}{
"error": {
"code": "INSUFFICIENT_CREDITS",
"message": "This request costs 1 credit, but your balance is 0. Top up to continue.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Request validation failed",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f",
"details": [
{
"path": "url",
"message": "Required"
}
]
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded — max 100 requests per 60s. Retry in ~30s.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}{
"error": {
"code": "UPSTREAM_BLOCKED",
"message": "The source is temporarily unavailable. Please try again shortly.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}Twitter
Tweet
Fetches a public tweet by its permalink and returns the focal tweet plus its reply thread. Set trim=true for a lightweight response.
GET
/
v1
/
twitter
/
tweet
Tweet
curl --request GET \
--url https://api.scraperize.com/v1/twitter/tweet \
--header 'x-api-key: <api-key>'import requests
url = "https://api.scraperize.com/v1/twitter/tweet"
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.scraperize.com/v1/twitter/tweet', 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.scraperize.com/v1/twitter/tweet",
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.scraperize.com/v1/twitter/tweet"
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.scraperize.com/v1/twitter/tweet")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.scraperize.com/v1/twitter/tweet")
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{
"data": {
"focalTweet": {
"id": "2092616549722968274",
"url": "https://x.com/honour_can_code/status/2092616549722968274",
"text": "Global talent meets Global market \nand realized they cannot compete\n\nnow they’re back to local market",
"isLongForm": false,
"lang": null,
"createdAtMs": 1787753639000,
"createdAt": "2026-08-26T14:13:59.000Z",
"counts": {
"likes": 1890,
"retweets": 361,
"replies": 83,
"quotes": null,
"bookmarks": 82
},
"views": "111097",
"author": {
"id": "1551091092468162560",
"name": "Robinson Honour",
"screenName": "honour_can_code",
"url": "https://x.com/honour_can_code",
"bio": "building @pxxl_space",
"avatarUrl": "https://pbs.twimg.com/profile_images/1930817536863375361/OWkQS_oM_normal.jpg",
"avatarUrlHd": "https://pbs.twimg.com/profile_images/1930817536863375361/OWkQS_oM_400x400.jpg",
"followers": 13078,
"following": 1932,
"tweetCount": 16114,
"verified": true,
"verifiedType": null,
"protected": false,
"profileImageShape": "Circle",
"professionalCategory": null
},
"media": [],
"mentions": [],
"urls": [],
"hashtags": [],
"cashtags": [],
"card": null,
"communityNote": null,
"article": null,
"isReply": false,
"replyToTweetId": null,
"replyToUserId": null,
"isQuote": false,
"quotedTweetId": null,
"quotedTweet": null,
"possiblySensitive": null,
"conversationControl": null,
"editTweetIds": null,
"place": null
},
"replies": [
{
"id": "2092648660848783643",
"url": "https://x.com/jayhemz/status/2092648660848783643",
"text": "@honour_can_code I go lie for you?",
"isLongForm": false,
"lang": null,
"createdAtMs": 1787761294000,
"createdAt": "2026-08-26T16:21:34.000Z",
"counts": {
"likes": 86,
"retweets": 2,
"replies": 6,
"quotes": null,
"bookmarks": 1
},
"views": "6560",
"author": {
"id": "1625981691058704384",
"name": "Johnmark Obiefuna",
"screenName": "jayhemz",
"url": "https://x.com/jayhemz",
"bio": null,
"avatarUrl": "https://pbs.twimg.com/profile_images/2062452288128442368/mEjipPZ9_normal.jpg",
"avatarUrlHd": "https://pbs.twimg.com/profile_images/2062452288128442368/mEjipPZ9_400x400.jpg",
"followers": 11002,
"following": 2636,
"tweetCount": 14989,
"verified": true,
"verifiedType": null,
"protected": false,
"profileImageShape": "Circle",
"professionalCategory": null
},
"media": [],
"mentions": [
{
"screenName": "honour_can_code",
"id": "1551091092468162560",
"indices": [
0,
16
]
}
],
"urls": [],
"hashtags": [],
"cashtags": [],
"card": null,
"communityNote": null,
"article": null,
"isReply": true,
"replyToTweetId": "2092616549722968274",
"replyToUserId": "1551091092468162560",
"isQuote": false,
"quotedTweetId": null,
"quotedTweet": null,
"possiblySensitive": null,
"conversationControl": null,
"editTweetIds": null,
"place": null
},
{
"id": "2092623785853632573",
"url": "https://x.com/dili369_/status/2092623785853632573",
"text": "@honour_can_code The unstoppable force met the moveable object",
"isLongForm": false,
"lang": null,
"createdAtMs": 1787755364000,
"createdAt": "2026-08-26T14:42:44.000Z",
"counts": {
"likes": 31,
"retweets": 0,
"replies": 1,
"quotes": null,
"bookmarks": 0
},
"views": "3329",
"author": {
"id": "1700457183807205376",
"name": "DILI",
"screenName": "dili369_",
"url": "https://x.com/dili369_",
"bio": null,
"avatarUrl": "https://pbs.twimg.com/profile_images/2097802899275546624/HoSifLls_normal.jpg",
"avatarUrlHd": "https://pbs.twimg.com/profile_images/2097802899275546624/HoSifLls_400x400.jpg",
"followers": 2340,
"following": 1948,
"tweetCount": 22206,
"verified": true,
"verifiedType": null,
"protected": false,
"profileImageShape": "Circle",
"professionalCategory": null
},
"media": [],
"mentions": [
{
"screenName": "honour_can_code",
"id": "1551091092468162560",
"indices": [
0,
16
]
}
],
"urls": [],
"hashtags": [],
"cashtags": [],
"card": null,
"communityNote": null,
"article": null,
"isReply": true,
"replyToTweetId": "2092616549722968274",
"replyToUserId": "1551091092468162560",
"isQuote": false,
"quotedTweetId": null,
"quotedTweet": null,
"possiblySensitive": null,
"conversationControl": null,
"editTweetIds": null,
"place": null
},
{
"id": "2092662184731975716",
"url": "https://x.com/agentm2021/status/2092662184731975716",
"text": "@honour_can_code The CEOs with god complexes who believe they're world class geniuses shackled by the average Naija employee.\n\nFunny people",
"isLongForm": false,
"lang": null,
"createdAtMs": 1787764519000,
"createdAt": "2026-08-26T17:15:19.000Z",
"counts": {
"likes": 24,
"retweets": 0,
"replies": 0,
"quotes": null,
"bookmarks": 0
},
"views": "1739",
"author": {
"id": "1300178055856558080",
"name": "splintercell",
"screenName": "agentm2021",
"url": "https://x.com/agentm2021",
"bio": null,
"avatarUrl": "https://pbs.twimg.com/profile_images/1387517169345437696/G8BcGg0O_normal.jpg",
"avatarUrlHd": "https://pbs.twimg.com/profile_images/1387517169345437696/G8BcGg0O_400x400.jpg",
"followers": 92,
"following": 111,
"tweetCount": 25177,
"verified": false,
"verifiedType": null,
"protected": false,
"profileImageShape": "Circle",
"professionalCategory": null
},
"media": [],
"mentions": [
{
"screenName": "honour_can_code",
"id": "1551091092468162560",
"indices": [
0,
16
]
}
],
"urls": [],
"hashtags": [],
"cashtags": [],
"card": null,
"communityNote": null,
"article": null,
"isReply": true,
"replyToTweetId": "2092616549722968274",
"replyToUserId": "1551091092468162560",
"isQuote": false,
"quotedTweetId": null,
"quotedTweet": null,
"possiblySensitive": null,
"conversationControl": null,
"editTweetIds": null,
"place": null
}
],
"replyCount": 3,
"fetchedAt": "2026-09-14T12:12:44.891Z"
},
"meta": {
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f",
"creditsCharged": 1,
"creditsRemaining": 4999,
"cached": false
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "API key required — pass it in the `x-api-key` header.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}{
"error": {
"code": "INSUFFICIENT_CREDITS",
"message": "This request costs 1 credit, but your balance is 0. Top up to continue.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Request validation failed",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f",
"details": [
{
"path": "url",
"message": "Required"
}
]
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded — max 100 requests per 60s. Retry in ~30s.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}{
"error": {
"code": "UPSTREAM_BLOCKED",
"message": "The source is temporarily unavailable. Please try again shortly.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}Cost: 1 credit per successful request. Errors and cache hits (
cache_max_age) are free.Copy for AI assistant
Copy for AI assistant
Paste this into ChatGPT, Claude or your coding assistant to generate working code for this endpoint (use the copy button).
Prompt
I want to make an API call to /v1/twitter/tweet. Here are the details:
Endpoint: GET https://api.scraperize.com/v1/twitter/tweet
Description: Fetches a public tweet by its permalink and returns the focal tweet plus its reply thread. Set `trim=true` for a lightweight response.
Required Headers:
- x-api-key: Your API key
Parameters:
- url (string) [required]: Public tweet permalink, e.g. https://x.com/user/status/1234567890
- trim (select): Return a trimmed-down response: only the focal tweet with essential fields, and no reply thread (`replies`/`replyCount` are omitted).
- cache_max_age (select): Optional. Return a cached result if one this age or newer exists — served for **0 credits** with `meta.cached=true` and `meta.cachedAt`. Otherwise a fresh scrape runs (**1 credit**) and refreshes the cache. Omit to always scrape fresh.
Example Response:
{
"data": {
"focalTweet": {
"id": "2092616549722968274",
"url": "https://x.com/honour_can_code/status/2092616549722968274",
"text": "Global talent meets Global market \nand realized they cannot compete\n\nnow they’re back to local market",
"isLongForm": false,
"lang": null,
"createdAtMs": 1787753639000,
"createdAt": "2026-08-26T14:13:59.000Z",
"counts": {
"likes": 1890,
"retweets": 361,
"replies": 83,
"quotes": null,
"bookmarks": 82
},
"views": "111097",
"author": {
"id": "1551091092468162560",
"name": "Robinson Honour",
"screenName": "honour_can_code",
"url": "https://x.com/honour_can_code",
"bio": "building @pxxl_space",
"avatarUrl": "https://pbs.twimg.com/profile_images/1930817536863375361/OWkQS_oM_normal.jpg",
"avatarUrlHd": "https://pbs.twimg.com/profile_images/1930817536863375361/OWkQS_oM_400x400.jpg",
"followers": 13078,
"following": 1932,
"tweetCount": 16114,
"verified": true,
"verifiedType": null,
"protected": false,
"profileImageShape": "Circle",
"professionalCategory": null
},
"media": [],
"mentions": [],
"urls": [],
"hashtags": [],
"cashtags": [],
"card": null,
"communityNote": null,
"article": null,
"isReply": false,
"replyToTweetId": null,
"replyToUserId": null,
"isQuote": false,
"quotedTweetId": null,
"quotedTweet": null,
"possiblySensitive": null,
"conversationControl": null,
"editTweetIds": null,
"place": null
},
"replies": [
{
"id": "2092648660848783643",
"url": "https://x.com/jayhemz/status/2092648660848783643",
"text": "@honour_can_code I go lie for you?",
"isLongForm": false,
"lang": null,
"createdAtMs": 1787761294000,
"createdAt": "2026-08-26T16:21:34.000Z",
"counts": {
"likes": 86,
"retweets": 2,
"replies": 6,
"quotes": null,
"bookmarks": 1
},
"views": "6560",
"author": {
"id": "1625981691058704384",
"name": "Johnmark Obiefuna",
"screenName": "jayhemz",
"url": "https://x.com/jayhemz",
"bio": null,
"avatarUrl": "https://pbs.twimg.com/profile_images/2062452288128442368/mEjipPZ9_normal.jpg",
"avatarUrlHd": "https://pbs.twimg.com/profile_images/2062452288128442368/mEjipPZ9_400x400.jpg",
"followers": 11002,
"following": 2636,
"tweetCount": 14989,
"verified": true,
"verifiedType": null,
"protected": false,
"profileImageShape": "Circle",
"professionalCategory": null
},
"media": [],
"mentions": [
{
"screenName": "honour_can_code",
"id": "1551091092468162560",
"indices": [
0
]
}
],
"urls": [],
"hashtags": [],
"cashtags": [],
"card": null,
"communityNote": null,
"article": null,
"isReply": true,
"replyToTweetId": "2092616549722968274",
"replyToUserId": "1551091092468162560",
"isQuote": false,
"quotedTweetId": null,
"quotedTweet": null,
"possiblySensitive": null,
"conversationControl": null,
"editTweetIds": null,
"place": null
}
],
"replyCount": 3,
"fetchedAt": "2026-09-14T12:12:44.891Z"
},
"meta": {
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f",
"creditsCharged": 1,
"creditsRemaining": 4999,
"cached": false
}
}
Please help me write code in my preferred programming language to make this API call and handle the response appropriately. Include error handling and best practices.
Authorizations
Your API key. Send it in the x-api-key header (or Authorization: Bearer <key>). Create and manage keys from your dashboard.
Query Parameters
Public tweet permalink, e.g. https://x.com/user/status/1234567890
Return a trimmed-down response: only the focal tweet with essential fields, and no reply thread (replies/replyCount are omitted).
Optional. Return a cached result if one this age or newer exists — served for 0 credits with meta.cached=true and meta.cachedAt. Otherwise a fresh scrape runs (1 credit) and refreshes the cache. Omit to always scrape fresh.
Available options:
1d, 3d, 7d, 14d, 30d