Twitter / X 動画ダウンロード API
Twitter / Xの対応する公開URLを解析し、ダウンロード可能な動画・画像・音声と、機密項目を除去したプラットフォームデータを取得します。URL形式、レスポンス項目、エラー、実装例を掲載しています。
x.com と twitter.com の status URL を同じ REST フローで処理し、大きな投稿 ID は文字列のまま、全メディア候補を保持します。
x.comとtwitter.comの両方を受け付けるX / Twitter動画ダウンロード機能の実装に適しています。
安定したダウンロードメディアに加えてプラットフォーム固有項目が必要な場合に使用します。
エンドポイント
POST https://api.easydown.org/api/v1/platforms/twitter/parse
対応URL形式
x.com/{user}/status/{id}twitter.com/{user}/status/{id}x.com/i/status/{id}x.com/u/{user}/{id}/status の後に空白が入ったコピー済みX投稿URL
利用可能な例
https://x.com/i/status/2064933214720803143https://x.com/Taozhishuishui/status/2041638397358260556/video/1https://x.com/u/Dodger316/2070421188644347912https://x.com/lindsavva69132/status /2091460944987816084/video/1
このプラットフォームのレスポンス内容
動画投稿では複数ビットレート・サイズを返し、画像投稿ではすべての投稿画像を保持してサムネイルで代用しません。
公開済みプラットフォームデータ項目
対象投稿の最終レスポンスに含まれるその他の公開項目も、機密情報を再帰的に除去したうえで保持します。以下の項目は現在の platformDataVersion 内で安定しています。
| 項目 | 型 | 説明 |
|---|---|---|
data.media | object | 正規化された画像、動画、音声、タイトル、サムネイル、再生時間。 |
data.platformDataVersion | string | Twitter / Xの公開データ契約バージョン。現在は1です。 |
data.platformData.id_str | string | 対象投稿の公開識別子です。大きな数値の精度を失わないよう文字列として保存します。 |
data.platformData.text | string | 対象投稿に公開表示されるタイトル、本文、説明です。 |
data.platformData.full_text | string | 対象投稿に公開表示されるタイトル、本文、説明です。 |
data.platformData.user | object | 対象投稿の投稿者に関する公開プロフィール項目です。連絡先や認証情報は含みません。 |
data.platformData.media | object | 再生状態、形式、その他の公開メタデータです。 |
data.platformData.metrics | object | 再生、いいね、コメント、保存、共有など公開されているエンゲージメント指標です。 |
実レスポンス例
- サンプルURL
- https://x.com/Taozhishuishui/status/2041638397358260556/video/1
- Endpoint
- /api/v1/platforms/twitter/parse
- 消費 credits
- 1 credits
- Cache
- HIT
- 取得日時
- 2026-09-17T05:08:19.613Z
共通の正規化形式
共通エンドポイントでは、このメディアオブジェクトがそのまま `data` に入ります。
{
"status": 200,
"data": {
"platform": "twitter",
"title": "【NSFW原创】【阳具调教】【性沦陷教学】 【@XPeach_Lord教学】【桃门】\n想必大家也都挺好奇如何达到是17次/8min的高潮的效果的,本期就是前戏过程。\n可以见到从开始的勉强纳入,到第5分钟失控,就这样渐进调教,视频结束时A点失守后逐渐沦陷。\n(上篇) https://t.co/SsH6GObNbz",
"thumbnail": "https://pbs.twimg.com/amplify_video_thumb/2041600872153804803/img/DGcrmhdZesdS8hse.jpg",
"duration": 0,
"images": [],
"videos": [
{
"url": "https://video.twimg.com/amplify_video/2041600872153804803/vid/avc1/320x568/iITUUBeBrCGVEG0l.mp4?tag=21",
"quality": "632kbps",
"mimeType": "video/mp4",
"width": 0,
"height": 0,
"hasAudio": true,
"source": "direct",
"headers": {}
},
{
"url": "https://video.twimg.com/amplify_video/2041600872153804803/vid/avc1/480x852/VIhohHzSf7ArG6lz.mp4?tag=21",
"quality": "950kbps",
"mimeType": "video/mp4",
"width": 0,
"height": 0,
"hasAudio": true,
"source": "direct",
"headers": {}
},
{
"url": "https://video.twimg.com/amplify_video/2041600872153804803/vid/avc1/720x1280/gBsBLXqQxHI3BGZP.mp4?tag=21",
"quality": "2176kbps",
"mimeType": "video/mp4",
"width": 0,
"height": 0,
"hasAudio": true,
"source": "direct",
"headers": {}
}
],
"audios": []
},
"msg": "success"
}プラットフォーム完全データ形式
プラットフォーム別エンドポイントでは、正規化メディアとサニタイズ済みプラットフォームデータを返します。
{
"status": 200,
"data": {
"media": {
"platform": "twitter",
"title": "【NSFW原创】【阳具调教】【性沦陷教学】 【@XPeach_Lord教学】【桃门】\n想必大家也都挺好奇如何达到是17次/8min的高潮的效果的,本期就是前戏过程。\n可以见到从开始的勉强纳入,到第5分钟失控,就这样渐进调教,视频结束时A点失守后逐渐沦陷。\n(上篇) https://t.co/SsH6GObNbz",
"thumbnail": "https://pbs.twimg.com/amplify_video_thumb/2041600872153804803/img/DGcrmhdZesdS8hse.jpg",
"duration": 0,
"images": [],
"videos": [
{
"url": "https://video.twimg.com/amplify_video/2041600872153804803/vid/avc1/320x568/iITUUBeBrCGVEG0l.mp4?tag=21",
"quality": "632kbps",
"mimeType": "video/mp4",
"width": 0,
"height": 0,
"hasAudio": true,
"source": "direct",
"headers": {}
},
{
"url": "https://video.twimg.com/amplify_video/2041600872153804803/vid/avc1/480x852/VIhohHzSf7ArG6lz.mp4?tag=21",
"quality": "950kbps",
"mimeType": "video/mp4",
"width": 0,
"height": 0,
"hasAudio": true,
"source": "direct",
"headers": {}
},
{
"url": "https://video.twimg.com/amplify_video/2041600872153804803/vid/avc1/720x1280/gBsBLXqQxHI3BGZP.mp4?tag=21",
"quality": "2176kbps",
"mimeType": "video/mp4",
"width": 0,
"height": 0,
"hasAudio": true,
"source": "direct",
"headers": {}
}
],
"audios": []
},
"platformData": {
"likes": 54553,
"created_at": "Tue Apr 07 22:05:00 +0000 2026",
"status": "active",
"text": "【NSFW原创】【阳具调教】【性沦陷教学】 【@XPeach_Lord教学】【桃门】\n想必大家也都挺好奇如何达到是17次/8min的高潮的效果的,本期就是前戏过程。\n可以见到从开始的勉强纳入,到第5分钟失控,就这样渐进调教,视频结束时A点失守后逐渐沦陷。\n(上篇) https://t.co/SsH6GObNbz",
"display_text": "【NSFW原创】【阳具调教】【性沦陷教学】 【@XPeach_Lord教学】【桃门】\n想必大家也都挺好奇如何达到是17次/8min的高潮的效果的,本期就是前戏过程。\n可以见到从开始的勉强纳入,到第5分钟失控,就这样渐进调教,视频结束时A点失守后逐渐沦陷。\n(上篇)",
"retweets": 3183,
"bookmarks": 23572,
"quotes": 30,
"reply_to": null,
"replies": 197,
"lang": "zh",
"in_reply_to_screen_name": null,
"in_reply_to_status_id_str": null,
"in_reply_to_user_id_str": null,
"sensitive": true,
"views": "2957748",
"conversation_id": "2041638397358260556",
"entities": {
"media": [
{
"additional_media_info": {
"monetizable": false
},
"display_url": "pic.x.com/SsH6GObNbz",
"expanded_url": "https://x.com/Taozhishuishui/status/2041638397358260556/video/1",
"ext_media_availability": {
"status": "Available"
},
"id_str": "2041600872153804803",
"indices": [
133,
156
],
"media_key": "13_2041600872153804803",
"media_results": {
"result": {
"media_key": "13_2041600872153804803"
}
},
"media_url_https": "https://pbs.twimg.com/amplify_video_thumb/2041600872153804803/img/DGcrmhdZesdS8hse.jpg",
"original_info": {
"focus_rects": [],
"height": 1280,
"width": 720
},
"sizes": {
"large": {
"h": 1280,
"resize": "fit",
"w": 720
},
"medium": {
"h": 1200,
"resize": "fit",
"w": 675
},
"small": {
"h": 680,
"resize": "fit",
"w": 383
},
"thumb": {
"h": 150,
"resize": "crop",
"w": 150
}
},
"type": "video",
"url": "https://t.co/SsH6GObNbz",
"video_info": {
"aspect_ratio": [
9,
16
],
"duration_millis": 474918,
"variants": [
{
"content_type": "application/x-mpegURL",
"url": "https://video.twimg.com/amplify_video/2041600872153804803/pl/UJcuKrOyPlFXE_KS.m3u8?tag=21"
},
{
"bitrate": 632000,
"content_type": "video/mp4",
"url": "https://video.twimg.com/amplify_video/2041600872153804803/vid/avc1/320x568/iITUUBeBrCGVEG0l.mp4?tag=21"
},
{
"bitrate": 950000,
"content_type": "video/mp4",
"url": "https://video.twimg.com/amplify_video/2041600872153804803/vid/avc1/480x852/VIhohHzSf7ArG6lz.mp4?tag=21"
},
{
"bitrate": 2176000,
"content_type": "video/mp4",
"url": "https://video.twimg.com/amplify_video/2041600872153804803/vid/avc1/720x1280/gBsBLXqQxHI3BGZP.mp4?tag=21"
}
]
}
}
],
"user_mentions": [
{
"id_str": "1434021907909599238",
"indices": [
23,
35
],
"name": "桃桃大王(大号)",
"screen_name": "XPeach_Lord"
}
],
"hashtags": [],
"symbols": [],
"timestamps": [],
"urls": []
},
"conversation_control": {
"policy": null
},
"initial_tweets": null,
"author": {
"rest_id": "3145035893",
"name": "桃汁水水",
"screen_name": "Taozhishuishui",
"image": "https://pbs.twimg.com/profile_images/1986486933443469312/fKhObBUD_normal.jpg",
"blue_verified": true,
"verification": null,
"sub_count": 348228
},
"media": {
"video": [
{
"media_url_https": "https://pbs.twimg.com/amplify_video_thumb/2041600872153804803/img/DGcrmhdZesdS8hse.jpg",
"variants": [
{
"content_type": "application/x-mpegURL",
"url": "https://video.twimg.com/amplify_video/2041600872153804803/pl/UJcuKrOyPlFXE_KS.m3u8?tag=21"
},
{
"bitrate": 632000,
"content_type": "video/mp4",
"url": "https://video.twimg.com/amplify_video/2041600872153804803/vid/avc1/320x568/iITUUBeBrCGVEG0l.mp4?tag=21"
},
{
"bitrate": 950000,
"content_type": "video/mp4",
"url": "https://video.twimg.com/amplify_video/2041600872153804803/vid/avc1/480x852/VIhohHzSf7ArG6lz.mp4?tag=21"
},
{
"bitrate": 2176000,
"content_type": "video/mp4",
"url": "https://video.twimg.com/amplify_video/2041600872153804803/vid/avc1/720x1280/gBsBLXqQxHI3BGZP.mp4?tag=21"
}
],
"aspect_ratio": [
9,
16
],
"duration": 474918,
"original_info": {
"focus_rects": [],
"height": 1280,
"width": 720
},
"id": "2041600872153804803"
}
]
},
"id": "2041638397358260556"
},
"platformDataVersion": "1"
},
"msg": "success"
}ダウンロードとプロキシの注意点
X Referer とブラウザー User-Agent を付け、Range を転送してバックエンド取得します。選択 URL が期限切れなら再解析します。
制限と動作
プロフィール、検索、Spaces、コミュニティ、Broadcast、非公開・削除済み投稿、CDN 直 URL には対応しません。
公開コンテンツのみ対象です。非公開、削除済み、年齢・地域制限、ライブ配信、その他利用できないコンテンツは解析に失敗する場合があります。失敗時にクレジットは消費されません。
Twitter / X の成功解析は 1 credits です。失敗、非対応、認証失敗、権限エラー、メディアなし、外部サービス障害のレスポンスは 0 credits です。 X-Credits-Charged は成功レスポンスで実際に消費した credits を返します。
トラブルシューティング
- 一つの投稿 ID を含む status URL を送信します。
- 配列位置だけでなく画質とサイズで videos[] を選択します。
- メディアが無効になったら元 status を再解析します。
よくある質問
失敗したリクエストは課金されますか?
いいえ。ダウンロード可能なメディアを返した場合のみ、プラットフォーム別 credits を消費します。
正しい公開URLでも失敗するのはなぜですか?
投稿が削除済み、非公開、地域制限、ライブ、メディアなし、または外部サービスが一時的に利用できない可能性があります。
関連ガイド
対話型APIリファレンス
以下のcurl、JavaScript、Pythonの例とスキーマは、本番環境のOpenAPI 3.1契約から生成されます。
「Try it」パネルはapi.easydown.orgへ直接リクエストします。トークンはページのメモリだけに保持され、再読み込みすると消去されます。
試してみる
Authorization
bearerAuth In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/platforms/twitter/parse" \ -H "Content-Type: application/json" \ -d '{}'{ "status": 200, "data": { "media": { "platform": "tiktok", "title": "string", "thumbnail": "string", "duration": 0, "images": [ { "url": "http://example.com", "width": 0, "height": 0 } ], "videos": [ { "url": "http://example.com", "quality": "string", "mimeType": "string", "width": 0, "height": 0, "hasAudio": true, "source": "direct", "headers": { "property1": "string", "property2": "string" } } ], "audios": [ { "url": "http://example.com", "quality": "string", "mimeType": "string", "bitrate": 0, "source": "direct", "headers": { "property1": "string", "property2": "string" } } ] }, "platformData": { "id_str": "string", "text": "string", "full_text": "string", "user": {}, "media": {}, "metrics": {} }, "platformDataVersion": "1" }, "msg": "success"}