EasyDown API Docs
Platform Video Downloader APIs

Twitter / X Video Downloader API

Use EasyDown's Twitter / X video downloader API for supported public URLs. Return downloadable video, images, audio, and sanitized platform data.

Both x.com and twitter.com status links enter the same REST workflow. Large status IDs stay strings and all returned media variants are preserved for backend selection.

Use it for X video downloader workflows or to download video from Twitter while accepting both x.com and twitter.com links.

Use this endpoint when you need platform-specific fields in addition to stable downloadable media.

Endpoints

POST https://api.easydown.org/api/v1/platforms/twitter/parse

Supported URL formats

  • x.com/{user}/status/{id}
  • twitter.com/{user}/status/{id}
  • x.com/i/status/{id}
  • x.com/u/{user}/{id}
  • Copied X status links with whitespace after /status

Accepted examples

  • https://x.com/i/status/2064933214720803143
  • https://x.com/Taozhishuishui/status/2041638397358260556/video/1
  • https://x.com/u/Dodger316/2070421188644347912
  • https://x.com/lindsavva69132/status /2091460944987816084/video/1

What the platform response contains

Video posts can return multiple bitrate and dimension variants. Image posts keep every post image; thumbnails are not substituted for full post media.

Published platform data fields

The API preserves additional public fields from the final target object after recursive sensitive-field filtering. The documented fields below remain stable for this platformDataVersion.

FieldTypeDescription
data.mediaobjectNormalized images, videos, audios, title, thumbnail, and duration.
data.platformDataVersionstringPublished data contract version for Twitter / X; currently 1.
data.platformData.id_strstringTweet or post identifier.
data.platformData.textstringPublic post text when exposed.
data.platformData.full_textstringExpanded public post text when exposed.
data.platformData.userobjectPublic author profile fields.
data.platformData.mediaobjectVideo variants and image objects attached to the post.
data.platformData.metricsobjectPublic engagement counters when exposed.

Real response example

Sample URL
https://x.com/Taozhishuishui/status/2041638397358260556/video/1
Endpoint
/api/v1/platforms/twitter/parse
Credits charged
1 credits
Cache
HIT
Captured
2026-09-17T05:08:19.613Z

Common normalized format

The common endpoint returns this same media object directly in `data`.

/api/v1/parse response
{
  "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"
}

Platform full-data format

The platform endpoint returns normalized media plus the sanitized platform data object.

/api/v1/platforms/twitter/parse
{
  "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"
}

Download and proxy guidance

Fetch selected media from your backend with Referer: https://x.com/ and a browser User-Agent. Forward Range for large files and re-parse if a selected variant expires.

Limits and behavior

Profiles, search pages, Spaces, Communities, Broadcast URLs, private posts, deleted posts, and direct CDN URLs are unsupported.

Only public content is supported. Private, deleted, age-restricted, region-restricted, live, or otherwise unavailable content can fail without a credit charge.

A successful Twitter / X parse costs 1 credit. Failed, unsupported, authentication, permission, no-media, and upstream failure responses charge 0 credits. X-Credits-Charged returns the actual credits charged for the successful response.

Troubleshooting

  • Submit a status URL containing one post ID.
  • Choose a videos[] variant by quality and dimensions instead of array position alone.
  • Re-parse the original status when a media variant stops responding.

Common questions

Does a failed request consume credits?

No. Credits are charged only after the API returns downloadable media.

The post can be deleted, private, region-restricted, live, missing media, or temporarily unavailable upstream.

Interactive API reference

The curl, JavaScript, and Python examples and schemas below are rendered from the production OpenAPI 3.1 contract.

The Try it panel sends requests directly to api.easydown.org. Its token is held in React memory only and disappears on reload.

POST

Try it

Successful responses with downloadable media are charged by platform. Failed requests are not charged.

The token stays only in this page memory and is cleared when the page is closed or reloaded.

Authorization

bearerAuth
AuthorizationBearer <token>

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"}