TwitterAPIs Docs
API ReferenceTweet Details

Twitter Thread API | Reconstruct a Tweet Thread

Given the first tweet of a thread, return the ordered list of tweets that make up the author's connected thread. The endpoint reads forward from the tweet you pass and does not walk backwards, so pass the thread's first tweet, which is the conversation_id carried on every tweet in that thread. Passing a later tweet returns only the tail of the thread. Cost: $0.0040 per call.

Tweet Thread takes any tweet ID or URL inside a thread and returns the author's full connected thread as an ordered list of tweet objects. It saves you from manually walking the reply chain to rebuild a multi-part post. Each call is a $0.004 premium read (full thread expansion): the entire connected thread comes back in one response, with no pagination to manage.

GET
/tweet/thread

Authorization

bearerAuth
AuthorizationBearer <token>

Pass your API key as a bearer token on every request: Authorization: Bearer <API_KEY>.

In: header

Query Parameters

id?string

Numeric ID of any tweet in the thread. Provide either id or url.

url?string

Full status URL of any tweet in the thread. Provide either id or url.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/tweet/thread?id=1759123456789012345&url=https%3A%2F%2Fx.com%2Fnaval%2Fstatus%2F1759123456789012345"
{  "tweets": [    {      "id": "1759123456789012345",      "text": "1/ Here is how we made the API 100x cheaper.",      "author": {        "id": "745273",        "username": "naval"      }    },    {      "id": "1759123456789012346",      "text": "2/ It starts with batching ~20 tweets per call.",      "author": {        "id": "745273",        "username": "naval"      }    }  ],  "next_cursor": ""}
{  "error": "bad_request",  "message": "Missing or malformed parameter. Fix the request before retrying."}
{  "error": "unauthorized",  "message": "The API key is missing, malformed, or revoked. Check the Authorization header."}
{  "error": "insufficient_credits",  "message": "Your balance is exhausted. Top up your credits to continue."}
{  "error": "not_found",  "message": "The resource does not exist, for example a deleted tweet or a private account."}
{  "error": "rate_limited",  "message": "Too many requests. Back off and retry with exponential backoff."}
{  "error": "server_error",  "message": "Something failed on our side. Retry with backoff; if it persists, contact support."}

Pricing

UnitPrice
Per call$0.0040
Per 1,000 calls$4.00

Most threads return in one $0.004 call; only very long threads page, adding one call per page. Passing a mid-thread tweet still costs the full $0.004 while returning an incomplete thread, so resolve the conversation_id first.

When to use

Use it to capture a whole multi-tweet thread from one link, for example archiving a founder's 20-part launch thread. Resolve the link to its conversation_id first and pass that, or you will only get the tail of the thread.

FAQ

Do I need the first tweet of the thread?

Yes. The endpoint reads forward from the tweet you pass and does not walk back to the thread start, so a mid-thread tweet returns only that tweet and the ones after it. Every tweet carries conversation_id, which is the ID of the thread's first tweet: read it from Tweet Detail and pass that.

What counts as a thread here?

It is the author's own connected chain of tweets, not the replies from other accounts. Use Tweet Replies for those.

How are very long threads handled?

The whole thread is returned in a single call. There is no cursor and no second page, which is what the $0.004 premium buys.