List published posts
curl --request GET \
--url https://api.superx.so/v1/posts \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.superx.so/v1/posts"
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/posts', 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/posts",
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/posts"
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/posts")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.superx.so/v1/posts")
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": [
{
"id": "1941123456789012345",
"text": "Consistency beats intensity. Post every day for 30 days and watch what happens.",
"posted_at": "2026-07-05T14:02:11.000Z",
"url": "https://x.com/mainhandle/status/1941123456789012345",
"is_reply": false,
"is_repost": false,
"is_thread": false,
"in_reply_to_id": null,
"is_quote": false,
"thread_id": "1941123456789012345",
"metrics": {
"likes": 231,
"replies": 18,
"reposts": 40,
"quotes": 3,
"bookmarks": 55,
"impressions": 48210
}
}
],
"pagination": {
"page": 1,
"limit": 20,
"has_more": true
}
}{
"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": "account_not_found",
"message": "No account with that id belongs to this key"
}
}{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded for the Pro plan (30 requests/min). Upgrade for higher limits.",
"retry_after": 42
}
}{
"error": {
"code": "internal_error",
"message": "Failed to fetch posts"
}
}{
"error": {
"code": "accounts_unavailable",
"message": "Account information is temporarily unavailable. Try again shortly."
}
}Content
List published posts
GET
/
v1
/
posts
List published posts
curl --request GET \
--url https://api.superx.so/v1/posts \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.superx.so/v1/posts"
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/posts', 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/posts",
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/posts"
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/posts")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.superx.so/v1/posts")
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": [
{
"id": "1941123456789012345",
"text": "Consistency beats intensity. Post every day for 30 days and watch what happens.",
"posted_at": "2026-07-05T14:02:11.000Z",
"url": "https://x.com/mainhandle/status/1941123456789012345",
"is_reply": false,
"is_repost": false,
"is_thread": false,
"in_reply_to_id": null,
"is_quote": false,
"thread_id": "1941123456789012345",
"metrics": {
"likes": 231,
"replies": 18,
"reposts": 40,
"quotes": 3,
"bookmarks": 55,
"impressions": 48210
}
}
],
"pagination": {
"page": 1,
"limit": 20,
"has_more": true
}
}{
"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": "account_not_found",
"message": "No account with that id belongs to this key"
}
}{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded for the Pro plan (30 requests/min). Upgrade for higher limits.",
"retry_after": 42
}
}{
"error": {
"code": "internal_error",
"message": "Failed to fetch posts"
}
}{
"error": {
"code": "accounts_unavailable",
"message": "Account information is temporarily unavailable. Try again shortly."
}
}Authorizations
A SuperX API key ("sxk_..."), created in the SuperX app under Account > API / MCP / CLI. Keys are server-side secrets.
Query Parameters
Account to act on, from GET /v1/accounts. Defaults to your main account. An id outside your accounts returns 404 account_not_found.
Which posts to include. posts returns original posts, quote posts and thread continuations (replies to your own posts), never replies to other accounts and never reposts. replies returns replies to other accounts. all returns everything the account wrote, reposts included.
Available options:
posts, replies, all UTC ISO-8601 lower bound (explicit Z or offset required).
UTC ISO-8601 upper bound (explicit Z or offset required).
Available options:
posted_at, likes, impressions Page size, 1 to 100.
Required range:
1 <= x <= 1001-based page number.
Required range:
x >= 1