image

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

How to Get an NHL Roster Using SteadyAPI Oct 12, 2026

How to Get an NHL Roster Using SteadyAPI

Load forwards, defensemen, and goalies for one NHL abbreviation. Player names are objects with a default field.

How to Get an AliExpress Description Using SteadyAPI Oct 12, 2026

How to Get an AliExpress Description Using SteadyAPI

Turn a product-detail description token into ordered text modules. The product id alone is not enough.

How to Find Vehicles for Sale Using SteadyAPI Oct 11, 2026

How to Find Vehicles for Sale Using SteadyAPI

Search vehicle listings by make, model, and ZIP. Price and mileage on each row are numbers.

How to Track Amazon New Releases Using SteadyAPI Oct 10, 2026

How to Track Amazon New Releases Using SteadyAPI

Pull one category’s new-release ranking. Store each row’s ASIN, rank, and price string.