Get Tweet by ID API | Twitter Tweet Lookup
Resolve a tweet ID into its complete object, including author, engagement counts, attached media, and any quoted tweet. The starting point for any single-tweet workflow. Cost: $0.0008 per call.
Tweet Detail resolves a tweet ID or status URL into its complete object: author, full text, created_at, attached media, any quoted tweet, and live engagement counts (likes, retweets, replies, quotes, bookmarks, views). It is a single $0.0008 read with bearer auth, the starting point for any single-tweet workflow.
Authorization
bearerAuth Pass your API key as a bearer token on every request: Authorization: Bearer <API_KEY>.
In: header
Query Parameters
Numeric ID of the tweet to fetch. Provide either id or url.
Full status URL of the tweet, for example https://x.com/naval/status/1759123456789012345. Provide either id or url.
Comma-separated list of dotted field paths to keep in the response (one parameter, never repeated), applied to every object in the returned lists and to nested objects (for example fields=id,text,author.username; the list's own name may prefix a path, fields=tweets.id). A path prefix that lands on an array applies to each element (media.media_url_https). Pagination and envelope keys (next_cursor, cursor, has_more, count, partial, error, message, reason) are always kept. Unknown paths are ignored; up to 50 paths of up to 6 segments. Projection never changes status codes or billing, and applies to data reads only: account, feedback, session status, monitor (other than deliveries), webhook and stream-compat reads return their bodies unchanged.
Set to 1 (or true) to apply the built-in compact preset: ids, url, text, created_at, lang, the engagement counts, the is_retweet/is_reply/is_quote flags, conversation ids, the author's id/username/name/followers_count/verification, and the quoted or retweeted tweet's id/url/author username. The preset trims what it recognises and leaves alone what it would empty, so it never turns a body into {}. Combine with fields to add paths on top of the preset. Typically cuts a tweet page by 70 to 90 percent for LLM tool callers.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/tweet/detail?id=1759123456789012345&url=https%3A%2F%2Fx.com%2Fnaval%2Fstatus%2F1759123456789012345&fields=id%2Ctext%2Ccreated_at%2Cauthor.username&compact=1"{ "id": "1759123456789012345", "tweet": { "id": "1759123456789012345", "text": "Shipping the new docs today.", "created_at": "Tue Feb 20 14:02:11 +0000 2026", "author": { "id": "745273", "username": "naval", "name": "Naval" }, "favorite_count": 4821, "retweet_count": 612, "reply_count": 88, "quote_count": 14, "bookmark_count": 203, "view_count": 219340 }}{ "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.", "top_up_url": "https://www.twitterapis.com/dashboard/buy-credits?utm_source=api&utm_medium=402"}{ "error": "forbidden", "message": "X refused this resource for the acting account: on a read, the account is not a participant in the DM thread, the target is protected or has blocked it, or the session was attestation-blocked for calling from a datacenter or rotating IP; on a write, the account is not authorized for the action or has no logged-in session. The credentials are still valid, so do not re-register."}{ "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
| Unit | Price |
|---|---|
| Per call | $0.0008 |
| Per 1,000 calls | $0.80 |
When to use
Use it to hydrate one tweet you already have an ID or URL for, for example enriching a stored tweet with current engagement counts.
Related endpoints
- Tweet Replies: Page through the replies to a tweet.
- Tweet Thread: Reconstruct a thread forward from its first tweet.
- Tweet Retweeters: List the users who retweeted a tweet.
- Tweet Quotes: Page through the tweets that quote a tweet.
FAQ
Can I look up a tweet by URL instead of ID?
Yes. Pass either id or url. The url accepts a full x.com status link, for example https://x.com/naval/status/1759123456789012345.
Does Tweet Detail return media and quoted tweets?
Yes. The resolved tweet object includes attached media and any quoted tweet, alongside the live engagement counts.
How much does one tweet lookup cost?
It is a single $0.0008 read. Resolving one tweet is one billed call, not a paginated sweep.
Overview
Tweet Details: Resolve a single tweet into its full object: replies, retweeters, and the complete conversation thread.
Tweet Replies GET
Fetch the direct replies to a given tweet, cursor-paginated. Combine with Tweet Detail to reconstruct a discussion or measure reply sentiment. Cost: $0.0008 per call.