Tweets by IDs
Up to 100 tweets by ID in one call.
/tweet/tweets/by/idsParameters
idsquery · string (comma-separated) · requiredNumeric tweet IDs separated by commas. At most 100.
Example request
curl 'https://api.twittrapi.com/tweet/tweets/by/ids?ids=2019881223666233717,20' \
--header 'X-API-KEY: YOUR_API_KEY'from twittrapi import TwittrAPI
client = TwittrAPI(api_key="YOUR_API_KEY")
data = client.tweets.get_many(["2019881223666233717", "20"])import { TwittrAPI } from "twittrapi";
const client = new TwittrAPI({ apiKey: process.env.TWITTRAPI_API_KEY });
const data = await client.tweets.getMany(["2019881223666233717", "20"]);curl 'https://twitter-aio.p.rapidapi.com/tweet/tweets/by/ids?ids=2019881223666233717,20' \
--header 'x-rapidapi-key: YOUR_RAPIDAPI_KEY' \
--header 'x-rapidapi-host: twitter-aio.p.rapidapi.com'Base URL https://api.twittrapi.com, key in the X-API-KEY header. Python and Node.js use the official SDKs.
Response
Raw JSON of X's TweetResultsByRestIds query (data.tweetResult, one entry per ID in request order). An ID without a tweet, for example a deleted one, is an empty object.
Simple format (?format=simple or X-Response-Format: simple): Collection of Tweet objects in request order, without cursors (hasNextPage false). IDs without a tweet are left out. Schema.
{
"data": {
"tweetResult": [
{
"result": {
"__typename": "Tweet",
"card": {
"legacy": {
"binding_values": [
{
"key": "photo_image_full_size_large",
"value": {
"image_value": {
"height": 419,
"url": "https://pbs.twimg.com/card_img/2107952823128182784/RyT0hE6P?format=jpg&name=800x419",
"width": 800
},
"type": "IMAGE"
}
},
{
"key": "thumbnail_image",
"value": {
"image_value": {
"height": 150,
"url": "https://pbs.twimg.com/card_img/2107952823128182784/RyT0hE6P?format=jpg&name=280x150",
"width": 218
},
"type": "IMAGE"
}
},
{
"key": "description",
"value": {
"string_value": "Use the X API with an all-new Developer Console and consumption-based billing. No fixed monthly costs, no monthly caps.",
"type": "STRING"
}
}
],
"card_platform": {
"platform": {
"audience": {
"name": "production"
},
"device": {
"name": "Swift",
"version": "12"
}
}
},
"name": "summary_large_image",
"url": "https://t.co/FS66GuIYJD",
"user_refs_results": []
},
"rest_id": "https://t.co/FS66GuIYJD"
},
"core": {
"user_results": {
"result": {
"__typename": "User",
"affiliates_highlighted_label": {
"label": {
"badge": {
"url": "https://pbs.twimg.com/profile_images/1955359038532653056/OSHY3ewP_bigger.jpg"
},
"description": "X",
"url": {
"url": "https://twitter.com/X",
"urlType": "DeepLink"
},
"userLabelDisplayType": "Badge",
"userLabelType": "BusinessLabel"
}
},
"has_graduated_access": true,
"id": "VXNlcjoyMjQ0OTk0OTQ1",
"is_blue_verified": true,
"legacy": {
"blocked_by": false,
"blocking": false,
"can_dm": true,
"can_media_tag": true,
"created_at": "Sat Dec 14 04:35:55 +0000 2013",
"default_profile": false,
"default_profile_image": false,
"description": "The voice of the X Dev team and your official source for updates, news, and events, related to the X API.",
"entities": {
"description": {},
"url": {
"urls": [
{
"display_url": "docs.x.com",
"expanded_url": "https://docs.x.com/",
"indices": [
0,
23
],
"url": "https://t.co/NIwHVIVyrN"
}
]
}
},
"fast_followers_count": 0,
"favourites_count": 2758,
"follow_request_sent": false,
"followed_by": false,
"followers_count": 698074,
"following": false,
"friends_count": 770,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 2977,
"location": "127.0.0.1",
"media_count": 832,
"muting": false,
"name": "Developers",
"needs_phone_verification": false,
"normal_followers_count": 698074,
"notifications": false,
"pinned_tweet_ids_str": [
"2019881223666233717"
],
"possibly_sensitive": false,
"profile_banner_url": "https://pbs.twimg.com/profile_banners/2244994945/1690213128",
"profile_image_url_https": "https://pbs.twimg.com/profile_images/1683501992314798080/xl1POYLw_normal.jpg",
"profile_interstitial_type": "",
"protected": false,
"screen_name": "XDevelopers",
"statuses_count": 4376,
"time_zone": "",
"translator_type": "regular",
"url": "https://t.co/NIwHVIVyrN",
"utc_offset": 0,
"verified": false,
"verified_type": "Business",
"want_retweets": false,
"withheld_description": "",
"withheld_scope": ""
},
"parody_commentary_fan_label": "None",
"professional": {
"category": [
{
"icon_name": "IconBriefcaseStroke",
"id": 1009,
"name": "Community"
}
],
"professional_type": "Business",
"rest_id": "1516891231749517312"
},
"profile_image_shape": "Square",
"rest_id": "2244994945",
"super_follow_eligible": false,
"super_followed_by": false,
"super_following": false,
"tipjar_settings": {}
}
}
},
"edit_control": {
"edit_tweet_ids": [
"2019881223666233717"
],
"editable_until_msecs": "1770415785000",
"edits_remaining": "5",
"is_edit_eligible": false
},
"grok_analysis_button": true,
"is_translatable": false,
"legacy": {
"bookmark_count": 2803,
"bookmarked": false,
"conversation_id_str": "2019881223666233717",
"created_at": "Fri Feb 06 21:09:45 +0000 2026",
"display_text_range": [
0,
261
],
"entities": {
"urls": [
{
"display_url": "developer.x.com",
"expanded_url": "http://developer.x.com",
"indices": [
238,
261
],
"url": "https://t.co/FS66GuIYJD"
}
]
},
"favorite_count": 5599,
"favorited": false,
"full_text": "Officially launching X API Pay-Per-Use\n\nThe core of X developers are indie builders, early stage products, startups, and hobbyists\n\nIt’s time to open up our X API ecosystem and instill a new wave of next generation X apps\n\nWe’re so back. https://t.co/FS66GuIYJD",
"id_str": "2019881223666233717",
"is_quote_status": false,
"lang": "en",
"possibly_sensitive": false,
"possibly_sensitive_editable": true,
"quote_count": 596,
"reply_count": 791,
"retweet_count": 896,
"retweeted": false,
"user_id_str": "2244994945"
},
"rest_id": "2019881223666233717",
"unmention_data": {},
"views": {
"count": "2552260",
"state": "EnabledWithCount"
}
}
},
{
"result": {
"__typename": "Tweet",
"core": {
"user_results": {
"result": {
"__typename": "User",
"action_counts": {
"favorites_count": 41052
},
"affiliates_highlighted_label": {
"label": {
"badge": {
"url": "https://pbs.twimg.com/profile_images/1285655593592791040/HtwPZgej_bigger.jpg"
},
"description": "Square",
"url": {
"url": "https://twitter.com/Square",
"urlType": "DeepLink"
},
"userLabelDisplayType": "Badge",
"userLabelType": "BusinessLabel"
}
},
"avatar": {
"image_url": "https://pbs.twimg.com/profile_images/1661201415899951105/azNjKOSH_normal.jpg"
},
"banner": {
"image_url": "https://pbs.twimg.com/profile_banners/12/1742427520"
},
"core": {
"created_at": "Tue Mar 21 20:50:14 +0000 2006",
"name": "jack",
"screen_name": "jack"
},
"follow_request_sent": false,
"has_graduated_access": true,
"id": "VXNlcjoxMg==",
"is_blue_verified": true,
"location": {
"location": ""
},
"media_permissions": {
"can_media_tag": true
},
"notifications_settings": {
"notifications_enabled": false
},
"parody_commentary_fan_label": "None",
"pinned_items": {
"tweet_ids_str": [
"1833951636005552366"
]
},
"possibly_sensitive": false,
"privacy": {
"protected": false
},
"profile_bio": {
"description": "no state is the best state",
"entities": {
"description": {},
"url": {
"urls": [
{
"display_url": "primal.net/jack",
"expanded_url": "http://primal.net/jack",
"indices": [
0,
23
],
"url": "https://t.co/ZEpOg6rn5L"
}
]
}
}
},
"profile_description_language": "en",
"profile_image_shape": "Circle",
"profile_metadata": {
"profile_interstitial_type": ""
},
"profile_translation": {
"translator_type": "regular"
},
"relationship_counts": {
"followers": 12546632,
"following": 3
},
"relationship_perspectives": {
"blocked_by": false,
"blocking": false,
"followed_by": false,
"following": false,
"live_following": false,
"muting": false
},
"rest_id": "12",
"super_follow_eligible": false,
"super_followed_by": false,
"super_following": false,
"tipjar_settings": {
"is_enabled": true
},
"tweet_counts": {
"media_tweets": 2976,
"tweets": 31105
},
"verification": {
"verified": false
},
"website": {
"url": "https://t.co/ZEpOg6rn5L"
}
}
}
},
"edit_control": {
"edit_tweet_ids": [
"20"
],
"editable_until_msecs": "1142976014000",
"edits_remaining": "5",
"is_edit_eligible": true
},
"grok_analysis_button": true,
"has_birdwatch_notes": true,
"is_translatable": false,
"legacy": {
"bookmark_count": 21970,
"bookmarked": false,
"conversation_id_str": "20",
"created_at": "Tue Mar 21 20:50:14 +0000 2006",
"display_text_range": [
0,
24
],
"entities": {},
"favorite_count": 309561,
"favorited": false,
"full_text": "just setting up my twttr",
"id_str": "20",
"is_quote_status": false,
"lang": "en",
"quote_count": 7349,
"reply_count": 18116,
"retweet_count": 124562,
"retweeted": false,
"user_id_str": "12"
},
"rest_id": "20",
"unmention_data": {},
"views": {
"state": "Enabled"
}
}
},
{}
]
}
}{
"data": [
{
"id": "2019881223666233717",
"url": "https://x.com/XDevelopers/status/2019881223666233717",
"text": "Officially launching X API Pay-Per-Use\n\nThe core of X developers are indie builders, early stage products, startups, and hobbyists\n\nIt’s time to open up our X API ecosystem and instill a new wave of next generation X apps\n\nWe’re so back. http://developer.x.com",
"createdAt": "2026-02-06T21:09:45Z",
"lang": "en",
"author": {
"id": "2244994945",
"username": "XDevelopers",
"name": "Developers",
"description": "The voice of the X Dev team and your official source for updates, news, and events, related to the X API.",
"location": "127.0.0.1",
"url": "https://docs.x.com/",
"createdAt": "2013-12-14T04:35:55Z",
"avatarUrl": "https://pbs.twimg.com/profile_images/1683501992314798080/xl1POYLw.jpg",
"bannerUrl": "https://pbs.twimg.com/profile_banners/2244994945/1690213128",
"verified": true,
"verifiedType": "Business",
"protected": false,
"counts": {
"followers": 698074,
"following": 770,
"tweets": 4376,
"likes": 2758,
"media": 832,
"listed": 2977
},
"pinnedTweetIds": [
"2019881223666233717"
],
"isAutomated": false
},
"counts": {
"likes": 5599,
"retweets": 896,
"replies": 791,
"quotes": 596,
"bookmarks": 2803,
"views": 2552260
},
"media": [],
"urls": [
"http://developer.x.com"
],
"hashtags": [],
"mentions": [],
"replyTo": null,
"quoted": null,
"retweetOf": null,
"conversationId": "2019881223666233717",
"isPinned": false,
"source": null,
"article": null
},
{
"id": "20",
"url": "https://x.com/jack/status/20",
"text": "just setting up my twttr",
"createdAt": "2006-03-21T20:50:14Z",
"lang": "en",
"author": {
"id": "12",
"username": "jack",
"name": "jack",
"description": "no state is the best state",
"location": "",
"url": "http://primal.net/jack",
"createdAt": "2006-03-21T20:50:14Z",
"avatarUrl": "https://pbs.twimg.com/profile_images/1661201415899951105/azNjKOSH.jpg",
"bannerUrl": "https://pbs.twimg.com/profile_banners/12/1742427520",
"verified": true,
"verifiedType": null,
"protected": false,
"counts": {
"followers": 12546632,
"following": 3,
"tweets": 31105,
"likes": 41052,
"media": 2976,
"listed": 0
},
"pinnedTweetIds": [
"1833951636005552366"
],
"isAutomated": false
},
"counts": {
"likes": 309561,
"retweets": 124562,
"replies": 18116,
"quotes": 7349,
"bookmarks": 21970,
"views": null
},
"media": [],
"urls": [],
"hashtags": [],
"mentions": [],
"replyTo": null,
"quoted": null,
"retweetOf": null,
"conversationId": "20",
"isPinned": false,
"source": null,
"article": null
}
],
"nextCursor": null,
"previousCursor": null,
"hasNextPage": false
}In the raw format, field names and nesting come from X and can change without notice. See Response format; the simple format keeps a fixed schema.
Errors
- 400ids is missing, or has more than 100 IDs.
- 422One of the IDs is not numeric.
Errors every endpoint can return (401, 402, 403, 404, 408, 409, 429, 5xx), and which of them are charged, are on the Errors page. Calls that fail with 400, 407, 408, 409 or a 5xx error are refunded.