/healthPublicHealth check
Health check.
Node.js
const res = await fetch(`${BASE}/health`);
const data = await res.json();
console.log(data);Docs
Profiles, posts, and search for X. Authenticate with an API key. Plan limits are per wallet account. Base: https://api.probeuranus.fun
Sign in with a Solana wallet on the dashboard. First login creates a starter API key (shown once). Use Rotate when you need a new secret; the old one stops working immediately. Send the key with every request.
Authorization: Bearer <api_key> (or X-API-Key)Setup
const BASE = "https://api.probeuranus.fun"; const API_KEY = "probe_...";
Your wallet is on a plan (starter, pro, or unlimited). Quota is shared across that account's keys. Check GET /v1/me for remaining quota and reset times, or read these response headers:
X-RateLimit-Limit / X-RateLimit-Remaining / X-RateLimit-Reset · per minuteX-RateLimit-Limit-Daily / X-RateLimit-Remaining-Daily / X-RateLimit-Reset-Daily · daily (when set)X-RateLimit-Limit-Monthly / X-RateLimit-Remaining-Monthly / X-RateLimit-Reset-Monthly · monthly (when set)X-Plan · your plan nameRetry-After · wait time when limitedList responses use { data, next_cursor, cursor, meta }. Pass next_cursor back as ?cursor=. Timelines accept since_id, until_id, include_replies, include_retweets, and media_only.
Plan defaults are on the homepage.
JSON body shape:
Error shape
{ "error": "code", "message": "optional detail" }401: missing_api_key, invalid_key, inactive, unauthorized429: rate_limited, daily_quota, monthly_quota404: not_found503: x_sessions_exhausted, auth_fail (temporary capacity)502: temporary request failureNo API key required.
/healthPublicHealth check.
Node.js
const res = await fetch(`${BASE}/health`);
const data = await res.json();
console.log(data);/v1PublicFull list of available commands.
Node.js
const res = await fetch(`${BASE}/v1`);
const data = await res.json();
console.log(data);/v1/openapi.jsonPublicCommand list in a format API tools understand.
Node.js
const res = await fetch(`${BASE}/v1/openapi.json`);
const data = await res.json();
console.log(data);Needs your API key. Profile lookups may be briefly cached. Add fresh=1 if you need the newest data.
/v1/meAPI keyReturns plan limits, remaining RPM/daily/monthly quota, and reset timestamps for the wallet account that owns this API key. Quota is shared across the account's keys.
Node.js
const res = await fetch(`${BASE}/v1/me`, {
headers: {
Authorization: `Bearer ${API_KEY}`,
},
});
const data = await res.json();
console.log(data);/v1/user/infoAPI keyReturns profile fields, follower/following counts, statuses, media counts, etc.
Parameters
userName · query · required · stringX handle without @ (alias: username)
fresh · query · booleanBypass cache when 1/true/yes
Node.js
const res = await fetch(`${BASE}/v1/user/info?userName=elonmusk&fresh=1`, {
headers: {
Authorization: `Bearer ${API_KEY}`,
},
});
const data = await res.json();
console.log(data);/v1/user/tweetsAPI keyUser timeline with cursor pagination. Tweets include media[] and isRetweet.
Parameters
userName · query · required · stringX handle without @
limit · query · numberPage size (1-40, default 20)
cursor · query · stringOpaque pagination cursor. Pass next_cursor (or cursor) from the previous response unchanged.
include_replies · query · booleanInclude reply tweets (default false on /user/tweets, true elsewhere)
include_retweets · query · booleanInclude retweets (default true)
media_only · query · booleanOnly tweets that have media[] (default false)
since_id · query · stringKeep tweets with id strictly greater than this snowflake (page filter; keep paging with cursor)
until_id · query · stringKeep tweets with id strictly less than this snowflake (exclusive)
Node.js
const res = await fetch(`${BASE}/v1/user/tweets?userName=elonmusk&limit=20&include_replies=0&include_retweets=1&media_only=1`, {
headers: {
Authorization: `Bearer ${API_KEY}`,
},
});
const data = await res.json();
console.log(data);/v1/user/tweets-and-repliesAPI keyTimeline including the user's replies (UserTweetsAndReplies). Cursor-paginated.
Parameters
userName · query · required · stringX handle without @
limit · query · numberPage size (1-40, default 20)
cursor · query · stringOpaque pagination cursor. Pass next_cursor (or cursor) from the previous response unchanged.
include_replies · query · booleanInclude reply tweets (default false on /user/tweets, true elsewhere)
include_retweets · query · booleanInclude retweets (default true)
media_only · query · booleanOnly tweets that have media[] (default false)
since_id · query · stringKeep tweets with id strictly greater than this snowflake (page filter; keep paging with cursor)
until_id · query · stringKeep tweets with id strictly less than this snowflake (exclusive)
Node.js
const res = await fetch(`${BASE}/v1/user/tweets-and-replies?userName=elonmusk&limit=20&include_replies=0&include_retweets=1&media_only=1`, {
headers: {
Authorization: `Bearer ${API_KEY}`,
},
});
const data = await res.json();
console.log(data);/v1/search/tweetsAPI keyLatest/Top search over X posts.
Parameters
query · query · required · stringSearch query (alias: q). Supports X operators.
product · query · stringLatest or Top (default Latest)
limit · query · numberPage size (1-40, default 20)
cursor · query · stringOpaque pagination cursor. Pass next_cursor (or cursor) from the previous response unchanged.
include_replies · query · booleanInclude reply tweets (default false on /user/tweets, true elsewhere)
include_retweets · query · booleanInclude retweets (default true)
media_only · query · booleanOnly tweets that have media[] (default false)
since_id · query · stringKeep tweets with id strictly greater than this snowflake (page filter; keep paging with cursor)
until_id · query · stringKeep tweets with id strictly less than this snowflake (exclusive)
Node.js
const res = await fetch(`${BASE}/v1/search/tweets?query=solana&product=Latest&limit=5&include_replies=0&include_retweets=1&media_only=1`, {
headers: {
Authorization: `Bearer ${API_KEY}`,
},
});
const data = await res.json();
console.log(data);/v1/search/usersAPI keyPeople search over X accounts via SearchTimeline (product=People). Cursor-paginated.
Parameters
query · query · required · stringSearch query (alias: q)
limit · query · numberPage size (1-40, default 20)
cursor · query · stringOpaque pagination cursor. Pass next_cursor (or cursor) from the previous response unchanged.
Node.js
const res = await fetch(`${BASE}/v1/search/users?query=solana&limit=20`, {
headers: {
Authorization: `Bearer ${API_KEY}`,
},
});
const data = await res.json();
console.log(data);/v1/user/likesAPI keyLikes timeline for a public X account. X often returns an empty shell for scraper sessions even when favouritesCount > 0.
Parameters
userName · query · required · stringX handle without @ (alias: username)
limit · query · numberPage size (1-40, default 20)
cursor · query · stringOpaque pagination cursor. Pass next_cursor (or cursor) from the previous response unchanged.
include_replies · query · booleanInclude reply tweets (default false on /user/tweets, true elsewhere)
include_retweets · query · booleanInclude retweets (default true)
media_only · query · booleanOnly tweets that have media[] (default false)
since_id · query · stringKeep tweets with id strictly greater than this snowflake (page filter; keep paging with cursor)
until_id · query · stringKeep tweets with id strictly less than this snowflake (exclusive)
Node.js
const res = await fetch(`${BASE}/v1/user/likes?userName=jack&limit=20&include_replies=0&include_retweets=1&media_only=1`, {
headers: {
Authorization: `Bearer ${API_KEY}`,
},
});
const data = await res.json();
console.log(data);/v1/user/mediaAPI keyMedia tab timeline (photos/videos/gifs). Cursor-paginated; tweets include media[].
Parameters
userName · query · required · stringX handle without @ (alias: username)
limit · query · numberPage size (1-40, default 20)
cursor · query · stringOpaque pagination cursor. Pass next_cursor (or cursor) from the previous response unchanged.
include_replies · query · booleanInclude reply tweets (default false on /user/tweets, true elsewhere)
include_retweets · query · booleanInclude retweets (default true)
media_only · query · booleanOnly tweets that have media[] (default false)
since_id · query · stringKeep tweets with id strictly greater than this snowflake (page filter; keep paging with cursor)
until_id · query · stringKeep tweets with id strictly less than this snowflake (exclusive)
Node.js
const res = await fetch(`${BASE}/v1/user/media?userName=nasa&limit=20&include_replies=0&include_retweets=1&media_only=1`, {
headers: {
Authorization: `Bearer ${API_KEY}`,
},
});
const data = await res.json();
console.log(data);/v1/list/{id}/tweetsAPI keyLatest tweets from a list by numeric list id. May return empty for some sessions; falls back to search list:id.
Parameters
id · path · required · stringNumeric list id
limit · query · numberPage size (1-40, default 20)
cursor · query · stringOpaque pagination cursor. Pass next_cursor (or cursor) from the previous response unchanged.
include_replies · query · booleanInclude reply tweets (default false on /user/tweets, true elsewhere)
include_retweets · query · booleanInclude retweets (default true)
media_only · query · booleanOnly tweets that have media[] (default false)
since_id · query · stringKeep tweets with id strictly greater than this snowflake (page filter; keep paging with cursor)
until_id · query · stringKeep tweets with id strictly less than this snowflake (exclusive)
Node.js
const res = await fetch(`${BASE}/v1/list/1539453138322673664/tweets?limit=20&include_replies=0&include_retweets=1&media_only=1`, {
headers: {
Authorization: `Bearer ${API_KEY}`,
},
});
const data = await res.json();
console.log(data);/v1/community/{id}/tweetsAPI keyCommunity timeline (CommunityTweetsTimeline). Cursor-paginated.
Parameters
id · path · required · stringNumeric community id
ranking · query · stringRelevance (default) or Recency (alias: rankingMode)
limit · query · numberPage size (1-40, default 20)
cursor · query · stringOpaque pagination cursor. Pass next_cursor (or cursor) from the previous response unchanged.
include_replies · query · booleanInclude reply tweets (default false on /user/tweets, true elsewhere)
include_retweets · query · booleanInclude retweets (default true)
media_only · query · booleanOnly tweets that have media[] (default false)
since_id · query · stringKeep tweets with id strictly greater than this snowflake (page filter; keep paging with cursor)
until_id · query · stringKeep tweets with id strictly less than this snowflake (exclusive)
Node.js
const res = await fetch(`${BASE}/v1/community/1489422448332197888/tweets?ranking=Relevance&limit=20&include_replies=0&include_retweets=1&media_only=1`, {
headers: {
Authorization: `Bearer ${API_KEY}`,
},
});
const data = await res.json();
console.log(data);/v1/tweet/{id}API keyReturns a single post with author, media[], and engagement counts (likes, replies, retweets, quotes, bookmarks, views).
Parameters
id · path · required · stringNumeric tweet/status id
Node.js
const res = await fetch(`${BASE}/v1/tweet/20`, {
headers: {
Authorization: `Bearer ${API_KEY}`,
},
});
const data = await res.json();
console.log(data);/v1/tweet/by-urlAPI keyAccepts an x.com or twitter.com status URL (or raw numeric id) and returns the same shape as tweet-by-id.
Parameters
url · query · required · stringStatus URL (alias: u)
Node.js
const res = await fetch(`${BASE}/v1/tweet/by-url?url=https%3A%2F%2Fx.com%2Fjack%2Fstatus%2F20`, {
headers: {
Authorization: `Bearer ${API_KEY}`,
},
});
const data = await res.json();
console.log(data);/v1/tweet/{id}/repliesAPI keyConversation replies for a post (commenters + engagement). Cursor-paginated.
Parameters
id · path · required · stringNumeric tweet/status id
limit · query · numberPage size (1-40, default 20)
cursor · query · stringOpaque pagination cursor. Pass next_cursor (or cursor) from the previous response unchanged.
Node.js
const res = await fetch(`${BASE}/v1/tweet/20/replies?limit=20`, {
headers: {
Authorization: `Bearer ${API_KEY}`,
},
});
const data = await res.json();
console.log(data);/v1/tweet/{id}/retweetersAPI keyRetweeters for a post. Cursor-paginated.
Parameters
id · path · required · stringNumeric tweet/status id
limit · query · numberPage size (1-40, default 20)
cursor · query · stringOpaque pagination cursor. Pass next_cursor (or cursor) from the previous response unchanged.
Node.js
const res = await fetch(`${BASE}/v1/tweet/20/retweeters?limit=20`, {
headers: {
Authorization: `Bearer ${API_KEY}`,
},
});
const data = await res.json();
console.log(data);/v1/tweetsAPI keyFetch up to 25 tweets in one request. Partial failures return in errors[].
Parameters
ids · body · required · stringArray of tweet ids or status URLs (alias: tweetIds), max 25
Node.js
const res = await fetch(`${BASE}/v1/tweets`, {
method: "POST",
headers: {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"ids": [
"20",
"https://x.com/jack/status/20"
]
}),
});
const data = await res.json();
console.log(data);/v1/usersAPI keyFetch up to 25 profiles in one request. Partial failures return in errors[].
Parameters
userNames · body · required · stringArray of handles without @ (alias: usernames), max 25
Node.js
const res = await fetch(`${BASE}/v1/users`, {
method: "POST",
headers: {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"userNames": [
"jack",
"elonmusk"
]
}),
});
const data = await res.json();
console.log(data);/v1/user/followersAPI keyFollowers of an X account. Cursor-paginated.
Parameters
userName · query · required · stringX handle without @ (alias: username)
limit · query · numberPage size (1-40, default 20)
cursor · query · stringOpaque pagination cursor. Pass next_cursor (or cursor) from the previous response unchanged.
Node.js
const res = await fetch(`${BASE}/v1/user/followers?userName=elonmusk&limit=20`, {
headers: {
Authorization: `Bearer ${API_KEY}`,
},
});
const data = await res.json();
console.log(data);/v1/user/followingAPI keyFollowing list for an X account. Cursor-paginated.
Parameters
userName · query · required · stringX handle without @ (alias: username)
limit · query · numberPage size (1-40, default 20)
cursor · query · stringOpaque pagination cursor. Pass next_cursor (or cursor) from the previous response unchanged.
Node.js
const res = await fetch(`${BASE}/v1/user/following?userName=elonmusk&limit=20`, {
headers: {
Authorization: `Bearer ${API_KEY}`,
},
});
const data = await res.json();
console.log(data);