π¦ Twitter Social
Twitter / X API for public posts, profiles, and trends.
- Search posts and trending topics
- Tweet details, replies, and batch lookups
- User profiles, followers, following, posts, replies, and media
- Lists and the relationship between two users
Search & Discovery
Find Twitter users, hashtags, and tweet results in real time using the modern GraphQL endpoint.
GET /v1/search
requires authentication
Quick search (typeahead) for users, topics, events, and lists. To search tweets, use /v1/search/tweets.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/twitter/search'
params = {
'search': 'elonmusk',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/twitter/search';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'search' => 'elonmusk',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/twitter/search"
);
const params = {
"search": "elonmusk",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/twitter/search?search=elonmusk" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"query": "investing",
"product": "Top",
"next_cursor": "DAACCgACG6ZQgC9AJxAKAAMbplCALz_Y8AgABAAAAAILAAUAAADcRW1QQzZ3QUFBZlEvZ0dKTjB2R3AvQUFBQUJJYnBNR21PUmFnb0J1Z3pLdmFWbEE3RzZTMHFoMlh3TlFibTIza1BkZlIwaHVtUWZJSm03RTZHNTVXS2liV1VHVWJuZ0ZKRmhZeDh3ODhqMzZCbHJBQUc2SmlTc0NXWVpBYm9VZmVEaGZBZWdzZUhmc0oxRUFBRzVwR2xMZWE0RjRicE9yVUF0dFFjQnVpRDVvSzFyRUFHNkprVTduV1lIZ2JwZFFWb1pvaE1RdFdiek5MMWhBQUc2RHVTWkxYWURVPQgABgAAAAAIAAcAAAAADAAICgABCx4d-wnUQAAAAAA",
"count": 18
},
"body": [
{
"__typename": "Tweet",
"rest_id": "1990951529319219322",
"core": {
"user_results": {
"result": {
"__typename": "User",
"id": "VXNlcjo2MTU1ODI4MQ==",
"rest_id": "61558281",
"affiliates_highlighted_label": [],
"avatar": {
"image_url": "https://pbs.twimg.com/profile_images/1758167079843172352/I87PB0PH_normal.jpg"
},
"core": {
"created_at": "Thu Jul 30 18:20:35 +0000 2009",
"name": "Brian Feroldi",
"screen_name": "BrianFeroldi"
},
"dm_permissions": {
"can_dm": true
},
"follow_request_sent": false,
"has_graduated_access": true,
"is_blue_verified": true,
"legacy": {
"default_profile": true,
"default_profile_image": false,
"description": "π I Teach Investors How To Analyze Businesses | Author & Financial Educator | 20+ Years Investing Experience | Free Investing eBook (Link) β¬οΈ",
"entities": {
"description": {
"urls": []
},
"url": {
"urls": [
{
"display_url": "longtermmindset.co/investing",
"expanded_url": "https://longtermmindset.co/investing",
"url": "https://t.co/6rRnW1rwH7",
"indices": [0, 23]
}
]
}
},
"fast_followers_count": 0,
"favourites_count": 30009,
"followers_count": 635641,
"friends_count": 507,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 12048,
"media_count": 7204,
"normal_followers_count": 635641,
"pinned_tweet_ids_str": [
"1817714336611144138"
],
"possibly_sensitive": false,
"profile_banner_url": "https://pbs.twimg.com/profile_banners/61558281/1744628915",
"profile_interstitial_type": "",
"statuses_count": 32974,
"translator_type": "none",
"url": "https://t.co/6rRnW1rwH7",
"want_retweets": false,
"withheld_in_countries": []
},
"location": {
"location": "Free Investing π β"
},
"media_permissions": {
"can_media_tag": false
},
"parody_commentary_fan_label": "None",
"profile_image_shape": "Circle",
"professional": {
"rest_id": "1615842396897525767",
"professional_type": "Creator",
"category": []
},
"profile_bio": {
"description": "π I Teach Investors How To Analyze Businesses | Author & Financial Educator | 20+ Years Investing Experience | Free Investing eBook (Link) β¬οΈ"
},
"privacy": {
"protected": false
},
"relationship_perspectives": {
"following": false
},
"tipjar_settings": {
"is_enabled": true,
"venmo_handle": "brian-feroldi"
},
"super_follow_eligible": true,
"verification": {
"verified": false
},
"profile_description_language": "en"
}
}
},
"unmention_data": [],
"edit_control": {
"edit_tweet_ids": [
"1990951529319219322"
],
"editable_until_msecs": "1763518409000",
"is_edit_eligible": false,
"edits_remaining": "5"
},
"is_translatable": false,
"views": {
"count": "63258",
"state": "EnabledWithCount"
},
"source": "\u003Ca href=\"https://hypefury.com\" rel=\"nofollow\"\u003EHypefury\u003C/a\u003E",
"award_eligible": false,
"granted_awards": [],
"grok_translated_post_with_availability": {
"is_available": false
},
"grok_analysis_button": true,
"legacy": {
"bookmark_count": 666,
"bookmarked": false,
"created_at": "Wed Nov 19 01:13:29 +0000 2025",
"conversation_id_str": "1990951529319219322",
"display_text_range": [0, 24],
"entities": {
"hashtags": [],
"media": [
{ ... }
],
"symbols": [],
"timestamps": [],
"urls": [],
"user_mentions": []
},
"extended_entities": {
"media": [
{ ... }
]
},
"favorite_count": 790,
"favorited": false,
"full_text": "The Best Investing Tools https://t.co/aBS6yTmggF",
"is_quote_status": false,
"lang": "en",
"possibly_sensitive": false,
"possibly_sensitive_editable": true,
"quote_count": 3,
"reply_count": 15,
"retweet_count": 173,
"retweeted": false,
"user_id_str": "61558281",
"id_str": "1990951529319219322"
}
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/trends
requires authentication
Fetch trending topics for a specific location.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/twitter/trends'
params = {
'woeid': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/twitter/trends';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'woeid' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/twitter/trends"
);
const params = {
"woeid": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/twitter/trends?woeid=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"woeid": 2459115
},
"body": [
{
"name": "Lisa",
"url": "http://twitter.com/search?q=Lisa",
"promoted_content": null,
"query": "Lisa",
"tweet_volume": 300324
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/tweet/info
requires authentication
Fetch detailed information for a single tweet.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/twitter/tweet/info'
params = {
'id': '1349129669258448897',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/twitter/tweet/info';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'id' => '1349129669258448897',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/twitter/tweet/info"
);
const params = {
"id": "1349129669258448897",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/twitter/tweet/info?id=1349129669258448897" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"tweet_id": "1349129669258448897",
"reply_count": 35
},
"body": {
"tweet": {
"__typename": "Tweet",
"rest_id": "1349129669258448897",
"post_image_description": "The image features an anime character with short purple hair and a flower accessory, smiling and pointing directly at the viewer. The text overlay reads, \"HEY YOU, YEAH YOU KING, YOU'RE GONNA MAKE IT\". This image is part of a social media post by Elon Musk, where he originally posted \"Hey you … Yeah you Queen … You’re gonna make it! ππ\". The context suggests a motivational message aimed at encouraging the viewer, with the character's direct gaze and pointing gesture emphasizing personal address. The change from \"Queen\" to \"KING\" in the image text adds a personalized touch to the encouragement.",
"has_birdwatch_notes": true,
"core": {
"user_results": {
"result": {
"__typename": "User",
"id": "VXNlcjo0NDE5NjM5Nw==",
"rest_id": "44196397",
"affiliates_highlighted_label": {
"label": {
"url": {
"url": "https://twitter.com/X",
"urlType": "DeepLink"
},
"badge": {
"url": "https://pbs.twimg.com/profile_images/1955359038532653056/OSHY3ewP_bigger.jpg"
},
"description": "X",
"userLabelType": "BusinessLabel",
"userLabelDisplayType": "Badge"
}
},
"avatar": {
"image_url": "https://pbs.twimg.com/profile_images/1936002956333080576/kqqe2iWO_normal.jpg"
},
"core": {
"created_at": "Tue Jun 02 20:12:29 +0000 2009",
"name": "Elon Musk",
"screen_name": "elonmusk"
},
"dm_permissions": {
"can_dm": false
},
"has_graduated_access": true,
"is_blue_verified": true,
"legacy": {
"default_profile": false,
"default_profile_image": false,
"description": "",
"entities": {
"description": {
"urls": []
}
},
"fast_followers_count": 0,
"favourites_count": 177559,
"followers_count": 227798897,
"friends_count": 1219,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 164661,
"media_count": 4179,
"normal_followers_count": 227798897,
"pinned_tweet_ids_str": [],
"possibly_sensitive": false,
"profile_banner_url": "https://pbs.twimg.com/profile_banners/44196397/1739948056",
"profile_interstitial_type": "",
"statuses_count": 87623,
"translator_type": "none",
"want_retweets": false,
"withheld_in_countries": []
},
"location": {
"location": ""
},
"media_permissions": {
"can_media_tag": false
},
"parody_commentary_fan_label": "None",
"profile_image_shape": "Circle",
"professional": {
"rest_id": "1679729435447275522",
"professional_type": "Creator",
"category": []
},
"privacy": {
"protected": false
},
"relationship_perspectives": {
"following": false
},
"tipjar_settings": {
"is_enabled": false
},
"super_follow_eligible": true,
"verification": {
"verified": false
}
}
}
},
"unmention_data": [],
"edit_control": {
"edit_tweet_ids": [
"1349129669258448897"
],
"editable_until_msecs": "1610494353425",
"is_edit_eligible": true,
"edits_remaining": "5"
},
"is_translatable": false,
"views": {
"state": "Enabled"
},
"source": "\u003Ca href=\"http://twitter.com/download/iphone\" rel=\"nofollow\"\u003ETwitter for iPhone\u003C/a\u003E",
"award_eligible": false,
"granted_awards": [],
"grok_translated_post_with_availability": {
"is_available": false
},
"grok_analysis_button": true,
"legacy": {
"bookmark_count": 6458,
"bookmarked": false,
"created_at": "Tue Jan 12 23:02:33 +0000 2021",
"conversation_id_str": "1349129669258448897",
"display_text_range": [0, 51],
"entities": {
"hashtags": [],
"media": [
{
"display_url": "pic.x.com/LrqdIrbIyd",
"expanded_url": "https://x.com/elonmusk/status/1349129669258448897/photo/1",
"id_str": "1349129665299013635",
"indices": [52, 75],
"media_key": "3_1349129665299013635",
"media_url_https": "https://pbs.twimg.com/media/ErkSSFgW4AMKude.jpg",
"type": "photo",
"url": "https://t.co/LrqdIrbIyd",
"ext_media_availability": {
"status": "Available"
},
"features": {
"large": {
"faces": []
},
"medium": {
"faces": []
},
"small": {
"faces": []
},
"orig": {
"faces": []
}
},
"sizes": {
"large": {
"h": 900,
"w": 960,
"resize": "fit"
},
"medium": {
"h": 900,
"w": 960,
"resize": "fit"
},
"small": {
"h": 638,
"w": 680,
"resize": "fit"
},
"thumb": {
"h": 150,
"w": 150,
"resize": "crop"
}
},
"original_info": {
"height": 900,
"width": 960,
"focus_rects": [
{
"x": 0,
"y": 0,
"w": 960,
"h": 538
},
{
"x": 60,
"y": 0,
"w": 900,
"h": 900
},
{
"x": 171,
"y": 0,
"w": 789,
"h": 900
},
{
"x": 423,
"y": 0,
"w": 450,
"h": 900
},
{
"x": 0,
"y": 0,
"w": 960,
"h": 900
}
]
},
"media_results": {
"result": {
"media_key": "3_1349129665299013635"
}
}
}
],
"symbols": [],
"timestamps": [],
"urls": [],
"user_mentions": []
},
"extended_entities": {
"media": [
{
"display_url": "pic.x.com/LrqdIrbIyd",
"expanded_url": "https://x.com/elonmusk/status/1349129669258448897/photo/1",
"id_str": "1349129665299013635",
"indices": [52, 75],
"media_key": "3_1349129665299013635",
"media_url_https": "https://pbs.twimg.com/media/ErkSSFgW4AMKude.jpg",
"type": "photo",
"url": "https://t.co/LrqdIrbIyd",
"ext_media_availability": {
"status": "Available"
},
"features": {
"large": {
"faces": []
},
"medium": {
"faces": []
},
"small": {
"faces": []
},
"orig": {
"faces": []
}
},
"sizes": {
"large": {
"h": 900,
"w": 960,
"resize": "fit"
},
"medium": {
"h": 900,
"w": 960,
"resize": "fit"
},
"small": {
"h": 638,
"w": 680,
"resize": "fit"
},
"thumb": {
"h": 150,
"w": 150,
"resize": "crop"
}
},
"original_info": {
"height": 900,
"width": 960,
"focus_rects": [
{
"x": 0,
"y": 0,
"w": 960,
"h": 538
},
{
"x": 60,
"y": 0,
"w": 900,
"h": 900
},
{
"x": 171,
"y": 0,
"w": 789,
"h": 900
},
{
"x": 423,
"y": 0,
"w": 450,
"h": 900
},
{
"x": 0,
"y": 0,
"w": 960,
"h": 900
}
]
},
"media_results": {
"result": {
"media_key": "3_1349129665299013635"
}
}
}
]
},
"favorite_count": 522731,
"favorited": false,
"full_text": "Hey you …\nYeah you Queen …\nYou’re gonna make it! ππ https://t.co/LrqdIrbIyd",
"is_quote_status": false,
"lang": "en",
"possibly_sensitive": false,
"possibly_sensitive_editable": true,
"quote_count": 13379,
"reply_count": 12932,
"retweet_count": 97424,
"retweeted": false,
"user_id_str": "44196397",
"id_str": "1349129669258448897"
},
"quick_promote_eligibility": {
"eligibility": "IneligibleNotProfessional"
}
},
"replies": [
{
"__typename": "Tweet",
"rest_id": "1349129814628773888",
"has_birdwatch_notes": false,
"core": {
"user_results": {
"result": {
"__typename": "User",
"id": "VXNlcjo5NTQzMTMwODY3ODUyMTI0MTY=",
"rest_id": "954313086785212416",
"affiliates_highlighted_label": [],
"avatar": {
"image_url": "https://pbs.twimg.com/profile_images/993507603333427201/ATj7pBa4_normal.jpg"
},
"core": {
"created_at": "Fri Jan 19 11:22:24 +0000 2018",
"name": "Lyubomir Vladimirov",
"screen_name": "lvladimirovBG"
},
"dm_permissions": {
"can_dm": false
},
"has_graduated_access": true,
"is_blue_verified": true,
"legacy": {
"default_profile": true,
"default_profile_image": false,
"description": "Currently developing an awesome game about colonizing Mars.",
"entities": {
"description": {
"urls": []
},
"url": {
"urls": [
{
"display_url": "marsisflat.space",
"expanded_url": "https://marsisflat.space/",
"url": "https://t.co/k150iACtHg",
"indices": [0, 23]
}
]
}
},
"fast_followers_count": 0,
"favourites_count": 2649,
"followers_count": 11783,
"friends_count": 10,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 17,
"media_count": 407,
"normal_followers_count": 11783,
"pinned_tweet_ids_str": [
"1349358903725850625"
],
"possibly_sensitive": false,
"profile_banner_url": "https://pbs.twimg.com/profile_banners/954313086785212416/1607242546",
"profile_interstitial_type": "",
"statuses_count": 1768,
"translator_type": "none",
"url": "https://t.co/k150iACtHg",
"want_retweets": false,
"withheld_in_countries": []
},
"location": {
"location": "Bulgaria"
},
"media_permissions": {
"can_media_tag": true
},
"parody_commentary_fan_label": "None",
"profile_image_shape": "Circle",
"privacy": {
"protected": false
},
"relationship_perspectives": {
"following": false
},
"tipjar_settings": [],
"verification": {
"verified": false
}
}
}
},
"unmention_data": [],
"edit_control": {
"edit_tweet_ids": [
"1349129814628773888"
],
"editable_until_msecs": "1610494388084",
"is_edit_eligible": true,
"edits_remaining": "5"
},
"is_translatable": false,
"views": {
"state": "Enabled"
},
"source": "\u003Ca href=\"http://twitter.com/download/android\" rel=\"nofollow\"\u003ETwitter for Android\u003C/a\u003E",
"award_eligible": false,
"granted_awards": [],
"grok_translated_post_with_availability": {
"is_available": false
},
"grok_analysis_button": true,
"legacy": {
"bookmark_count": 106,
"bookmarked": false,
"created_at": "Tue Jan 12 23:03:08 +0000 2021",
"conversation_id_str": "1349129669258448897",
"display_text_range": [10, 270],
"entities": {
"hashtags": [],
"symbols": [],
"timestamps": [],
"urls": [],
"user_mentions": [
{
"id_str": "44196397",
"name": "Elon Musk",
"screen_name": "elonmusk",
"indices": [0, 9]
}
]
},
"favorite_count": 22394,
"favorited": false,
"full_text": "@elonmusk Dear Elon,\nI'm a game dev. and I am making a game about colonizing Mars with you and SpaceX in it. If you think it's cool, all I need is the \"Go ahead\" to use your name and Logos.\n\nI will post this every day for a year or until I get a Yes or a No! \n154 / 365",
"in_reply_to_screen_name": "elonmusk",
"in_reply_to_status_id_str": "1349129669258448897",
"in_reply_to_user_id_str": "44196397",
"is_quote_status": false,
"lang": "en",
"quote_count": 97,
"reply_count": 463,
"retweet_count": 605,
"retweeted": false,
"user_id_str": "954313086785212416",
"id_str": "1349129814628773888"
},
"quick_promote_eligibility": {
"eligibility": "IneligibleNotProfessional"
}
},
{ ... }
]
}
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/search/tweets
requires authentication
Search tweets the same way as the X search page. Supports operators such as from:, since:, lang:, and #hashtags.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/twitter/search/tweets'
params = {
'search': 'bitcoin',
'type': 'Latest',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/twitter/search/tweets';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'search' => 'bitcoin',
'type' => 'Latest',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/twitter/search/tweets"
);
const params = {
"search": "bitcoin",
"type": "Latest",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/twitter/search/tweets?search=bitcoin&type=Latest" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"search": "bitcoin",
"type": "Latest",
"count": 1,
"next_cursor": "DAADDAABCgABHThZ5eTaEH8KAAIdOFmi7tbBIgAIAAIAAAACCAADAAAAAAgA"
},
"body": [
{
"__typename": "Tweet",
"core": {
"user_results": {
"result": {
"__typename": "User",
"action_counts": {
"favorites_count": 28316
},
"affiliates_highlighted_label": [],
"avatar": {
"image_url": "https://pbs.twimg.com/profile_images/1748455599250272256/FdEh2d-U_normal.jpg"
},
"banner": {
"image_url": "https://pbs.twimg.com/profile_banners/1482930483323281408/1737529746"
},
"core": {
"created_at": "Mon Jan 17 04:19:55 +0000 2022",
"name": "AIZEN",
"screen_name": "AIZEN30XX"
},
"follow_request_sent": false,
"has_graduated_access": true,
"id": "VXNlcjoxNDgyOTMwNDgzMzIzMjgxNDA4",
"is_blue_verified": false,
"location": {
"location": "Simulation Control Room"
},
"media_permissions": {
"can_media_tag": true
},
"notifications_settings": {
"notifications_enabled": false
},
"parody_commentary_fan_label": "None",
"pinned_items": {
"tweet_ids_str": [
"2025358204751020512"
]
},
"possibly_sensitive": false,
"privacy": {
"protected": false
},
"professional": {
"category": [],
"professional_type": "Creator",
"rest_id": "1630056917535166464"
},
"profile_bio": {
"description": "Study Bitcoin/ A.I #FreeTheMind #FreeSpeech #SeekTruth #Deprogram #Decentralize #FixTheMoney #EndWars #Love #Peace #Humans β#Machines #30XX CYPHERPUNK ENERGY",
"entities": {
"description": []
}
},
"profile_description_language": "en",
"profile_image_shape": "Circle",
"profile_metadata": {
"profile_interstitial_type": ""
},
"profile_translation": {
"translator_type": "none"
},
"relationship_counts": {
"followers": 1070,
"following": 2978
},
"relationship_perspectives": {
"blocked_by": false,
"blocking": false,
"followed_by": false,
"following": false,
"live_following": false,
"muting": false
},
"rest_id": "1482930483323281408",
"super_follow_eligible": false,
"super_followed_by": false,
"super_following": false,
"tipjar_settings": {
"is_enabled": true
},
"tweet_counts": {
"media_tweets": 854,
"tweets": 15869
},
"verification": {
"verified": false
},
"website": {
"url": ""
}
}
}
},
"edit_control": {
"edit_tweet_ids": [
"2105531669717586047"
],
"editable_until_msecs": "1790836443000",
"edits_remaining": "5",
"is_edit_eligible": false
},
"grok_analysis_button": true,
"grok_translated_post_with_availability": {
"is_available": false
},
"is_translatable": false,
"legacy": {
"bookmark_count": 0,
"bookmarked": false,
"conversation_id_str": "2105358291702296976",
"created_at": "Thu Oct 01 05:34:03 +0000 2026",
"display_text_range": [
12,
100
],
"entities": {
"user_mentions": [
{
"id_str": "1688663400358748160",
"indices": [
0,
11
],
"name": "Jeff Swanson",
"screen_name": "theswansjr"
}
]
},
"favorite_count": 0,
"favorited": false,
"full_text": "@theswansjr True monetary debasement is closer to 13% , so 5.5 years\n\nbetter get some Bitcoin quick!",
"id_str": "2105531669717586047",
"in_reply_to_screen_name": "theswansjr",
"in_reply_to_status_id_str": "2105358291702296976",
"in_reply_to_user_id_str": "1688663400358748160",
"is_quote_status": false,
"lang": "en",
"quote_count": 0,
"reply_count": 0,
"retweet_count": 0,
"retweeted": false,
"user_id_str": "1482930483323281408"
},
"rest_id": "2105531669717586047",
"source": "<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>",
"unmention_data": [],
"views": {
"state": "Enabled"
}
}
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/tweet/replies
requires authentication
Fetch the replies to a tweet, with pagination.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/twitter/tweet/replies'
params = {
'id': '2105463042305667103',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/twitter/tweet/replies';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'id' => '2105463042305667103',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/twitter/tweet/replies"
);
const params = {
"id": "2105463042305667103",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/twitter/tweet/replies?id=2105463042305667103" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"tweet_id": "1349129669258448897",
"count": 1,
"next_cursor": "DAAKCgABHThaIGh__rMLAAIAAAGQRW1QQzZ3QUFBZlEvZ0dKTjB2R3AvQUFB"
},
"body": [
{
"__typename": "Tweet",
"core": {
"user_results": {
"result": {
"__typename": "User",
"action_counts": {
"favorites_count": 2592
},
"affiliates_highlighted_label": [],
"avatar": {
"image_url": "https://pbs.twimg.com/profile_images/993507603333427201/ATj7pBa4_normal.jpg"
},
"banner": {
"image_url": "https://pbs.twimg.com/profile_banners/954313086785212416/1607242546"
},
"core": {
"created_at": "Fri Jan 19 11:22:24 +0000 2018",
"name": "Lyubomir Vladimirov",
"screen_name": "lvladimirovBG"
},
"follow_request_sent": false,
"has_graduated_access": true,
"id": "VXNlcjo5NTQzMTMwODY3ODUyMTI0MTY=",
"is_blue_verified": false,
"location": {
"location": "Bulgaria"
},
"media_permissions": {
"can_media_tag": true
},
"notifications_settings": {
"notifications_enabled": false
},
"parody_commentary_fan_label": "None",
"pinned_items": {
"tweet_ids_str": [
"1349358903725850625"
]
},
"possibly_sensitive": false,
"privacy": {
"protected": false
},
"profile_bio": {
"description": "Still developing an awesome game about colonizing Mars.",
"entities": {
"description": [],
"url": {
"urls": [
{
"display_url": "marsisflat.space",
"expanded_url": "https://marsisflat.space/",
"indices": [
0,
23
],
"url": "https://t.co/k150iACtHg"
}
]
}
}
},
"profile_description_language": "en",
"profile_image_shape": "Circle",
"profile_metadata": {
"profile_interstitial_type": ""
},
"profile_translation": {
"translator_type": "none"
},
"relationship_counts": {
"followers": 11429,
"following": 10
},
"relationship_perspectives": {
"blocked_by": false,
"blocking": false,
"followed_by": false,
"following": false,
"live_following": false,
"muting": false
},
"rest_id": "954313086785212416",
"super_follow_eligible": false,
"super_followed_by": false,
"super_following": false,
"tipjar_settings": [],
"tweet_counts": {
"media_tweets": 407,
"tweets": 1770
},
"verification": {
"verified": false
},
"website": {
"url": "https://t.co/k150iACtHg"
}
}
}
},
"edit_control": {
"edit_tweet_ids": [
"1349129814628773888"
],
"editable_until_msecs": "1610494388084",
"edits_remaining": "5",
"is_edit_eligible": true
},
"grok_analysis_button": true,
"grok_translated_post_with_availability": {
"is_available": false
},
"has_birdwatch_notes": false,
"is_translatable": false,
"legacy": {
"bookmark_count": 103,
"bookmarked": false,
"conversation_id_str": "1349129669258448897",
"created_at": "Tue Jan 12 23:03:08 +0000 2021",
"display_text_range": [
10,
270
],
"entities": {
"user_mentions": [
{
"id_str": "44196397",
"indices": [
0,
9
],
"name": "Elon Musk",
"screen_name": "elonmusk"
}
]
},
"favorite_count": 21688,
"favorited": false,
"full_text": "@elonmusk Dear Elon,\nI'm a game dev. and I am making a game about colonizing Mars with you and SpaceX in it. If you think it's cool, all I need is the \"Go ah...",
"id_str": "1349129814628773888",
"in_reply_to_screen_name": "elonmusk",
"in_reply_to_status_id_str": "1349129669258448897",
"in_reply_to_user_id_str": "44196397",
"is_quote_status": false,
"lang": "en",
"quote_count": 97,
"reply_count": 456,
"retweet_count": 583,
"retweeted": false,
"user_id_str": "954313086785212416"
},
"quick_promote_eligibility": {
"eligibility": "IneligibleNotVerified"
},
"rest_id": "1349129814628773888",
"unmention_data": [],
"views": {
"state": "Enabled"
}
}
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/tweet/batch
requires authentication
Fetch several tweets by ID in one request. Up to 20 IDs per call.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/twitter/tweet/batch'
params = {
'ids': '1349129669258448897,20',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/twitter/tweet/batch';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'ids' => '1349129669258448897,20',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/twitter/tweet/batch"
);
const params = {
"ids": "1349129669258448897,20",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/twitter/tweet/batch?ids=1349129669258448897%2C20" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"requested": 1,
"count": 1
},
"body": [
{
"__typename": "Tweet",
"core": {
"user_results": {
"result": {
"__typename": "User",
"action_counts": {
"favorites_count": 250189
},
"affiliates_highlighted_label": {
"label": {
"badge": {
"url": "https://pbs.twimg.com/profile_images/1955359038532653056/OSHY3ewP_bigger.jpg"
},
"description": "X",
"url": {
"url": "https://twitter.com/X",
"urlType": "DeepLink"
},
"userLabelDisplayType": "Badge",
"userLabelType": "BusinessLabel"
}
},
"avatar": {
"image_url": "https://pbs.twimg.com/profile_images/2103567689515954176/aR-Kjpp4_normal.jpg"
},
"banner": {
"image_url": "https://pbs.twimg.com/profile_banners/44196397/1774145451"
},
"core": {
"created_at": "Tue Jun 02 20:12:29 +0000 2009",
"name": "Elon Musk",
"screen_name": "elonmusk"
},
"follow_request_sent": false,
"has_graduated_access": true,
"id": "VXNlcjo0NDE5NjM5Nw==",
"is_blue_verified": true,
"location": {
"location": ""
},
"media_permissions": {
"can_media_tag": false
},
"notifications_settings": {
"notifications_enabled": false
},
"parody_commentary_fan_label": "None",
"pinned_items": {
"tweet_ids_str": [
"2103537377239015827"
]
},
"possibly_sensitive": false,
"privacy": {
"protected": false
},
"professional": {
"category": [],
"professional_type": "Creator",
"rest_id": "1679729435447275522"
},
"profile_bio": {
"description": "https://t.co/ZdBx5WABYx",
"entities": {
"description": {
"urls": [
{
"display_url": "Terafab.AI",
"expanded_url": "http://Terafab.AI",
"indices": [
0,
23
],
"url": "https://t.co/ZdBx5WABYx"
}
]
}
}
},
"profile_image_shape": "Circle",
"profile_metadata": {
"profile_interstitial_type": ""
},
"profile_translation": {
"translator_type": "none"
},
"relationship_counts": {
"followers": 241732733,
"following": 1414
},
"relationship_perspectives": {
"blocked_by": false,
"blocking": false,
"followed_by": false,
"following": false,
"live_following": false,
"muting": false
},
"rest_id": "44196397",
"super_follow_eligible": true,
"super_followed_by": false,
"super_following": false,
"tipjar_settings": {
"is_enabled": false
},
"tweet_counts": {
"media_tweets": 4726,
"tweets": 109266
},
"verification": {
"verified": false
},
"website": {
"url": ""
}
}
}
},
"edit_control": {
"edit_tweet_ids": [
"1349129669258448897"
],
"editable_until_msecs": "1610494353425",
"edits_remaining": "5",
"is_edit_eligible": true
},
"grok_analysis_button": true,
"grok_translated_post_with_availability": {
"is_available": false
},
"is_translatable": false,
"legacy": {
"bookmark_count": 6471,
"bookmarked": false,
"conversation_id_str": "1349129669258448897",
"created_at": "Tue Jan 12 23:02:33 +0000 2021",
"display_text_range": [
0,
51
],
"entities": {
"media": [
{
"display_url": "pic.x.com/LrqdIrbIyd",
"expanded_url": "https://x.com/elonmusk/status/1349129669258448897/photo/1",
"ext_media_availability": {
"status": "Available"
},
"features": {
"large": {
"faces": []
},
"medium": {
"faces": []
},
"orig": {
"faces": []
},
"small": {
"faces": []
}
},
"id_str": "1349129665299013635",
"indices": [
52,
75
],
"media_key": "3_1349129665299013635",
"media_results": {
"result": {
"media_key": "3_1349129665299013635"
}
},
"media_url_https": "https://pbs.twimg.com/media/ErkSSFgW4AMKude.jpg",
"original_info": {
"focus_rects": [
{
"h": 538,
"w": 960,
"x": 0,
"y": 0
},
{
"h": 900,
"w": 900,
"x": 60,
"y": 0
}
],
"height": 900,
"width": 960
},
"sizes": {
"large": {
"h": 900,
"resize": "fit",
"w": 960
},
"medium": {
"h": 900,
"resize": "fit",
"w": 960
},
"small": {
"h": 638,
"resize": "fit",
"w": 680
},
"thumb": {
"h": 150,
"resize": "crop",
"w": 150
}
},
"type": "photo",
"url": "https://t.co/LrqdIrbIyd"
}
]
},
"extended_entities": {
"media": [
{
"display_url": "pic.x.com/LrqdIrbIyd",
"expanded_url": "https://x.com/elonmusk/status/1349129669258448897/photo/1",
"ext_media_availability": {
"status": "Available"
},
"features": {
"large": {
"faces": []
},
"medium": {
"faces": []
},
"orig": {
"faces": []
},
"small": {
"faces": []
}
},
"id_str": "1349129665299013635",
"indices": [
52,
75
],
"media_key": "3_1349129665299013635",
"media_results": {
"result": {
"media_key": "3_1349129665299013635"
}
},
"media_url_https": "https://pbs.twimg.com/media/ErkSSFgW4AMKude.jpg",
"original_info": {
"focus_rects": [
{
"h": 538,
"w": 960,
"x": 0,
"y": 0
},
{
"h": 900,
"w": 900,
"x": 60,
"y": 0
}
],
"height": 900,
"width": 960
},
"sizes": {
"large": {
"h": 900,
"resize": "fit",
"w": 960
},
"medium": {
"h": 900,
"resize": "fit",
"w": 960
},
"small": {
"h": 638,
"resize": "fit",
"w": 680
},
"thumb": {
"h": 150,
"resize": "crop",
"w": 150
}
},
"type": "photo",
"url": "https://t.co/LrqdIrbIyd"
}
]
},
"favorite_count": 507174,
"favorited": false,
"full_text": "Hey you …\nYeah you Queen …\nYou’re gonna make it! ππ https://t.co/LrqdIrbIyd",
"id_str": "1349129669258448897",
"is_quote_status": false,
"lang": "en",
"possibly_sensitive": false,
"possibly_sensitive_editable": true,
"quote_count": 13485,
"reply_count": 12589,
"retweet_count": 93924,
"retweeted": false,
"user_id_str": "44196397"
},
"rest_id": "1349129669258448897",
"unmention_data": [],
"views": {
"state": "Enabled"
}
}
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/woeid
requires authentication
Fetch full global WOEID data.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/twitter/woeid'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/twitter/woeid';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/twitter/woeid"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/twitter/woeid" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com"
},
"body": [
{
"name": "Worldwide",
"placeType": {
"code": 19,
"name": "Supername"
},
"url": "http://where.yahooapis.com/v1/place/1",
"parentid": 0,
"country": "",
"woeid": 1,
"countryCode": null
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
User
Get public data about a Twitter user by username or ID.
GET /v1/user
requires authentication
Retrieve detailed user profile information.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/twitter/user'
params = {
'username': 'elonmusk',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/twitter/user';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'username' => 'elonmusk',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/twitter/user"
);
const params = {
"username": "elonmusk",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/twitter/user?username=elonmusk" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com"
},
"body": {
"__typename": "User",
"id": "VXNlcjo0NDE5NjM5Nw==",
"rest_id": "44196397",
"affiliates_highlighted_label": {
...
},
"avatar": {
"image_url": "https://pbs.twimg.com/profile_images/1936002956333080576/kqqe2iWO_normal.jpg"
},
"core": {
"created_at": "Tue Jun 02 20:12:29 +0000 2009",
"name": "Elon Musk",
"screen_name": "elonmusk"
},
"dm_permissions": {
"can_dm": false,
"can_dm_on_xchat": false
},
"has_graduated_access": true,
"is_blue_verified": true,
"legacy": {
"default_profile": false,
"default_profile_image": false,
"description": "",
"entities": {
...
},
"fast_followers_count": 0,
"favourites_count": 177183,
"followers_count": 227669486,
"friends_count": 1220,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 164595,
"media_count": 4175,
"normal_followers_count": 227669486,
"pinned_tweet_ids_str": [
"1977281341264740625"
],
"possibly_sensitive": false,
"profile_banner_url": "https://pbs.twimg.com/profile_banners/44196397/1739948056",
"profile_interstitial_type": "",
"statuses_count": 87500,
"translator_type": "none",
"want_retweets": false,
"withheld_in_countries": []
},
"location": {
"location": ""
},
"media_permissions": {
"can_media_tag": false
},
"parody_commentary_fan_label": "None",
"profile_image_shape": "Circle",
"professional": {
"rest_id": "1679729435447275522",
"professional_type": "Creator",
"category": []
},
"privacy": {
"protected": false
},
"relationship_perspectives": {
"following": false
},
"tipjar_settings": {
"is_enabled": false
},
"super_follow_eligible": true,
"verification": {
"verified": false
},
"legacy_extended_profile": [],
"is_profile_translatable": false,
"verification_info": {
"is_identity_verified": false,
"reason": {
...
}
},
"highlights_info": {
"can_highlight_tweets": true,
"highlighted_tweets": "768"
},
"user_seed_tweet_count": 0,
"premium_gifting_eligible": false,
"business_account": [],
"creator_subscriptions_count": 225
}
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/user/followers
requires authentication
Fetch a paginated list of followers for a given user.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/twitter/user/followers'
params = {
'username': 'elonmusk',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/twitter/user/followers';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'username' => 'elonmusk',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/twitter/user/followers"
);
const params = {
"username": "elonmusk",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/twitter/user/followers?username=elonmusk" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com"
},
"body": {
"__typename": "User",
"id": "VXNlcjo0NDE5NjM5Nw==",
"rest_id": "44196397",
"affiliates_highlighted_label": {
...
},
"avatar": {
"image_url": "https://pbs.twimg.com/profile_images/1936002956333080576/kqqe2iWO_normal.jpg"
},
"core": {
"created_at": "Tue Jun 02 20:12:29 +0000 2009",
"name": "Elon Musk",
"screen_name": "elonmusk"
},
"dm_permissions": {
"can_dm": false,
"can_dm_on_xchat": false
},
"has_graduated_access": true,
"is_blue_verified": true,
"legacy": {
"default_profile": false,
"default_profile_image": false,
"description": "",
"entities": {
...
},
"fast_followers_count": 0,
"favourites_count": 177183,
"followers_count": 227669486,
"friends_count": 1220,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 164595,
"media_count": 4175,
"normal_followers_count": 227669486,
"pinned_tweet_ids_str": [
"1977281341264740625"
],
"possibly_sensitive": false,
"profile_banner_url": "https://pbs.twimg.com/profile_banners/44196397/1739948056",
"profile_interstitial_type": "",
"statuses_count": 87500,
"translator_type": "none",
"want_retweets": false,
"withheld_in_countries": []
},
"location": {
"location": ""
},
"media_permissions": {
"can_media_tag": false
},
"parody_commentary_fan_label": "None",
"profile_image_shape": "Circle",
"professional": {
"rest_id": "1679729435447275522",
"professional_type": "Creator",
"category": []
},
"privacy": {
"protected": false
},
"relationship_perspectives": {
"following": false
},
"tipjar_settings": {
"is_enabled": false
},
"super_follow_eligible": true,
"verification": {
"verified": false
},
"legacy_extended_profile": [],
"is_profile_translatable": false,
"verification_info": {
"is_identity_verified": false,
"reason": {
...
}
},
"highlights_info": {
"can_highlight_tweets": true,
"highlighted_tweets": "768"
},
"user_seed_tweet_count": 0,
"premium_gifting_eligible": false,
"business_account": [],
"creator_subscriptions_count": 225
}
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/user/following
requires authentication
Fetch the accounts that a user follows.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/twitter/user/following'
params = {
'username': 'elonmusk',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/twitter/user/following';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'username' => 'elonmusk',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/twitter/user/following"
);
const params = {
"username": "elonmusk",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/twitter/user/following?username=elonmusk" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"username": "elonmusk",
"next_cursor": "1843034842390672961"
},
"body": [
{
"id": 1.238139979575984e+18,
"id_str": "1238139979575984130",
"name": "Marc Ganzi",
"screen_name": "MarcGanzi",
"location": "",
"description": "CEO of DigitalBridge. All views expressed here are my own.",
"url": null,
"entities": {
"description": {
"urls": []
}
},
"protected": false,
"followers_count": 534,
"fast_followers_count": 0,
"normal_followers_count": 534,
"friends_count": 3,
"listed_count": 13,
"created_at": "Thu Mar 12 16:29:16 +0000 2020",
"favourites_count": 1,
"utc_offset": null,
"time_zone": null,
"geo_enabled": false,
"verified": false,
"statuses_count": 0,
"media_count": 0,
"lang": null,
"contributors_enabled": false,
"is_translator": false,
"is_translation_enabled": false,
"profile_background_color": "F5F8FA",
"profile_background_image_url": null,
"profile_background_image_url_https": null,
"profile_background_tile": false,
"profile_image_url": "http://pbs.twimg.com/profile_images/1977800360988405763/dk3cul9b_normal.jpg",
"profile_image_url_https": "https://pbs.twimg.com/profile_images/1977800360988405763/dk3cul9b_normal.jpg",
"profile_banner_url": "https://pbs.twimg.com/profile_banners/1238139979575984130/1584030615",
"profile_link_color": "1DA1F2",
"profile_sidebar_border_color": "C0DEED",
"profile_sidebar_fill_color": "DDEEF6",
"profile_text_color": "333333",
"profile_use_background_image": true,
"has_extended_profile": true,
"default_profile": true,
"default_profile_image": false,
"pinned_tweet_ids": [],
"pinned_tweet_ids_str": [],
"has_custom_timelines": false,
"can_media_tag": true,
"followed_by": false,
"following": false,
"live_following": false,
"follow_request_sent": false,
"notifications": false,
"muting": false,
"blocking": false,
"blocked_by": false,
"advertiser_account_type": "none",
"advertiser_account_service_levels": [],
"business_profile_state": "none",
"translator_type": "none",
"withheld_in_countries": [],
"require_some_consent": false
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/user/tweets
requires authentication
Fetch a user's tweets.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/twitter/user/tweets'
params = {
'user_id': '44196397',
'count': '20',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/twitter/user/tweets';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'user_id' => '44196397',
'count' => '20',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/twitter/user/tweets"
);
const params = {
"user_id": "44196397",
"count": "20",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/twitter/user/tweets?user_id=44196397&count=20" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"user_id": "14631115",
"next_cursor": "DAAHCgABG3WhvDP__-kLAAIAAAATMTk1MDYwMzMzNTYyODYxOTkyNwgAAwAAAAIAAA"
},
"body": [
{
"__typename": "Tweet",
"rest_id": "1977834593601335769",
"post_image_description": "Two men pose side by side on a bed one with curly brown hair wearing a plaid shirt and white undershirt the other with silver hair wearing a colorful striped sweater both with neutral to surprised expressions against a dark background with pillows in blue gray and yellow",
"core": {
"user_results": {
"result": {
"__typename": "User",
"id": "VXNlcjoxNDYzMTExNQ==",
"rest_id": "14631115",
"affiliates_highlighted_label": [],
"avatar": {
"image_url": "https://pbs.twimg.com/profile_images/1926720585544974336/DUQxWRWC_normal.jpg"
},
"core": {
"created_at": "Fri May 02 21:07:29 +0000 2008",
"name": "Phil Lester",
"screen_name": "AmazingPhil"
},
"dm_permissions": {
"can_dm": false
},
"has_graduated_access": true,
"is_blue_verified": true,
"legacy": {
"default_profile": false,
"default_profile_image": false,
"description": "terrible influence",
"entities": {
"description": {
"urls": []
},
"url": {
"urls": [
{
"display_url": "youtube.com/@danandphil",
"expanded_url": "http://youtube.com/@danandphil",
"url": "https://t.co/4sYG0x1IFb",
"indices": [0, 23]
}
]
}
},
"fast_followers_count": 0,
"favourites_count": 5991,
"followers_count": 6578773,
"friends_count": 341,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 5716,
"media_count": 2687,
"normal_followers_count": 6578773,
"pinned_tweet_ids_str": [],
"possibly_sensitive": false,
"profile_banner_url": "https://pbs.twimg.com/profile_banners/14631115/1748200960",
"profile_interstitial_type": "",
"statuses_count": 39700,
"translator_type": "none",
"url": "https://t.co/4sYG0x1IFb",
"want_retweets": false,
"withheld_in_countries": []
},
"location": {
"location": ""
},
"media_permissions": {
"can_media_tag": true
},
"parody_commentary_fan_label": "None",
"profile_image_shape": "Circle",
"professional": {
"rest_id": "1557742339095142400",
"professional_type": "Creator",
"category": [
{
"id": 30,
"name": "Circus",
"icon_name": "IconBriefcaseStroke"
}
]
},
"privacy": {
"protected": false
},
"relationship_perspectives": {
"following": false
},
"tipjar_settings": [],
"verification": {
"verified": false
}
}
}
},
"unmention_data": [],
"edit_control": {
"edit_tweet_ids": [
"1977834593601335769"
],
"editable_until_msecs": "1760391088161",
"is_edit_eligible": false,
"edits_remaining": "5"
},
"is_translatable": false,
"views": {
"count": "3",
"state": "EnabledWithCount"
},
"source": "\u003Ca href=\"https://mobile.twitter.com\" rel=\"nofollow\"\u003ETwitter Web App\u003C/a\u003E",
"award_eligible": false,
"granted_awards": [],
"grok_translated_post_with_availability": {
"is_available": false
},
"grok_analysis_button": true,
"legacy": {
"bookmark_count": 0,
"bookmarked": false,
"created_at": "Mon Oct 13 20:31:28 +0000 2025",
"conversation_id_str": "1977834593601335769",
"display_text_range": [0, 140],
"entities": {
"hashtags": [],
"symbols": [],
"timestamps": [],
"urls": [
{
"display_url": "t.co/co4",
"url": "https://t.co/co4",
"indices": [123, 139]
}
],
"user_mentions": [
{
"id_str": "40059553",
"name": "Daniel Howell",
"screen_name": "danielhowell",
"indices": [3, 16]
}
]
},
"favorite_count": 0,
"favorited": false,
"full_text": "RT @danielhowell: IS PHAN REAL? one of the biggest conspiracies in the history of the internet - we're gonna talk about it https://t.co/co4…",
"is_quote_status": false,
"lang": "en",
"possibly_sensitive": false,
"possibly_sensitive_editable": true,
"quote_count": 0,
"reply_count": 0,
"retweet_count": 8042,
"retweeted": false,
"user_id_str": "14631115",
"id_str": "1977834593601335769",
"retweeted_status_result": {
"result": {
"__typename": "Tweet",
"rest_id": "1977830021990592882",
"post_image_description": "Two men pose side by side on a bed one with curly brown hair wearing a plaid shirt and white undershirt the other with silver hair wearing a colorful striped sweater both with neutral to surprised expressions against a dark background with pillows in blue gray and yellow",
"core": {
"user_results": {
"result": {
"__typename": "User",
"id": "VXNlcjo0MDA1OTU1Mw==",
"rest_id": "40059553",
"affiliates_highlighted_label": [],
"avatar": {
"image_url": "https://pbs.twimg.com/profile_images/1926704050659061760/i8HoFBtP_normal.jpg"
},
"core": {
"created_at": "Thu May 14 18:55:05 +0000 2009",
"name": "Daniel Howell",
"screen_name": "danielhowell"
},
"dm_permissions": {
"can_dm": false
},
"has_graduated_access": true,
"is_blue_verified": true,
"legacy": {
"default_profile": false,
"default_profile_image": false,
"description": "my life is a joke",
"entities": {
"description": {
"urls": []
},
"url": {
"urls": [
{
"display_url": "youtube.com/@danandphil",
"expanded_url": "http://youtube.com/@danandphil",
"url": "https://t.co/XdSUtmziCX",
"indices": [0, 23]
}
]
}
},
"fast_followers_count": 0,
"favourites_count": 5672,
"followers_count": 7325341,
"friends_count": 846,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 6472,
"media_count": 1142,
"normal_followers_count": 7325341,
"pinned_tweet_ids_str": [],
"possibly_sensitive": false,
"profile_banner_url": "https://pbs.twimg.com/profile_banners/40059553/1748196872",
"profile_interstitial_type": "",
"statuses_count": 20707,
"translator_type": "none",
"url": "https://t.co/XdSUtmziCX",
"want_retweets": false,
"withheld_in_countries": []
},
"location": {
"location": ""
},
"media_permissions": {
"can_media_tag": true
},
"parody_commentary_fan_label": "None",
"profile_image_shape": "Circle",
"professional": {
"rest_id": "1571090023876804608",
"professional_type": "Creator",
"category": [
{
"id": 935,
"name": "Comedian",
"icon_name": "IconBriefcaseStroke"
}
]
},
"privacy": {
"protected": false
},
"relationship_perspectives": {
"following": false
},
"tipjar_settings": [],
"verification": {
"verified": false
}
}
}
},
"unmention_data": [],
"edit_control": {
"edit_tweet_ids": [
"1977830021990592882"
],
"editable_until_msecs": "1760389998000",
"is_edit_eligible": true,
"edits_remaining": "5"
},
"is_translatable": false,
"views": {
"count": "9717344",
"state": "EnabledWithCount"
},
"source": "\u003Ca href=\"https://mobile.twitter.com\" rel=\"nofollow\"\u003ETwitter Web App\u003C/a\u003E",
"award_eligible": false,
"granted_awards": [],
"grok_translated_post_with_availability": {
"is_available": false
},
"grok_analysis_button": true,
"legacy": {
"bookmark_count": 4783,
"bookmarked": false,
"created_at": "Mon Oct 13 20:13:18 +0000 2025",
"conversation_id_str": "1977830021990592882",
"display_text_range": [0, 128],
"entities": {
"hashtags": [],
"media": [
{
"display_url": "pic.x.com/WIuLvofrdB",
"expanded_url": "https://x.com/danielhowell/status/1977830021990592882/photo/1",
"id_str": "1977821878380109824",
"indices": [129, 152],
"media_key": "3_1977821878380109824",
"media_url_https": "https://pbs.twimg.com/media/G3KihPnXoAAprz7.jpg",
"type": "photo",
"url": "https://t.co/WIuLvofrdB",
"ext_media_availability": {
"status": "Available"
},
"features": {
"large": {
"faces": [
{
"x": 333,
"y": 182,
"h": 317,
"w": 317
},
{
"x": 610,
"y": 132,
"h": 341,
"w": 341
}
]
},
"medium": {
"faces": [
{
"x": 312,
"y": 170,
"h": 297,
"w": 297
},
{
"x": 571,
"y": 123,
"h": 319,
"w": 319
}
]
},
"small": {
"faces": [
{
"x": 176,
"y": 96,
"h": 168,
"w": 168
},
{
"x": 324,
"y": 70,
"h": 181,
"w": 181
}
]
},
"orig": {
"faces": [
{
"x": 333,
"y": 182,
"h": 317,
"w": 317
},
{
"x": 610,
"y": 132,
"h": 341,
"w": 341
}
]
}
},
"sizes": {
"large": {
"h": 720,
"w": 1280,
"resize": "fit"
},
"medium": {
"h": 675,
"w": 1200,
"resize": "fit"
},
"small": {
"h": 383,
"w": 680,
"resize": "fit"
},
"thumb": {
"h": 150,
"w": 150,
"resize": "crop"
}
},
"original_info": {
"height": 720,
"width": 1280,
"focus_rects": [
{
"x": 0,
"y": 0,
"w": 1280,
"h": 717
},
{
"x": 440,
"y": 0,
"w": 720,
"h": 720
},
{
"x": 484,
"y": 0,
"w": 632,
"h": 720
},
{
"x": 620,
"y": 0,
"w": 360,
"h": 720
},
{
"x": 0,
"y": 0,
"w": 1280,
"h": 720
}
]
},
"allow_download_status": {
"allow_download": true
},
"media_results": {
"result": {
"media_key": "3_1977821878380109824"
}
}
}
],
"symbols": [],
"timestamps": [],
"urls": [
{
"display_url": "youtu.be/Cxe_YMJ4nUs",
"expanded_url": "https://youtu.be/Cxe_YMJ4nUs",
"url": "https://t.co/co4EINP3oM",
"indices": [105, 128]
}
],
"user_mentions": []
},
"extended_entities": {
"media": [
{
"display_url": "pic.x.com/WIuLvofrdB",
"expanded_url": "https://x.com/danielhowell/status/1977830021990592882/photo/1",
"id_str": "1977821878380109824",
"indices": [129, 152],
"media_key": "3_1977821878380109824",
"media_url_https": "https://pbs.twimg.com/media/G3KihPnXoAAprz7.jpg",
"type": "photo",
"url": "https://t.co/WIuLvofrdB",
"ext_media_availability": {
"status": "Available"
},
"features": {
"large": {
"faces": [
{
"x": 333,
"y": 182,
"h": 317,
"w": 317
},
{
"x": 610,
"y": 132,
"h": 341,
"w": 341
}
]
},
"medium": {
"faces": [
{
"x": 312,
"y": 170,
"h": 297,
"w": 297
},
{
"x": 571,
"y": 123,
"h": 319,
"w": 319
}
]
},
"small": {
"faces": [
{
"x": 176,
"y": 96,
"h": 168,
"w": 168
},
{
"x": 324,
"y": 70,
"h": 181,
"w": 181
}
]
},
"orig": {
"faces": [
{
"x": 333,
"y": 182,
"h": 317,
"w": 317
},
{
"x": 610,
"y": 132,
"h": 341,
"w": 341
}
]
}
},
"sizes": {
"large": {
"h": 720,
"w": 1280,
"resize": "fit"
},
"medium": {
"h": 675,
"w": 1200,
"resize": "fit"
},
"small": {
"h": 383,
"w": 680,
"resize": "fit"
},
"thumb": {
"h": 150,
"w": 150,
"resize": "crop"
}
},
"original_info": {
"height": 720,
"width": 1280,
"focus_rects": [
{
"x": 0,
"y": 0,
"w": 1280,
"h": 717
},
{
"x": 440,
"y": 0,
"w": 720,
"h": 720
},
{
"x": 484,
"y": 0,
"w": 632,
"h": 720
},
{
"x": 620,
"y": 0,
"w": 360,
"h": 720
},
{
"x": 0,
"y": 0,
"w": 1280,
"h": 720
}
]
},
"allow_download_status": {
"allow_download": true
},
"media_results": {
"result": {
"media_key": "3_1977821878380109824"
}
}
}
]
},
"favorite_count": 73583,
"favorited": false,
"full_text": "IS PHAN REAL? one of the biggest conspiracies in the history of the internet - we're gonna talk about it https://t.co/co4EINP3oM https://t.co/WIuLvofrdB",
"is_quote_status": false,
"lang": "en",
"possibly_sensitive": false,
"possibly_sensitive_editable": true,
"quote_count": 11181,
"reply_count": 2420,
"retweet_count": 8042,
"retweeted": false,
"user_id_str": "40059553",
"id_str": "1977830021990592882"
}
}
}
}
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/user/replies
requires authentication
Fetch a user's tweets and replies.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/twitter/user/replies'
params = {
'user_id': '44196397',
'count': '20',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/twitter/user/replies';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'user_id' => '44196397',
'count' => '20',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/twitter/user/replies"
);
const params = {
"user_id": "44196397",
"count": "20",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/twitter/user/replies?user_id=44196397&count=20" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"user_id": "14631115",
"cursor": "DAAHCgABG3WeFdL__-sLAAIAAAATMTk2NjQ2OTgwNjU4NjAwNzg2NwgAAwAAAAIAAA"
},
"body": [
{
"__typename": "Tweet",
"rest_id": "1977834593601335769",
"post_image_description": "Two men pose side by side on a bed one with curly brown hair wearing a plaid shirt and white undershirt the other with silver hair wearing a colorful striped sweater both with neutral to surprised expressions against a dark background with pillows in blue gray and yellow",
"has_birdwatch_notes": false,
"core": {
"user_results": {
"result": {
"__typename": "User",
"id": "VXNlcjoxNDYzMTExNQ==",
"rest_id": "14631115",
"affiliates_highlighted_label": [],
"avatar": {
"image_url": "https://pbs.twimg.com/profile_images/1926720585544974336/DUQxWRWC_normal.jpg"
},
"core": {
"created_at": "Fri May 02 21:07:29 +0000 2008",
"name": "Phil Lester",
"screen_name": "AmazingPhil"
},
"dm_permissions": {
"can_dm": false
},
"has_graduated_access": true,
"is_blue_verified": true,
"legacy": {
"default_profile": false,
"default_profile_image": false,
"description": "terrible influence",
"entities": {
"description": {
"urls": []
},
"url": {
"urls": [
{
"display_url": "youtube.com/@danandphil",
"expanded_url": "http://youtube.com/@danandphil",
"url": "https://t.co/4sYG0x1IFb",
"indices": [0, 23]
}
]
}
},
"fast_followers_count": 0,
"favourites_count": 5991,
"followers_count": 6578736,
"friends_count": 341,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 5716,
"media_count": 2687,
"normal_followers_count": 6578736,
"pinned_tweet_ids_str": [],
"possibly_sensitive": false,
"profile_banner_url": "https://pbs.twimg.com/profile_banners/14631115/1748200960",
"profile_interstitial_type": "",
"statuses_count": 39700,
"translator_type": "none",
"url": "https://t.co/4sYG0x1IFb",
"want_retweets": false,
"withheld_in_countries": []
},
"location": {
"location": ""
},
"media_permissions": {
"can_media_tag": true
},
"parody_commentary_fan_label": "None",
"profile_image_shape": "Circle",
"professional": {
"rest_id": "1557742339095142400",
"professional_type": "Creator",
"category": [
{
"id": 30,
"name": "Circus",
"icon_name": "IconBriefcaseStroke"
}
]
},
"privacy": {
"protected": false
},
"relationship_perspectives": {
"following": false
},
"tipjar_settings": [],
"verification": {
"verified": false
}
}
}
},
"unmention_data": [],
"edit_control": {
"edit_tweet_ids": [
"1977834593601335769"
],
"editable_until_msecs": "1760391088161",
"is_edit_eligible": false,
"edits_remaining": "5"
},
"is_translatable": false,
"views": {
"count": "3",
"state": "EnabledWithCount"
},
"source": "\u003Ca href=\"https://mobile.twitter.com\" rel=\"nofollow\"\u003ETwitter Web App\u003C/a\u003E",
"award_eligible": false,
"granted_awards": [],
"grok_translated_post_with_availability": {
"is_available": false
},
"grok_analysis_button": true,
"legacy": {
"bookmark_count": 0,
"bookmarked": false,
"created_at": "Mon Oct 13 20:31:28 +0000 2025",
"conversation_id_str": "1977834593601335769",
"display_text_range": [0, 140],
"entities": {
"hashtags": [],
"symbols": [],
"timestamps": [],
"urls": [
{
"display_url": "t.co/co4",
"url": "https://t.co/co4",
"indices": [123, 139]
}
],
"user_mentions": [
{
"id_str": "40059553",
"name": "Daniel Howell",
"screen_name": "danielhowell",
"indices": [3, 16]
}
]
},
"favorite_count": 0,
"favorited": false,
"full_text": "RT @danielhowell: IS PHAN REAL? one of the biggest conspiracies in the history of the internet - we're gonna talk about it https://t.co/co4…",
"is_quote_status": false,
"lang": "en",
"possibly_sensitive": false,
"possibly_sensitive_editable": true,
"quote_count": 0,
"reply_count": 0,
"retweet_count": 8041,
"retweeted": false,
"user_id_str": "14631115",
"id_str": "1977834593601335769",
"retweeted_status_result": {
"result": {
"__typename": "Tweet",
"rest_id": "1977830021990592882",
"post_image_description": "Two men pose side by side on a bed one with curly brown hair wearing a plaid shirt and white undershirt the other with silver hair wearing a colorful striped sweater both with neutral to surprised expressions against a dark background with pillows in blue gray and yellow",
"has_birdwatch_notes": false,
"core": {
"user_results": {
"result": {
"__typename": "User",
"id": "VXNlcjo0MDA1OTU1Mw==",
"rest_id": "40059553",
"affiliates_highlighted_label": [],
"avatar": {
"image_url": "https://pbs.twimg.com/profile_images/1926704050659061760/i8HoFBtP_normal.jpg"
},
"core": {
"created_at": "Thu May 14 18:55:05 +0000 2009",
"name": "Daniel Howell",
"screen_name": "danielhowell"
},
"dm_permissions": {
"can_dm": false
},
"has_graduated_access": true,
"is_blue_verified": true,
"legacy": {
"default_profile": false,
"default_profile_image": false,
"description": "my life is a joke",
"entities": {
"description": {
"urls": []
},
"url": {
"urls": [
{
"display_url": "youtube.com/@danandphil",
"expanded_url": "http://youtube.com/@danandphil",
"url": "https://t.co/XdSUtmziCX",
"indices": [0, 23]
}
]
}
},
"fast_followers_count": 0,
"favourites_count": 5672,
"followers_count": 7325298,
"friends_count": 846,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 6472,
"media_count": 1142,
"normal_followers_count": 7325298,
"pinned_tweet_ids_str": [],
"possibly_sensitive": false,
"profile_banner_url": "https://pbs.twimg.com/profile_banners/40059553/1748196872",
"profile_interstitial_type": "",
"statuses_count": 20707,
"translator_type": "none",
"url": "https://t.co/XdSUtmziCX",
"want_retweets": false,
"withheld_in_countries": []
},
"location": {
"location": ""
},
"media_permissions": {
"can_media_tag": true
},
"parody_commentary_fan_label": "None",
"profile_image_shape": "Circle",
"professional": {
"rest_id": "1571090023876804608",
"professional_type": "Creator",
"category": [
{
"id": 935,
"name": "Comedian",
"icon_name": "IconBriefcaseStroke"
}
]
},
"privacy": {
"protected": false
},
"relationship_perspectives": {
"following": false
},
"tipjar_settings": [],
"verification": {
"verified": false
}
}
}
},
"unmention_data": [],
"edit_control": {
"edit_tweet_ids": [
"1977830021990592882"
],
"editable_until_msecs": "1760389998000",
"is_edit_eligible": true,
"edits_remaining": "5"
},
"is_translatable": false,
"views": {
"count": "9712829",
"state": "EnabledWithCount"
},
"source": "\u003Ca href=\"https://mobile.twitter.com\" rel=\"nofollow\"\u003ETwitter Web App\u003C/a\u003E",
"award_eligible": false,
"granted_awards": [],
"grok_translated_post_with_availability": {
"is_available": false
},
"grok_analysis_button": true,
"legacy": {
"bookmark_count": 4780,
"bookmarked": false,
"created_at": "Mon Oct 13 20:13:18 +0000 2025",
"conversation_id_str": "1977830021990592882",
"display_text_range": [0, 128],
"entities": {
"hashtags": [],
"media": [
{
"display_url": "pic.x.com/WIuLvofrdB",
"expanded_url": "https://x.com/danielhowell/status/1977830021990592882/photo/1",
"id_str": "1977821878380109824",
"indices": [129, 152],
"media_key": "3_1977821878380109824",
"media_url_https": "https://pbs.twimg.com/media/G3KihPnXoAAprz7.jpg",
"type": "photo",
"url": "https://t.co/WIuLvofrdB",
"ext_media_availability": {
"status": "Available"
},
"features": {
"large": {
"faces": [
{
"x": 333,
"y": 182,
"h": 317,
"w": 317
},
{
"x": 610,
"y": 132,
"h": 341,
"w": 341
}
]
},
"medium": {
"faces": [
{
"x": 312,
"y": 170,
"h": 297,
"w": 297
},
{
"x": 571,
"y": 123,
"h": 319,
"w": 319
}
]
},
"small": {
"faces": [
{
"x": 176,
"y": 96,
"h": 168,
"w": 168
},
{
"x": 324,
"y": 70,
"h": 181,
"w": 181
}
]
},
"orig": {
"faces": [
{
"x": 333,
"y": 182,
"h": 317,
"w": 317
},
{
"x": 610,
"y": 132,
"h": 341,
"w": 341
}
]
}
},
"sizes": {
"large": {
"h": 720,
"w": 1280,
"resize": "fit"
},
"medium": {
"h": 675,
"w": 1200,
"resize": "fit"
},
"small": {
"h": 383,
"w": 680,
"resize": "fit"
},
"thumb": {
"h": 150,
"w": 150,
"resize": "crop"
}
},
"original_info": {
"height": 720,
"width": 1280,
"focus_rects": [
{
"x": 0,
"y": 0,
"w": 1280,
"h": 717
},
{
"x": 440,
"y": 0,
"w": 720,
"h": 720
},
{
"x": 484,
"y": 0,
"w": 632,
"h": 720
},
{
"x": 620,
"y": 0,
"w": 360,
"h": 720
},
{
"x": 0,
"y": 0,
"w": 1280,
"h": 720
}
]
},
"allow_download_status": {
"allow_download": true
},
"media_results": {
"result": {
"media_key": "3_1977821878380109824"
}
}
}
],
"symbols": [],
"timestamps": [],
"urls": [
{
"display_url": "youtu.be/Cxe_YMJ4nUs",
"expanded_url": "https://youtu.be/Cxe_YMJ4nUs",
"url": "https://t.co/co4EINP3oM",
"indices": [105, 128]
}
],
"user_mentions": []
},
"extended_entities": {
"media": [
{
"display_url": "pic.x.com/WIuLvofrdB",
"expanded_url": "https://x.com/danielhowell/status/1977830021990592882/photo/1",
"id_str": "1977821878380109824",
"indices": [129, 152],
"media_key": "3_1977821878380109824",
"media_url_https": "https://pbs.twimg.com/media/G3KihPnXoAAprz7.jpg",
"type": "photo",
"url": "https://t.co/WIuLvofrdB",
"ext_media_availability": {
"status": "Available"
},
"features": {
"large": {
"faces": [
{
"x": 333,
"y": 182,
"h": 317,
"w": 317
},
{
"x": 610,
"y": 132,
"h": 341,
"w": 341
}
]
},
"medium": {
"faces": [
{
"x": 312,
"y": 170,
"h": 297,
"w": 297
},
{
"x": 571,
"y": 123,
"h": 319,
"w": 319
}
]
},
"small": {
"faces": [
{
"x": 176,
"y": 96,
"h": 168,
"w": 168
},
{
"x": 324,
"y": 70,
"h": 181,
"w": 181
}
]
},
"orig": {
"faces": [
{
"x": 333,
"y": 182,
"h": 317,
"w": 317
},
{
"x": 610,
"y": 132,
"h": 341,
"w": 341
}
]
}
},
"sizes": {
"large": {
"h": 720,
"w": 1280,
"resize": "fit"
},
"medium": {
"h": 675,
"w": 1200,
"resize": "fit"
},
"small": {
"h": 383,
"w": 680,
"resize": "fit"
},
"thumb": {
"h": 150,
"w": 150,
"resize": "crop"
}
},
"original_info": {
"height": 720,
"width": 1280,
"focus_rects": [
{
"x": 0,
"y": 0,
"w": 1280,
"h": 717
},
{
"x": 440,
"y": 0,
"w": 720,
"h": 720
},
{
"x": 484,
"y": 0,
"w": 632,
"h": 720
},
{
"x": 620,
"y": 0,
"w": 360,
"h": 720
},
{
"x": 0,
"y": 0,
"w": 1280,
"h": 720
}
]
},
"allow_download_status": {
"allow_download": true
},
"media_results": {
"result": {
"media_key": "3_1977821878380109824"
}
}
}
]
},
"favorite_count": 73556,
"favorited": false,
"full_text": "IS PHAN REAL? one of the biggest conspiracies in the history of the internet - we're gonna talk about it https://t.co/co4EINP3oM https://t.co/WIuLvofrdB",
"is_quote_status": false,
"lang": "en",
"possibly_sensitive": false,
"possibly_sensitive_editable": true,
"quote_count": 11182,
"reply_count": 2420,
"retweet_count": 8041,
"retweeted": false,
"user_id_str": "40059553",
"id_str": "1977830021990592882"
}
}
}
},
"quick_promote_eligibility": {
"eligibility": "IneligibleNotProfessional"
}
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/user/highlights
requires authentication
Fetch user highlight tweets.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/twitter/user/highlights'
params = {
'user_id': '44196397',
'count': '20',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/twitter/user/highlights';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'user_id' => '44196397',
'count' => '20',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/twitter/user/highlights"
);
const params = {
"user_id": "44196397",
"count": "20",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/twitter/user/highlights?user_id=44196397&count=20" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"user_id": "877807935493033984",
"cursor": "DAAHCgABG3LkkNS__-wLAAIAAAATMTg0Mzk3MzExMjExNjY5ODIzOAgAAwAAAAIAAA"
},
"body": [
{
"__typename": "Tweet",
"rest_id": "1977441317836792102",
"post_image_description": "Black background with yellow Binance logo featuring a diamond shape in the center and the word ANNOUNCEMENT in large white capital letters below it.",
"core": {
"user_results": {
"result": {
"__typename": "User",
"id": "VXNlcjo4Nzc4MDc5MzU0OTMwMzM5ODQ=",
"rest_id": "877807935493033984",
"affiliates_highlighted_label": [],
"avatar": {
"image_url": "https://pbs.twimg.com/profile_images/1940131561103347712/f5y2qENu_normal.jpg"
},
"core": {
"created_at": "Thu Jun 22 08:38:15 +0000 2017",
"name": "Binance",
"screen_name": "binance"
},
"dm_permissions": {
"can_dm": false,
"can_dm_on_xchat": false
},
"has_graduated_access": true,
"is_blue_verified": false,
"legacy": {
"default_profile": false,
"default_profile_image": false,
"description": "The world’s leading blockchain ecosystem and digital asset exchange | #Binance #BNB | Support: @BinanceHelpDesk | Posts are not directed towards UK users.",
"entities": {
"description": {
"urls": []
},
"url": {
"urls": [
{
"display_url": "bit.ly/BinanceCryptoA…",
"expanded_url": "http://bit.ly/BinanceCryptoApp",
"url": "https://t.co/1not5QbiqF",
"indices": [0, 23]
}
]
}
},
"fast_followers_count": 0,
"favourites_count": 7133,
"followers_count": 14888052,
"friends_count": 576,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 34743,
"media_count": 15632,
"normal_followers_count": 14888052,
"pinned_tweet_ids_str": [
"1977441317836792102"
],
"possibly_sensitive": false,
"profile_banner_url": "https://pbs.twimg.com/profile_banners/877807935493033984/1759482578",
"profile_interstitial_type": "",
"statuses_count": 40272,
"translator_type": "none",
"url": "https://t.co/1not5QbiqF",
"want_retweets": false,
"withheld_in_countries": []
},
"location": {
"location": ""
},
"media_permissions": {
"can_media_tag": true
},
"parody_commentary_fan_label": "None",
"profile_image_shape": "Square",
"privacy": {
"protected": false
},
"relationship_perspectives": {
"following": false
},
"tipjar_settings": [],
"verification": {
"verified": false,
"verified_type": "Business"
}
}
}
},
"unmention_data": [],
"edit_control": {
"edit_tweet_ids": [
"1977441317836792102"
],
"editable_until_msecs": "1760297323000",
"is_edit_eligible": true,
"edits_remaining": "5"
},
"is_translatable": false,
"views": {
"count": "1279517",
"state": "EnabledWithCount"
},
"source": "\u003Ca href=\"https://mobile.twitter.com\" rel=\"nofollow\"\u003ETwitter Web App\u003C/a\u003E",
"award_eligible": false,
"granted_awards": [],
"grok_translated_post_with_availability": {
"is_available": false
},
"grok_analysis_button": false,
"legacy": {
"bookmark_count": 222,
"bookmarked": false,
"created_at": "Sun Oct 12 18:28:43 +0000 2025",
"conversation_id_str": "1977441317836792102",
"display_text_range": [0, 128],
"entities": {
"hashtags": [],
"media": [
{
"display_url": "pic.x.com/n5El9zvr3e",
"expanded_url": "https://x.com/binance/status/1977441317836792102/photo/1",
"id_str": "1977440632466513920",
"indices": [129, 152],
"media_key": "3_1977440632466513920",
"media_url_https": "https://pbs.twimg.com/media/G3FHxz6XIAAHqMV.jpg",
"type": "photo",
"url": "https://t.co/n5El9zvr3e",
"ext_media_availability": {
"status": "Available"
},
"features": {
"large": {
"faces": []
},
"medium": {
"faces": []
},
"small": {
"faces": []
},
"orig": {
"faces": []
}
},
"sizes": {
"large": {
"h": 1080,
"w": 1080,
"resize": "fit"
},
"medium": {
"h": 1080,
"w": 1080,
"resize": "fit"
},
"small": {
"h": 680,
"w": 680,
"resize": "fit"
},
"thumb": {
"h": 150,
"w": 150,
"resize": "crop"
}
},
"original_info": {
"height": 1080,
"width": 1080,
"focus_rects": [
{
"x": 0,
"y": 319,
"w": 1080,
"h": 605
},
{
"x": 0,
"y": 0,
"w": 1080,
"h": 1080
},
{
"x": 67,
"y": 0,
"w": 947,
"h": 1080
},
{
"x": 270,
"y": 0,
"w": 540,
"h": 1080
},
{
"x": 0,
"y": 0,
"w": 1080,
"h": 1080
}
]
},
"media_results": {
"result": {
"media_key": "3_1977440632466513920"
}
}
}
],
"symbols": [],
"timestamps": [],
"urls": [
{
"display_url": "binance.com/en/support/ann…",
"expanded_url": "https://www.binance.com/en/support/announcement/detail/d9cb0d52d7c142a5be4f49732bd8760c",
"url": "https://t.co/0BdimwS53G",
"indices": [105, 128]
}
],
"user_mentions": []
},
"extended_entities": {
"media": [
{
"display_url": "pic.x.com/n5El9zvr3e",
"expanded_url": "https://x.com/binance/status/1977441317836792102/photo/1",
"id_str": "1977440632466513920",
"indices": [129, 152],
"media_key": "3_1977440632466513920",
"media_url_https": "https://pbs.twimg.com/media/G3FHxz6XIAAHqMV.jpg",
"type": "photo",
"url": "https://t.co/n5El9zvr3e",
"ext_media_availability": {
"status": "Available"
},
"features": {
"large": {
"faces": []
},
"medium": {
"faces": []
},
"small": {
"faces": []
},
"orig": {
"faces": []
}
},
"sizes": {
"large": {
"h": 1080,
"w": 1080,
"resize": "fit"
},
"medium": {
"h": 1080,
"w": 1080,
"resize": "fit"
},
"small": {
"h": 680,
"w": 680,
"resize": "fit"
},
"thumb": {
"h": 150,
"w": 150,
"resize": "crop"
}
},
"original_info": {
"height": 1080,
"width": 1080,
"focus_rects": [
{
"x": 0,
"y": 319,
"w": 1080,
"h": 605
},
{
"x": 0,
"y": 0,
"w": 1080,
"h": 1080
},
{
"x": 67,
"y": 0,
"w": 947,
"h": 1080
},
{
"x": 270,
"y": 0,
"w": 540,
"h": 1080
},
{
"x": 0,
"y": 0,
"w": 1080,
"h": 1080
}
]
},
"media_results": {
"result": {
"media_key": "3_1977440632466513920"
}
}
}
]
},
"favorite_count": 2612,
"favorited": false,
"full_text": "Statement on recent market volatility and the latest progress update on our user protection measures.\n\nπ https://t.co/0BdimwS53G https://t.co/n5El9zvr3e",
"is_quote_status": false,
"lang": "en",
"possibly_sensitive": false,
"possibly_sensitive_editable": true,
"quote_count": 156,
"reply_count": 2257,
"retweet_count": 529,
"retweeted": false,
"user_id_str": "877807935493033984",
"id_str": "1977441317836792102"
},
"trend_results": {
"rest_id": "1977888228876378530"
}
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/user/batch
requires authentication
Fetch several user profiles by username in one request. Up to 20 usernames per call.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/twitter/user/batch'
params = {
'usernames': 'elonmusk,nasa',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/twitter/user/batch';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'usernames' => 'elonmusk,nasa',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/twitter/user/batch"
);
const params = {
"usernames": "elonmusk,nasa",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/twitter/user/batch?usernames=elonmusk%2Cnasa" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"requested": 1,
"count": 1
},
"body": [
{
"__typename": "User",
"action_counts": {
"favorites_count": 250189
},
"affiliates_highlighted_label": {
"label": {
"badge": {
"url": "https://pbs.twimg.com/profile_images/1955359038532653056/OSHY3ewP_bigger.jpg"
},
"description": "X",
"url": {
"url": "https://twitter.com/X",
"urlType": "DeepLink"
},
"userLabelDisplayType": "Badge",
"userLabelType": "BusinessLabel"
}
},
"avatar": {
"image_url": "https://pbs.twimg.com/profile_images/2103567689515954176/aR-Kjpp4_normal.jpg"
},
"banner": {
"image_url": "https://pbs.twimg.com/profile_banners/44196397/1774145451"
},
"business_account": [],
"core": {
"created_at": "Tue Jun 02 20:12:29 +0000 2009",
"name": "Elon Musk",
"screen_name": "elonmusk"
},
"creator_subscriptions_count": 251,
"follow_request_sent": false,
"has_graduated_access": true,
"highlights_info": {
"can_highlight_tweets": true,
"highlighted_tweets": "1075"
},
"id": "VXNlcjo0NDE5NjM5Nw==",
"is_blue_verified": true,
"is_profile_translatable": false,
"legacy_extended_profile": [],
"location": {
"location": ""
},
"media_permissions": {
"can_media_tag": false
},
"notifications_settings": {
"notifications_enabled": false
},
"parody_commentary_fan_label": "None",
"pinned_items": {
"tweet_ids_str": [
"2103537377239015827"
]
},
"possibly_sensitive": false,
"premium_gifting_eligible": false,
"privacy": {
"protected": false
},
"professional": {
"category": [],
"professional_type": "Creator",
"rest_id": "1679729435447275522"
},
"profile_bio": {
"description": "https://t.co/ZdBx5WABYx",
"entities": {
"description": {
"urls": [
{
"display_url": "Terafab.AI",
"expanded_url": "http://Terafab.AI",
"indices": [
0,
23
],
"url": "https://t.co/ZdBx5WABYx"
}
]
}
}
},
"profile_image_shape": "Circle",
"profile_metadata": {
"profile_interstitial_type": ""
},
"profile_translation": {
"translator_type": "none"
},
"relationship_counts": {
"followers": 241732743,
"following": 1414
},
"relationship_perspectives": {
"blocked_by": false,
"blocking": false,
"followed_by": false,
"following": false,
"live_following": false,
"muting": false
},
"rest_id": "44196397",
"super_follow_eligible": true,
"super_followed_by": false,
"super_following": false,
"tipjar_settings": {
"is_enabled": false
},
"tweet_counts": {
"media_tweets": 4726,
"tweets": 109266
},
"user_seed_tweet_count": 0,
"verification": {
"verified": false
},
"verification_info": {
"is_identity_verified": false,
"reason": {
"description": {
"entities": [
{
"from_index": 54,
"ref": {
"url": "https://twitter.com/X",
"url_type": "ExternalUrl"
},
"to_index": 56
},
{
"from_index": 63,
"ref": {
"url": "https://help.twitter.com/en/rules-and-policies/profile-labels",
"url_type": "ExternalUrl"
},
"to_index": 73
}
],
"text": "This account is verified because it's an affiliate of @X on X. Learn more"
},
"override_verified_year": -3000,
"verified_since_msec": "-156836000000000"
}
},
"website": {
"url": ""
}
}
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/user/media
requires authentication
Fetch a user's tweets that contain photos or videos.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/twitter/user/media'
params = {
'user_id': '44196397',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/twitter/user/media';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'user_id' => '44196397',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/twitter/user/media"
);
const params = {
"user_id": "44196397",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/twitter/user/media?user_id=44196397" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"user_id": "44196397",
"count": 1,
"next_cursor": "DAABCgABHThagI4___0KAAIdFkh5ixbRJAgAAwAAAAIAAA"
},
"body": [
{
"__typename": "Tweet",
"core": {
"user_results": {
"result": {
"__typename": "User",
"action_counts": {
"favorites_count": 250189
},
"affiliates_highlighted_label": {
"label": {
"badge": {
"url": "https://pbs.twimg.com/profile_images/1955359038532653056/OSHY3ewP_bigger.jpg"
},
"description": "X",
"url": {
"url": "https://twitter.com/X",
"urlType": "DeepLink"
},
"userLabelDisplayType": "Badge",
"userLabelType": "BusinessLabel"
}
},
"avatar": {
"image_url": "https://pbs.twimg.com/profile_images/2103567689515954176/aR-Kjpp4_normal.jpg"
},
"banner": {
"image_url": "https://pbs.twimg.com/profile_banners/44196397/1774145451"
},
"core": {
"created_at": "Tue Jun 02 20:12:29 +0000 2009",
"name": "Elon Musk",
"screen_name": "elonmusk"
},
"follow_request_sent": false,
"has_graduated_access": true,
"id": "VXNlcjo0NDE5NjM5Nw==",
"is_blue_verified": true,
"location": {
"location": ""
},
"media_permissions": {
"can_media_tag": false
},
"notifications_settings": {
"notifications_enabled": false
},
"parody_commentary_fan_label": "None",
"pinned_items": {
"tweet_ids_str": [
"2103537377239015827"
]
},
"possibly_sensitive": false,
"privacy": {
"protected": false
},
"professional": {
"category": [],
"professional_type": "Creator",
"rest_id": "1679729435447275522"
},
"profile_bio": {
"description": "https://t.co/ZdBx5WABYx",
"entities": {
"description": {
"urls": [
{
"display_url": "Terafab.AI",
"expanded_url": "http://Terafab.AI",
"indices": [
0,
23
],
"url": "https://t.co/ZdBx5WABYx"
}
]
}
}
},
"profile_image_shape": "Circle",
"profile_metadata": {
"profile_interstitial_type": ""
},
"profile_translation": {
"translator_type": "none"
},
"relationship_counts": {
"followers": 241730621,
"following": 1414
},
"relationship_perspectives": {
"blocked_by": false,
"blocking": false,
"followed_by": false,
"following": false,
"live_following": false,
"muting": false
},
"rest_id": "44196397",
"super_follow_eligible": true,
"super_followed_by": false,
"super_following": false,
"tipjar_settings": {
"is_enabled": false
},
"tweet_counts": {
"media_tweets": 4726,
"tweets": 109266
},
"verification": {
"verified": false
},
"website": {
"url": ""
}
}
}
},
"edit_control": {
"edit_tweet_ids": [
"2104294902548869550"
],
"editable_until_msecs": "1790541575000",
"edits_remaining": "5",
"is_edit_eligible": false
},
"grok_analysis_button": true,
"grok_translated_post_with_availability": {
"is_available": false
},
"is_translatable": false,
"legacy": {
"bookmark_count": 114,
"bookmarked": false,
"conversation_id_str": "2104274537177129149",
"created_at": "Sun Sep 27 19:39:35 +0000 2026",
"display_text_range": [
14,
15
],
"entities": {
"media": [
{
"display_url": "pic.x.com/gE0MsNILO0",
"expanded_url": "https://x.com/elonmusk/status/2104294902548869550/photo/1",
"ext_media_availability": {
"status": "Available"
},
"id_str": "2104294892126019584",
"indices": [
16,
39
],
"media_key": "16_2104294892126019584",
"media_results": {
"result": {
"media_key": "16_2104294892126019584"
}
},
"media_url_https": "https://pbs.twimg.com/tweet_video_thumb/HTP1DivXIAAsBWL.jpg",
"original_info": {
"focus_rects": [],
"height": 280,
"width": 500
},
"sizes": {
"large": {
"h": 280,
"resize": "fit",
"w": 500
},
"medium": {
"h": 280,
"resize": "fit",
"w": 500
},
"small": {
"h": 280,
"resize": "fit",
"w": 500
},
"thumb": {
"h": 150,
"resize": "crop",
"w": 150
}
},
"type": "animated_gif",
"url": "https://t.co/gE0MsNILO0",
"video_info": {
"aspect_ratio": [
25,
14
],
"variants": [
{
"bitrate": 0,
"content_type": "video/mp4",
"url": "https://video.twimg.com/tweet_video/HTP1DivXIAAsBWL.mp4"
}
]
}
}
],
"user_mentions": [
{
"id_str": "592730371",
"indices": [
0,
13
],
"name": "Jack Posobiec",
"screen_name": "JackPosobiec"
}
]
},
"extended_entities": {
"media": [
{
"display_url": "pic.x.com/gE0MsNILO0",
"expanded_url": "https://x.com/elonmusk/status/2104294902548869550/photo/1",
"ext_media_availability": {
"status": "Available"
},
"id_str": "2104294892126019584",
"indices": [
16,
39
],
"media_key": "16_2104294892126019584",
"media_results": {
"result": {
"media_key": "16_2104294892126019584"
}
},
"media_url_https": "https://pbs.twimg.com/tweet_video_thumb/HTP1DivXIAAsBWL.jpg",
"original_info": {
"focus_rects": [],
"height": 280,
"width": 500
},
"sizes": {
"large": {
"h": 280,
"resize": "fit",
"w": 500
},
"medium": {
"h": 280,
"resize": "fit",
"w": 500
},
"small": {
"h": 280,
"resize": "fit",
"w": 500
},
"thumb": {
"h": 150,
"resize": "crop",
"w": 150
}
},
"type": "animated_gif",
"url": "https://t.co/gE0MsNILO0",
"video_info": {
"aspect_ratio": [
25,
14
],
"variants": [
{
"bitrate": 0,
"content_type": "video/mp4",
"url": "https://video.twimg.com/tweet_video/HTP1DivXIAAsBWL.mp4"
}
]
}
}
]
},
"favorite_count": 5811,
"favorited": false,
"full_text": "@JackPosobiec π― https://t.co/gE0MsNILO0",
"id_str": "2104294902548869550",
"in_reply_to_screen_name": "JackPosobiec",
"in_reply_to_status_id_str": "2104274537177129149",
"in_reply_to_user_id_str": "592730371",
"is_quote_status": false,
"lang": "qme",
"possibly_sensitive": false,
"possibly_sensitive_editable": true,
"quote_count": 20,
"reply_count": 337,
"retweet_count": 207,
"retweeted": false,
"user_id_str": "44196397"
},
"rest_id": "2104294902548869550",
"superFollowsReplyUserResult": {
"result": {
"__typename": "User",
"core": {
"screen_name": "JackPosobiec"
}
}
},
"unmention_data": [],
"views": {
"count": "302996",
"state": "EnabledWithCount"
}
}
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/user/lists
requires authentication
Fetch the public lists a user owns.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/twitter/user/lists'
params = {
'username': 'nasa',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/twitter/user/lists';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'username' => 'nasa',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/twitter/user/lists"
);
const params = {
"username": "nasa",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/twitter/user/lists?username=nasa" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"username": "nasa",
"count": 1,
"next_cursor": "5513570520153907201"
},
"body": [
{
"id": 1970899750481260878,
"id_str": "1970899750481260878",
"name": "2025 Astronaut Candidates",
"uri": "/NASA/lists/1970899750481260878",
"subscriber_count": 29,
"member_count": 5,
"mode": "public",
"description": "Members of NASA's 2025 astronaut candidate class",
"slug": "1970899750481260878",
"full_name": "@NASA/1970899750481260878",
"created_at": "Wed Sep 24 17:14:52 +0000 2025",
"following": false,
"user": {
"id": 11348282,
"id_str": "11348282",
"name": "NASA",
"screen_name": "NASA",
"location": "Pale Blue Dot",
"description": "Making the seemingly impossible, possible. β¨",
"url": "https://t.co/9NkQJKAnuU",
"entities": {
"url": {
"urls": [
{
"url": "https://t.co/9NkQJKAnuU",
"expanded_url": "http://www.nasa.gov/",
"display_url": "nasa.gov",
"indices": [
0,
23
]
}
]
},
"description": {
"urls": []
}
},
"protected": false,
"followers_count": 92376751,
"fast_followers_count": 0,
"normal_followers_count": 92376751,
"friends_count": 115,
"listed_count": 96903,
"created_at": "Wed Dec 19 20:20:32 +0000 2007",
"favourites_count": 17003,
"utc_offset": null,
"time_zone": null,
"geo_enabled": false,
"verified": false,
"statuses_count": 74348,
"media_count": 28165,
"lang": null,
"contributors_enabled": false,
"is_translator": false,
"is_translation_enabled": false,
"profile_background_color": "000000",
"profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png",
"profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png",
"profile_background_tile": false,
"profile_image_url": "http://pbs.twimg.com/profile_images/1321163587679784960/0ZxKlEKB_normal.jpg",
"profile_image_url_https": "https://pbs.twimg.com/profile_images/1321163587679784960/0ZxKlEKB_normal.jpg",
"profile_banner_url": "https://pbs.twimg.com/profile_banners/11348282/1788992290",
"profile_link_color": "205BA7",
"profile_sidebar_border_color": "000000",
"profile_sidebar_fill_color": "F3F2F2",
"profile_text_color": "000000",
"profile_use_background_image": true,
"has_extended_profile": true,
"default_profile": false,
"default_profile_image": false,
"pinned_tweet_ids": [],
"pinned_tweet_ids_str": [],
"has_custom_timelines": true,
"can_media_tag": true,
"followed_by": false,
"following": false,
"follow_request_sent": false,
"notifications": false,
"advertiser_account_type": "none",
"advertiser_account_service_levels": [],
"business_profile_state": "none",
"translator_type": "regular",
"withheld_in_countries": [],
"require_some_consent": false
}
}
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/user/relationship
requires authentication
Check whether two accounts follow each other.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/twitter/user/relationship'
params = {
'source': 'elonmusk',
'target': 'nasa',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/twitter/user/relationship';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'source' => 'elonmusk',
'target' => 'nasa',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/twitter/user/relationship"
);
const params = {
"source": "elonmusk",
"target": "nasa",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/twitter/user/relationship?source=elonmusk&target=nasa" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"source": "elonmusk",
"target": "nasa"
},
"body": {
"source": {
"id": 44196397,
"id_str": "44196397",
"screen_name": "elonmusk",
"following": true,
"followed_by": false,
"live_following": false,
"following_received": null,
"following_requested": null,
"notifications_enabled": null,
"can_dm": false,
"can_media_tag": null,
"blocking": null,
"blocked_by": null,
"muting": null,
"want_retweets": null,
"all_replies": null,
"marked_spam": null
},
"target": {
"id": 11348282,
"id_str": "11348282",
"screen_name": "NASA",
"following": false,
"followed_by": true,
"following_received": null,
"following_requested": null
}
}
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List
GET /v1/list/search
requires authentication
Search for public Twitter lists.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/twitter/list/search'
params = {
'search': 'tech',
'count': '20',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/twitter/list/search';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'search' => 'tech',
'count' => '20',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/twitter/list/search"
);
const params = {
"search": "tech",
"count": "20",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/twitter/list/search?search=tech&count=20" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"search": "tech",
"cursor": "DAAHCgABHThauee___8LAAIAAAAcV3pJNE15NDRNekV6Tml3NE1UVTBNRFl5"
},
"body": [
{
"created_at": 1592160084000,
"default_banner_media": {
"media_info": {
"original_img_height": 375,
"original_img_url": "https://pbs.twimg.com/media/GkIQIQYWEAAgrG9.png",
"original_img_width": 1125,
"salient_rect": {
"height": 1,
"left": 562,
"top": 187,
"width": 1
}
}
},
"default_banner_media_results": [],
"description": "Tech entrepreneurs, investors, and operators that publish high quality threads consistently.",
"facepile_urls": [
"https://pbs.twimg.com/profile_images/1593841792864206848/Ky5zmcaA_mini.jpg",
"https://pbs.twimg.com/profile_images/1972685728669634560/iQ0AD43Y_mini.png"
],
"followers_context": "4.8K followers including @Philip_Michael",
"following": false,
"id": "TGlzdDoxMjcyMjM3NzE5NzMzNzk2ODY2",
"id_str": "1272237719733796866",
"is_member": false,
"member_count": 27,
"members_context": "27 members",
"mode": "Public",
"muting": false,
"name": "Startupeable: Tech & VC",
"pinning": false,
"subscriber_count": 4827,
"user_results": {
"result": {
"__typename": "User",
"action_counts": {
"favorites_count": 8290
},
"affiliates_highlighted_label": [],
"avatar": {
"image_url": "https://pbs.twimg.com/profile_images/1528885205737435136/o1ng-ZWT_normal.jpg"
},
"banner": {
"image_url": "https://pbs.twimg.com/profile_banners/1038266528/1663466455"
},
"core": {
"created_at": "Wed Dec 26 22:55:57 +0000 2012",
"name": "Enzo Cavalie",
"screen_name": "enzocavalie"
},
"follow_request_sent": false,
"has_graduated_access": true,
"id": "VXNlcjoxMDM4MjY2NTI4",
"is_blue_verified": true,
"location": {
"location": "San Francisco, CA"
},
"media_permissions": {
"can_media_tag": true
},
"notifications_settings": {
"notifications_enabled": false
},
"parody_commentary_fan_label": "None",
"pinned_items": {
"tweet_ids_str": [
"1591475939241623553"
]
},
"possibly_sensitive": false,
"privacy": {
"protected": false
},
"professional": {
"category": [],
"professional_type": "Creator",
"rest_id": "1478242261381099523"
},
"profile_bio": {
"description": "Telling stories of global founders at @startupeable, LatAm’s #1 Startup Podcast | π΅πͺ in πΊπ² | Previously VC @reachfund",
"entities": {
"description": [],
"url": {
"urls": [
{
"display_url": "startupeable.com",
"expanded_url": "http://startupeable.com",
"indices": [
0,
23
],
"url": "https://t.co/kJz0MfnWAk"
}
]
}
}
},
"profile_description_language": "en",
"profile_image_shape": "Circle",
"profile_metadata": {
"profile_interstitial_type": ""
},
"profile_translation": {
"translator_type": "none"
},
"relationship_counts": {
"followers": 107626,
"following": 1149
},
"relationship_perspectives": {
"blocked_by": false,
"blocking": false,
"followed_by": false,
"following": false,
"live_following": false,
"muting": false
},
"rest_id": "1038266528",
"super_follow_eligible": false,
"super_followed_by": false,
"super_following": false,
"tipjar_settings": [],
"tweet_counts": {
"media_tweets": 631,
"tweets": 4662
},
"verification": {
"verified": false
},
"website": {
"url": "https://t.co/kJz0MfnWAk"
}
}
}
}
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.