Tweet detail loads one post by its id, plus the replies that came back with it. The text and the like count are not on the top of body.tweet. They are on body.tweet.legacy. The id you send is the tweet id, not a handle.
👉 To access this endpoint, you must obtain an API key: https://steadyapi.com/register
Authentication
Every call uses a Bearer token from your SteadyAPI dashboard.
Documentation:
https://docs.steadyapi.com/#authenticating-requests
headers = {
'Authorization': 'Bearer YOUR_API_KEY'
}
Where this fits
A profile call gives you a user, not a tweet id. User tweets (GET /v1/twitter/user/tweets) take user_id, which is rest_id from the profile, and the rows from that call are where a tweet id comes from. This endpoint reads one of those ids. The author’s screen name in the sample is elonmusk, which you can pass to GET /v1/twitter/user if you need the profile next.
Read a tweet
Endpoint: GET /v1/twitter/tweet/info
Documentation:
https://docs.steadyapi.com/#twitter-social-GETapi-v1-twitter-tweet-info
Parameters
id— required tweet id, max 255 characters (example:1349129669258448897)
The id is the only parameter. There is no count and no cursor. meta.tweet_id echoes what you sent. meta.reply_count is how many reply objects were placed in body.replies. It is not the public reply total on the tweet.
Python
import requests
url = "https://api.steadyapi.com/v1/twitter/tweet/info"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
response = requests.get(url, headers=headers, params={"id": "1349129669258448897"})
response.raise_for_status()
payload = response.json()
tweet = (payload.get("body") or {}).get("tweet") or {}
legacy = tweet.get("legacy") or {}
print(tweet.get("rest_id"))
print(legacy.get("full_text"))
print(legacy.get("favorite_count"), legacy.get("retweet_count"), legacy.get("reply_count"))
Annotated sample
{
"meta": {
"tweet_id": "1349129669258448897",
"reply_count": 35
},
"body": {
"tweet": {
"rest_id": "1349129669258448897",
"legacy": {
"full_text": "Hey you …\nYeah you Queen …\nYou’re gonna make it! 💕💕 https://t.co/LrqdIrbIyd",
"favorite_count": 522731,
"retweet_count": 97424,
"reply_count": 12932
}
}
}
}
Store rest_id and legacy.full_text. Likes are favorite_count. The public reply total in this sample is legacy.reply_count (12932). meta.reply_count is 35, the replies included in body.replies. The author on this tweet has rest_id 44196397 and screen_name elonmusk, nested under the user object on the tweet, not as top-level fields.
Practical use
Check that body.tweet is present before you read legacy. A bad id does not mean those keys exist.
The text contains newlines and an emoji. Store it as a string. Do not split on whitespace and expect one sentence.
The payload is large. Persist rest_id, full_text, and the three counts. You do not need the media size arrays unless you are showing the image.
👉 Get your API key and read a tweet: https://steadyapi.com/register