curl --request GET \
--url https://api.superx.so/v1/x/posts/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.superx.so/v1/x/posts/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.superx.so/v1/x/posts/{id}', 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.superx.so/v1/x/posts/{id}",
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.superx.so/v1/x/posts/{id}"
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.superx.so/v1/x/posts/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.superx.so/v1/x/posts/{id}")
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": {
"post": {
"id": "1938765432109876543",
"url": "https://x.com/buildersam/status/1938765432109876543",
"text": "I built my first product in 30 days with zero audience. Here is exactly what I would do differently:",
"created_at": "2026-06-20T15:04:00.000Z",
"author": {
"x_user_id": "44196397",
"username": "buildersam",
"name": "Sam Fields",
"avatar_url": "https://pbs.twimg.com/profile_images/1/avatar.jpg",
"verified": true,
"followers_count": 8421
},
"metrics": {
"likes": 4211,
"replies": 312,
"reposts": 388,
"quotes": 44,
"views": 512000,
"bookmarks": 1904
},
"in_reply_to_id": null
}
}
}{
"error": {
"code": "invalid_parameter",
"message": "since must be a UTC ISO-8601 timestamp"
}
}{
"error": {
"code": "invalid_api_key",
"message": "Unknown or revoked API key"
}
}{
"error": "subscription_required: The SuperX API requires an active subscription"
}{
"error": {
"code": "post_not_found",
"message": "No public post with that id. It may be deleted, protected, or the id may be wrong. A live lookup that fails upstream can also report this."
}
}{
"error": {
"code": "lookup_quota_exceeded",
"message": "Today's live X lookup allowance (300 lookups) is used up. It is shared with Ask SuperX in the app and resets at midnight UTC.",
"retry_after": 20400,
"limit": 300,
"reset_at": 1789430400
}
}{
"error": {
"code": "internal_error",
"message": "Failed to fetch posts"
}
}{
"error": {
"code": "upstream_error",
"message": "Failed to fetch scheduled posts. Try again shortly."
}
}{
"error": {
"code": "upstream_unavailable",
"message": "The scheduling service is temporarily unavailable. Retry with the same Idempotency-Key."
}
}Look up one public post live
Read one public X post as it is right now: full text (never shortened), author, engagement counts, media, link card, and the quoted post one level deep when there is one.
Owner-scoped, so there is no account_id: nothing upstream is
per-X-account. Costs ONE live-enrichment unit, TWO with
include_quotes, and also draws on the shared allowance of 300 live
lookups per UTC day that Ask SuperX in the app uses (see
Rate limits). Repeat lookups of the
same post within 15 minutes may be served from a server-side cache:
they still cost their enrichment units but do not touch the daily
allowance.
404 post_not_found means the post is deleted, protected, or the id
is wrong. Because the upstream batch read reports a missing post and
a failed read identically, an occasional transient upstream failure
surfaces here too, so retry once before concluding the post is gone.
The X-RateLimit-* headers on this endpoint report the ENRICHMENT
window, not the ordinary read window.
curl --request GET \
--url https://api.superx.so/v1/x/posts/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.superx.so/v1/x/posts/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.superx.so/v1/x/posts/{id}', 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.superx.so/v1/x/posts/{id}",
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.superx.so/v1/x/posts/{id}"
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.superx.so/v1/x/posts/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.superx.so/v1/x/posts/{id}")
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": {
"post": {
"id": "1938765432109876543",
"url": "https://x.com/buildersam/status/1938765432109876543",
"text": "I built my first product in 30 days with zero audience. Here is exactly what I would do differently:",
"created_at": "2026-06-20T15:04:00.000Z",
"author": {
"x_user_id": "44196397",
"username": "buildersam",
"name": "Sam Fields",
"avatar_url": "https://pbs.twimg.com/profile_images/1/avatar.jpg",
"verified": true,
"followers_count": 8421
},
"metrics": {
"likes": 4211,
"replies": 312,
"reposts": 388,
"quotes": 44,
"views": 512000,
"bookmarks": 1904
},
"in_reply_to_id": null
}
}
}{
"error": {
"code": "invalid_parameter",
"message": "since must be a UTC ISO-8601 timestamp"
}
}{
"error": {
"code": "invalid_api_key",
"message": "Unknown or revoked API key"
}
}{
"error": "subscription_required: The SuperX API requires an active subscription"
}{
"error": {
"code": "post_not_found",
"message": "No public post with that id. It may be deleted, protected, or the id may be wrong. A live lookup that fails upstream can also report this."
}
}{
"error": {
"code": "lookup_quota_exceeded",
"message": "Today's live X lookup allowance (300 lookups) is used up. It is shared with Ask SuperX in the app and resets at midnight UTC.",
"retry_after": 20400,
"limit": 300,
"reset_at": 1789430400
}
}{
"error": {
"code": "internal_error",
"message": "Failed to fetch posts"
}
}{
"error": {
"code": "upstream_error",
"message": "Failed to fetch scheduled posts. Try again shortly."
}
}{
"error": {
"code": "upstream_unavailable",
"message": "The scheduling service is temporarily unavailable. Retry with the same Idempotency-Key."
}
}Authorizations
A SuperX API key ("sxk_..."), created in the SuperX app under Account > API / MCP / CLI. Keys are server-side secrets.
Path Parameters
Numeric X post id (the digits at the end of a post URL).
^[0-9]{1,25}$Query Parameters
Also return a page of the posts quoting this one (up to 20, not exhaustive). Costs a second enrichment unit.
Response
The post.
Show child attributes
Show child attributes