Skip to main content
GET
Twitter batch tweet lookup API & post details

Choose exact batch lookup

Use this route for exact lookups of up to 100 tweet IDs. It preserves ID-based batching and charges only returned tweets. Use list-tweets when reading a list feed instead.
Requested result counts are upper bounds for paid authenticated calls. When remaining credits cannot cover the full page or ID list, Xquik returns fewer results. If zero paid results are affordable, it returns 402 insufficient_credits.
1 credit per tweet returned · Accepts account credits and guest paid_reads
The Node.js and Python snippets shape durable tweet rows instead of printing full response pages. Persist tweetRows or tweet_rows and missingIds or missing_ids with the original ID list so retries only request missing tweets.

Direct batch tweet handoff

Use GET /x/tweets when a CRM, warehouse, newsroom, moderation queue, or agent workflow already has tweet IDs and needs tweet text, authors, metrics, media URLs, and missing-ID handling in one response. Use Get Tweet when you need one tweet by ID, or Search Tweets when you need to find tweets by query. Store requested_ids, tweet_id, text, author_id, author_username, author_name, author_followers, author_verified, author_profile_picture, created_at, conversation_id, engagement counts, media URLs, has_next_page, and next_cursor. Join returned tweets by tweet_id instead of relying on response order. Send at most 100 IDs per request. Batch requests always return has_next_page: false and next_cursor: ""; zero affordable results return 402 insufficient_credits.

Store exact batch lookup results

Keep the original request order separately. Join returned tweets by numeric Tweet ID because unavailable or unaffordable IDs can be absent.

Query parameters

string
required
Comma-separated tweet IDs. Maximum 100 per request.

Headers

string
Full account API key. Session cookie and OAuth authentication are also supported.
string
Send Bearer xq_your_guest_key_here for an active paid_reads guest key.

Response

200 OK

object[]
Array of tweets matching the requested IDs. Tweet object fields.
string
Tweet ID.
string
Tweet text.
string
Tweet type. Omitted if unavailable.
string
ISO 8601 creation timestamp.
boolean
Whether this is a Note Tweet. Omitted if unavailable.
number
Like count. Omitted if unavailable.
number
Retweet count. Omitted if unavailable.
number
Reply count. Omitted if unavailable.
number
Quote tweet count. Omitted if unavailable.
number
View count. Omitted if unavailable.
number
Bookmark count. Omitted if unavailable.
string
Permalink URL on X. Omitted if unavailable.
string
Tweet language code. Omitted if unavailable.
boolean
Whether the tweet is a reply. Omitted if unavailable.
string
Tweet ID being replied to. Omitted if not a reply.
string
User ID being replied to. Omitted if unavailable.
string
Username being replied to. Omitted if unavailable.
string
Conversation thread ID. Omitted if unavailable.
string
Client used to post the tweet. Omitted if unavailable.
number[]
Start and end offsets for rendered tweet text. Omitted if unavailable.
boolean
Whether replies are limited. Omitted if unavailable.
boolean
Whether this tweet quotes another tweet. Omitted if unavailable.
object
Parsed entities. Omitted if unavailable.
object
Disclosure metadata for paid partnership and AI-generated media labels. Includes advertising.isPaidPromotion and aiGenerated.hasAiGeneratedMedia when X returns them. Omitted if unavailable.
object
Tweet author profile. Omitted if unavailable. Author object fields.
string
Author user ID.
string
Author handle without @.
string
Author display name. Omitted if unavailable.
number
Follower count. Omitted if unavailable.
boolean
Whether the author is verified. Omitted if unavailable.
string
Author profile image URL. Omitted if unavailable.
object[]
Media attachments. Omitted when the tweet has no media. Media object fields.
string
Direct media URL.
object[]
Available video renditions with bitrate, content type, and URL. Omitted for images.
string
Media type.
string
Shortened URL from the tweet text.
object
Embedded quoted tweet. Omitted if not a quote tweet.
object
Original retweeted tweet. Omitted if not a retweet.
boolean
Always false for batch requests.
string
Always empty for batch requests.

400 Missing IDs

400 Too many IDs

401 Unauthenticated

Anonymous requests get WWW-Authenticate: Bearer and a guest wallet checkout action. This is not a Payment challenge.

402 Payment required

Full account keys can receive no_subscription, subscription_inactive, no_credits, or insufficient_credits with account payment options. Guest keys receive only the guest top-up action. The failed request creates no checkout. Ask the user to confirm before calling any checkout or top-up route.

502 X API unavailable

The read service returned an error. Retry after a short delay.

429 Rate limit exceeded

Your tier rate limit was exceeded. Wait for the Retry-After header before retrying.

424 Dependency failed

The normalized v1 response contract can return 424 when the read service is unavailable.