Articles
Get Article
Fetch full Twitter/X article and note content by wrapper tweet ID (public) or by article entity ID (owner-only). $0.001 per call.
GET
/twitter/article/getThis endpoint costs $0.001 per API call.
Query Parameters
Provide one of the two lookups below:
By wrapper tweet ID (public read)
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Tweet ID that wraps the article (e.g. from x.com/<user>/status/<id>) |
By article entity ID (owner-only read)
| Parameter | Type | Required | Description |
|---|---|---|---|
article_id | string | Yes | The article's entity rest_id (as returned by /article/list or /article/create) |
auth_token | string | Yes | Required when using article_id. The article entity lookup is owner-scoped — returns no data for non-owners |
proxy | string | No | Caller-supplied proxy URL (http, https, socks5, socks4) |
Notes
- Both paths return the same response shape — your client doesn't need to branch.
- For
id(wrapper tweet ID), the tweet must be an article tweet (e.g.x.com/i/article/...). Regular tweets return 404. - For
article_idlookups, the auth_token must own the article entity. Returns 404 withArticle not found or not owned by callerotherwise. - Owner-only lookups (
article_idpath) include two extra fields in the response:tweet_id(null for drafts) andlifecycle("Draft"or"Published"). contentsis an array of rich text blocks with types:unstyled,header-two,header-three,image(withurl,width,height),divider,blockquote,ordered-list-item,unordered-list-item.- Text blocks may include
inlineStyleRangesfor formatting (Bold,Italic).
Response (200)
{
"status": "success",
"msg": "success",
"article": {
"id": "QXJ0aWNsZUVudGl0eToxOTA1NTQxMTM5MTQ0Mjk4NDk4",
"author": {
"type": "user",
"userName": "Decentralisedco",
"url": "https://x.com/Decentralisedco",
"twitterUrl": "https://twitter.com/Decentralisedco",
"id": "1764631141926002689",
"name": "DCo",
"isVerified": false,
"isBlueVerified": true,
"verifiedType": null,
"profilePicture": "https://pbs.twimg.com/profile_images/..._normal.jpg",
"coverPicture": "https://pbs.twimg.com/profile_banners/...",
"description": "Investments and Research.",
"location": "Subscribe →",
"followers": 13657,
"following": 325,
"canDm": true,
"createdAt": "Mon Mar 04 12:37:18 +0000 2024",
"favouritesCount": 1620,
"statusesCount": 1053,
"mediaCount": 487,
"pinnedTweetIds": ["2029569587029934133"]
},
"replyCount": 16,
"likeCount": 160,
"quoteCount": 8,
"viewCount": 44300,
"createdAt": "Fri Mar 28 09:01:12 +0000 2025",
"title": "When Tokens Burn",
"preview_text": "Breaking down how crypto protocols approach revenue and cash flow...",
"cover_media_img_url": "https://pbs.twimg.com/media/GnHXrznXUAEs-v5.jpg",
"contents": [
{
"type": "unstyled",
"text": "Breaking down how crypto protocols approach revenue and cash flow",
"inlineStyleRanges": [{ "length": 65, "offset": 0, "style": "Italic" }]
},
{ "type": "header-two", "text": "The Zero-Sum Attention Game" },
{
"type": "unstyled",
"text": "In 2021, each crypto asset had, on average, ~$1.8M in stablecoin liquidity..."
},
{
"type": "image",
"url": "https://pbs.twimg.com/media/GnHZB47WwAAb6hU.png",
"width": 2040,
"height": 1372
},
{ "type": "divider" },
{ "type": "blockquote", "text": "One key insight here is..." },
{
"type": "ordered-list-item",
"text": "First point",
"inlineStyleRanges": [{ "length": 5, "offset": 0, "style": "Bold" }]
}
]
}
}Error Responses
400 - Missing or invalid parameters
{
"error": "Missing required query param. Provide either `id` (wrapper tweet ID, public) or `article_id` (article entity rest_id, owner-only — also requires `auth_token`)."
}{
"error": "`article_id` requires `auth_token` (owner-only read). Use `id` (wrapper tweet ID) for public lookups."
}404 - Not an article tweet / not owned
{
"error": "No article found for tweet: 2019264360682778716"
}{
"error": "Article not found or not owned by caller: 2055606612363202560"
}Examples
Public read — by wrapper tweet ID
curl -X GET "https://api.getxapi.com/twitter/article/get?id=1905545699552375179" \
-H "Authorization: Bearer API_KEY"const response = await fetch(
"https://api.getxapi.com/twitter/article/get?id=1905545699552375179",
{
headers: {
Authorization: "Bearer API_KEY",
},
}
);
const data = await response.json();
console.log(data.article);import requests
response = requests.get(
"https://api.getxapi.com/twitter/article/get",
headers={"Authorization": "Bearer API_KEY"},
params={"id": "1905545699552375179"},
)
print(response.json()["article"])Owner-only read — by article entity ID
curl -X GET "https://api.getxapi.com/twitter/article/get?article_id=2055606612363202560&auth_token=YOUR_AUTH_TOKEN" \
-H "Authorization: Bearer API_KEY"const response = await fetch(
"https://api.getxapi.com/twitter/article/get?article_id=2055606612363202560&auth_token=YOUR_AUTH_TOKEN",
{
headers: {
Authorization: "Bearer API_KEY",
},
}
);
const data = await response.json();
console.log(data.article.lifecycle, data.article.tweet_id);import requests
response = requests.get(
"https://api.getxapi.com/twitter/article/get",
headers={"Authorization": "Bearer API_KEY"},
params={
"article_id": "2055606612363202560",
"auth_token": "YOUR_AUTH_TOKEN",
},
)
article = response.json()["article"]
print(article["lifecycle"], article["tweet_id"])UnBookmarkNew
Remove a tweet from your bookmarks programmatically via API. $0.001 per call. GetXAPI unbookmark tweet endpoint documentation.
Create ArticleNew
Create (and optionally publish) long-form Twitter/X articles in one call. $0.01 per call. Premium-only when publishing. GetXAPI article endpoint.