Skip to main content
GET
X article API for long-form tweet & post content
5 credits per call · All plans from $0.00012/credit · Direct MPP: USD 0.00075 per call
Get X Article returns one long-form X Article by wrapper tweet ID. The endpoint is GET /api/v1/x/articles/{tweetId}.
The examples build article rows, not raw lookup dumps. Use GET /api/v1/x/articles/{tweetId} when a workflow needs one long-form post body plus article metadata. Store tweet_id, article_title, preview_text, author_id, author_username, author_name, author_profile_picture, created_at, cover_image_url, body_text, and body_markdown with the record you pass on. Store block_count, block_types, formatted_blocks, and media_urls when your archive, article index, or agent handoff needs block-level completeness and formatting checks.

Find candidate articles

Use this endpoint after you have the numeric wrapper tweet ID for an X Article. When a workflow starts from a mixed set of tweets, search first, store candidate tweet IDs, then try the article lookup once per candidate.

Search first

Use Search tweets to find candidate wrapper tweets by author, keyword, URL, or visible tweet text.

Article lookup

Call GET /api/v1/x/articles/{tweetId} with the candidate tweet ID when the workflow needs the long-form body.

Fallback route

If the response is article_not_found, store the terminal result and switch to Get tweet or Get tweet thread.

Saved export

Use article_extractor when the workflow needs an extraction job, estimate, or CSV, JSON, or XLSX export.

Direct article handoff

Use GET /api/v1/x/articles/{tweetId} when you have the numeric tweet ID for an X Article wrapper tweet and need the article body. Use the final status ID from an X Article URL. A normal tweet ID can be valid and still return 404 article_not_found when it is not an X Article.

Article row

Store article.title, previewText, coverImageUrl, createdAt, metrics, and a derived body_text field.

Body blocks

Store article.contents[] when you need headings, lists, quotes, media, dividers, code blocks, and inline styles.

Author joins

Store author.id, username, name, and profilePicture when returned.

Media assets

Store coverImageUrl and media-block url values for article archives and article review.

Not an article

article_not_found is final for that tweet ID. Ask for an X Article URL or use a tweet or thread endpoint.

Saved exports

Use article_extractor when you need a saved extraction job or CSV, JSON, or XLSX export.

Store an X article archive

Keep the wrapper Tweet ID, article fields, structured content blocks, author, cover image, and collection time. Keep article.contents[] when the archive must reconstruct headings, lists, quotes, media, dividers, or code. Direct article reads cost 5 credits per successful call. For MPP callers, Xquik bills this endpoint as a fixed charge at USD 0.00075 per call.

Path parameters

string
required
X Article post ID or URL-encoded post URL, such as x.com/nasa/status/20. See path IDs. A post without an Article returns article_not_found.

Which article endpoint?

X article body

Use GET /x/articles/{tweetId} for the title, body blocks, cover image, metrics, and author fields of one X Article.

Single tweet

Use Get tweet for one tweet’s text, media, author, and engagement metrics.

Tweet thread

Use Get tweet thread for conversation context around the article wrapper tweet.

Search tweets

Use Search tweets to discover candidate article tweets by keyword, URL, author, or other filters.

Saved exports

Use Create extraction with toolType=article_extractor when you need a saved job or CSV, JSON, or XLSX export.

Article-not-found handling

Do not retry the same ID after article_not_found. Switch to tweet lookup or ask for an X Article URL.

Headers

string
Full account key. Sessions and OAuth also work.
string
Bearer xq_your_guest_key_here authenticates paid_reads guest keys. Direct MPP uses the Payment ... credential. Get it from the WWW-Authenticate: Payment challenge.

Response

200 OK

object
The article data. Article object fields.
string
X’s ID for the article, which differs from its post’s ID.
string
Article title.
string
Short preview text of the article.
string
X’s summary of the article, when X has one.
string
Cover thumbnail image URL.
object
Public cover media metadata. X defines its fields.
object
Public article metadata. X defines its fields.
object
Public lifecycle metadata. X defines its fields.
string
Plain text joined from all article content blocks. Omitted if unavailable.
string
Article body as Markdown, built from the content blocks. Keeps headings, lists, bold, italic, links, images & embedded posts as their x.com URLs. Holds no HTML. Omitted if unavailable.
object[]
Article body as an array of content blocks. Content block fields.
string
Block type: paragraph, header-one, header-two, header-three, header-four, header-five, header-six, ordered-list-item, unordered-list-item, blockquote, code-block, markdown, media, tweet, or divider.
string
Text content for text-based blocks.
string
Media URL for media blocks.
string
Preview image URL for media blocks.
number
Image width in pixels.
number
Image height in pixels.
string
ID of the post a tweet block embeds.
Links in the block’s text. Each has the offset and length of the text it covers, and its url.
object[]
Inline text formatting. Style range fields.
number
Character offset where the style starts.
number
Number of characters the style spans.
string
X’s name for the style, such as Bold or Italic.
string
Article creation timestamp.
number
Like count.
number
Reply count.
number
Reposts of the Article’s post. 0 or more.
number
Quote tweet count.
number
Accounts that bookmarked the Article’s post. 0 or more.
number
View count.
object
The article author. Omitted if author data is unavailable. Author object fields.
string
Author user ID.
string
Author X username.
string
Author display name.
string
Profile picture URL. Omitted if unavailable.
string
Author bio. Omitted if unavailable.
string
Profile location. Omitted if unavailable.
string
Profile website URL. Omitted if unavailable.
string
Account creation timestamp. Omitted if unavailable.
number
Follower count. Omitted if unavailable.
number
Following count. Omitted if unavailable.
number
Posted tweet count. Omitted if unavailable.
number
Media post count. Omitted if unavailable.
number
Liked tweet count. Omitted if unavailable.
string
Profile banner URL. Omitted if unavailable.
boolean
Whether the account has X Premium verification. Omitted if unavailable.
boolean
Normalized verification status. Omitted if unavailable.
boolean
Whether the account is an X translator. Omitted if unavailable.
boolean
Whether the account protects its posts. Omitted if unavailable.

400 Invalid tweet ID

The provided tweet ID is empty or not a valid format.

401 Unauthenticated

Missing or invalid API key. Check the x-api-key header value.

402 Payment required

Account keys get account options. Guest keys get guest top-up only. Anonymous calls receive a direct MPP WWW-Authenticate: Payment challenge plus a guest wallet creation action. No checkout starts automatically. Confirm any payment action.

404 Article not found

The tweet is valid but does not contain an X Article.

502 X API unavailable

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

429 Rate limit exceeded

You exceeded your tier rate limit. 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.