youtube-download-api

Youtube Download API: Download audio and video from YouTube. On the JoJ API marketplace.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
90%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~893Tokens (tool definitions)
~4.0 KBTypical response size
Moderate attention impact (0.70% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "youtube-download-api": {
      "url": "https://mcp.jojapi.com/youtube-download-api"
    }
  }
}

Remote endpoints

https://mcp.jojapi.com/youtube-download-apistreamable-http

What it can do

Tool inventory

Tools (2)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢get_ajax_download_php(format, url, apikey, add_info, audio_quality, ...)

Submits a new download job for the given `url` in the requested `format`. Returns a unique `id` you can pass to the Progress endpoint to poll for completion and retrieve the final download URL. Billing per call: 1 Credits.

Input Schema

{
  "type": "object",
  "properties": {
    "format": {
      "type": "string",
      "title": "format",
      "description": "The output format to download. Accepted values: `mp3`, `m4a`,\n`webm_audio`, `aac`, `flac`, `opus`, `ogg`, `wav`, `144`,\n`240`, `360`, `480`, `720`, `1080`, `1440`, `4k`, `8k`.\n\nAudio formats have a 120-minute base duration limit; video formats\nhave format-specific limits (1080p=90m, 1440p=60m, 4k/8k=15m,\neverything else=120m)."
    },
    "url": {
      "type": "string",
      "title": "url",
      "description": "The URL-encoded URL of the video to download (YouTube and other supported sources)."
    },
    "apikey": {
      "type": "string",
      "title": "apikey",
      "description": "Your personal API key."
    },
    "add_info": {
      "type": "string",
      "title": "add_info",
      "description": "Set to `1` to include the `info` object (title + thumbnail) in the response. Defaults to `0` when omitted."
    },
    "audio_quality": {
      "type": "string",
      "title": "audio_quality",
      "description": "Audio bitrate in kbps. Common values include `128`, `192`, `256`, `320`."
    },
    "allow_extended_duration": {
      "type": "string",
      "title": "allow_extended_duration",
      "description": "Set to `1` to permit downloads whose video duration exceeds the format's\nbase duration limit. Extended-duration jobs are charged a multiplier of\nthe base price (see the `ExtendedDuration` response object). Defaults to\n`0` when omitted."
    },
    "no_merge": {
      "type": "string",
      "title": "no_merge",
      "description": "If set to `1`, audio and video streams are **not** merged. The client\nreceives a zip file containing the separate streams. Defaults to `0`\n(streams are merged into a single file)."
    },
    "audio_language": {
      "type": "string",
      "title": "audio_language",
      "description": "YouTube only. Selects the audio track language by BCP-47 / YouTube\nlanguage code. If the requested track is not available on the video,\nthe default track is used instead. No additional cost.\n\nSupported codes: `af, az, id, ms, bs, ca, cs, da, de, et, en-IN, en-GB,\nen, es, es-419, es-US, eu, fil, fr, fr-CA, gl, hr, zu, is, it, sw, lv,\nlt, hu, nl, no, uz, pl, pt-PT, pt, ro, sq, sk, sl, sr-Latn, fi, sv, vi,\ntr, be, bg, ky, kk, mk, mn, ru, sr, uk, el, hy, iw, ur, ar, fa, ne, mr,\nhi, as, bn, pa, gu,…"
    },
    "start_time": {
      "type": "string",
      "title": "start_time",
      "description": "Optional. Start time (in seconds) of a cut/segment download. When\n`start_time`/`end_time` are supplied, progress is not reported — the\nProgress endpoint only returns initialization and the final success /\nfailure status."
    },
    "end_time": {
      "type": "string",
      "title": "end_time",
      "description": "Optional. End time (in seconds) of a cut/segment download."
    }
  },
  "additionalProperties": false
}
🟢get_ajax_progress(id)

Polls the status of a previously-submitted download job. Keep polling until `progress == 1000` (i.e. 100%) and `download_url` is populated. Billing per call: 1 Credits.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "title": "id",
      "example": "YOUR_JOB_ID",
      "description": "The job id returned by the Download endpoint."
    }
  },
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded2 tools
verifiedversion not recorded2 tools