{"openapi":"3.2.0","info":{"title":"Youtube Download API API","description":"Download audio and video from YouTube","version":"1.0.0"},"servers":[{"url":"https://sjxcq.jojapi.net"}],"security":[{"ApiKeyAuth":[]}],"paths":{"/ajax/download.php":{"get":{"operationId":"get_ajax_download_php","summary":"Create a download job","description":"Submits a new download job for the given `url` in the requested `format`.\nReturns a unique `id` you can pass to the Progress endpoint to poll for\ncompletion and retrieve the final download URL.","parameters":[{"name":"format","in":"query","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).","required":false,"schema":{"type":"string","title":"format"}},{"name":"url","in":"query","description":"The URL-encoded URL of the video to download (YouTube and other supported sources).","required":false,"schema":{"type":"string","title":"url"}},{"name":"apikey","in":"query","description":"Your personal API key.","required":false,"schema":{"type":"string","title":"apikey"}},{"name":"add_info","in":"query","description":"Set to `1` to include the `info` object (title + thumbnail) in the response. Defaults to `0` when omitted.","required":false,"schema":{"type":"string","title":"add_info"}},{"name":"audio_quality","in":"query","description":"Audio bitrate in kbps. Common values include `128`, `192`, `256`, `320`.","required":false,"schema":{"type":"string","title":"audio_quality"}},{"name":"allow_extended_duration","in":"query","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.","required":false,"schema":{"type":"string","title":"allow_extended_duration"}},{"name":"no_merge","in":"query","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).","required":false,"schema":{"type":"string","title":"no_merge"}},{"name":"audio_language","in":"query","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, or, ta, te, kn, ml, si, th, lo, my, ka, am, km,\nzh-CN, zh-TW, zh-HK, ja, ko`.","required":false,"schema":{"type":"string","title":"audio_language"}},{"name":"start_time","in":"query","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.","required":false,"schema":{"type":"string","title":"start_time"}},{"name":"end_time","in":"query","description":"Optional. End time (in seconds) of a cut/segment download.","required":false,"schema":{"type":"string","title":"end_time"}}]}},"/ajax/progress":{"get":{"operationId":"get_ajax_progress","summary":"Check download progress","description":"Polls the status of a previously-submitted download job. Keep polling\nuntil `progress == 1000` (i.e. 100%) and `download_url` is populated.","parameters":[{"name":"id","in":"query","description":"The job id returned by the Download endpoint.","required":false,"schema":{"type":"string","title":"id","example":"YOUR_JOB_ID"}}]}}},"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-JoJAPI-Key","description":"Your JoJ API key."}}}}