EasyDown API Docs
Platform Video Downloader APIs

YouTube Video Downloader API

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

Send one public YouTube URL to the shared REST endpoint. The response preserves every available video and audio candidate so your backend can choose a format instead of accepting a single preselected file.

Use it to add YouTube video downloader support while keeping one normalized media contract across your application.

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

Endpoints

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

Supported URL formats

  • youtube.com/watch?v={id}
  • youtube.com/shorts/{id}
  • youtube.com/live/{id}
  • youtu.be/{id}

Accepted examples

  • https://www.youtube.com/watch?v=BiBY6TeIvJ4
  • https://youtu.be/MEoxtFRfPoc
  • https://www.youtube.com/shorts/xzOtM0x3_LU

What the platform response contains

Videos can include progressive files and video-only streams. Separate audio candidates are returned in audios[]; high-quality DASH results may require FFmpeg merging after both streams are downloaded.

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 YouTube; currently 1.
data.platformData.videoDetailsobjectTitle, duration, channel, thumbnails, and public video metadata.
data.platformData.streamingDataobjectProgressive and adaptive audio/video renditions.
data.platformData.playabilityStatusobjectPublic playback availability state.
data.platformData.microformatobjectPublic page and embed metadata when available.
data.platformData.captionsobjectCaption track metadata when exposed.
{
  "status": 200,
  "data": {
    "media": {
      "platform": "youtube",
      "title": "Example public post",
      "thumbnail": "https://public-cdn.example/cover.jpg",
      "duration": 18,
      "images": [],
      "videos": [
        {
          "url": "https://public-cdn.example/video.mp4",
          "quality": "1080p",
          "mimeType": "video/mp4",
          "width": 1920,
          "height": 1080,
          "hasAudio": true,
          "source": "direct"
        }
      ],
      "audios": []
    },
    "platformData": {
      "videoDetails": {
        "videoId": "BiBY6TeIvJ4",
        "title": "Example public YouTube video",
        "lengthSeconds": "42",
        "channelId": "channel-id"
      },
      "streamingData": {
        "formats": [
          {
            "itag": 18,
            "mimeType": "video/mp4",
            "qualityLabel": "360p",
            "url": "https://media.example/video.mp4"
          }
        ],
        "adaptiveFormats": [
          {
            "itag": 140,
            "mimeType": "audio/mp4",
            "bitrate": 128000,
            "url": "https://media.example/audio.m4a"
          }
        ]
      },
      "playabilityStatus": {
        "status": "OK"
      }
    },
    "platformDataVersion": "1"
  },
  "msg": "success"
}

Download and proxy guidance

Fetch media from your backend with a browser User-Agent, Referer: https://www.youtube.com/, Origin: https://www.youtube.com, and forwarded Range headers. Some streams are tied to the parsing server IP or region.

Limits and behavior

Playlists, channels, community posts, private videos, members-only media, DRM-protected content, and region-unavailable videos are not supported.

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

A response is charged only after downloadable media is returned. Each successful parse costs 1 credit. Authentication, validation, permission, unavailable-content, no-media, and upstream failures are not charged.

Troubleshooting

  • Merge separate video and audio streams when a selected quality has no audio.
  • Re-parse the source URL when a signed stream expires or returns 403.
  • Use an accessible backend region for region-limited public media.

Common questions

Does a failed request consume credits?

No. A credit is 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

A successful response with downloadable media costs 1 credit. 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/youtube/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": {      "videoDetails": {},      "streamingData": {},      "playabilityStatus": {},      "microformat": {},      "captions": {}    },    "platformDataVersion": "1"  },  "msg": "success"}