{
  "openapi": "3.1.0",
  "info": {
    "title": "Zapi — Downloader",
    "description": "Every Downloader endpoint on Zapi. Rendered catalog: https://zpi.web.id/category/downloader",
    "version": "1.0.0",
    "license": {
      "name": "Zapi Terms of Service",
      "url": "https://zpi.web.id/terms"
    }
  },
  "servers": [
    {
      "url": "https://api.zpi.web.id"
    }
  ],
  "security": [
    {
      "ApiKeyAuth": []
    }
  ],
  "components": {
    "securitySchemes": {
      "ApiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "x-api-key"
      }
    },
    "schemas": {
      "Envelope": {
        "type": "object",
        "required": [
          "status",
          "message"
        ],
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "success",
              "error"
            ]
          },
          "message": {
            "type": "string"
          },
          "content": {}
        }
      }
    },
    "responses": {
      "Error": {
        "description": "Invalid key, rate limit, or upstream failure",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Envelope"
            }
          }
        }
      }
    }
  },
  "externalDocs": {
    "url": "https://zpi.web.id/category/downloader/llms.txt"
  },
  "paths": {
    "/v1/downloader:bilibili/download": {
      "get": {
        "operationId": "downloader_bilibili_download",
        "summary": "Get Video",
        "description": "",
        "tags": [
          "Bilibili Downloader"
        ],
        "externalDocs": {
          "url": "https://zpi.web.id/api/downloader/bilibili#reference-download"
        },
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "URL video bilibili.tv",
            "schema": {
              "type": "string",
              "example": "https://www.bilibili.tv/id/video/4799525516221440"
            }
          },
          {
            "name": "quality",
            "in": "query",
            "required": false,
            "description": "Kualitas video yang diinginkan. Default 480P",
            "schema": {
              "type": "string",
              "enum": [
                "240P",
                "360P",
                "480P",
                "720P",
                "1080P"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                },
                "example": {
                  "status": "success",
                  "message": "Success",
                  "content": {
                    "aid": "4799876706343424",
                    "like": "54",
                    "type": "video/mp4",
                    "cover": "https://p.bstarstatic.com/ugc/471adedf7cd6438fb64f71037b34f9d8.jpg?x-oss-process=image%2Fresize%2Cw_600%2Fcrop%2Cmid%2Cw_600%2Ch_315%2Fformat%2Cwebp%2Fquality%2CQ_90%2Fwatermark%2Cimage_bWFuYWdlbWVudC80ZmVhODYxNzM0OGZmNDIzMDg0ZmRiNjE5MTJkZWEyZC5wbmc_eC1vc3MtcHJvY2Vzcz1pbWFnZS9yZXNpemUsUF8yMA%2Cshadow_70%2Cg_ne%2Cx_22%2Cy_16%2Fwatermark%2Cimage_bWFuYWdlbWVudC8yM2FkMzc5ODYxNjZhMGQwY2Y5NjAwZDI1NWE4OWNmNC5wbmc_eC1vc3MtcHJvY2Vzcz1pbWFnZS9yZXNpemUsUF8yMA%2Cg_center",
                    "title": "\"New\" Stay Low Profile, Sect Chief Episode 01 - 03 Sub Indo",
                    "views": "3.6K",
                    "quality": "480P",
                    "audioUrl": "https://upos-sz-mirrorcosbstar1.bilivideo.com/iupxcodeboss/a6/gb/n260613ad1t83p83bzk7ww1ts9x0gba6-1-1d1301000022.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&oi=1275924703&trid=227d27e93f294a23aa16203c2832468bi&mid=0&platform=pc&uipk=5&nbs=1&deadline=1782053463&gen=playurlv3&os=cosbstar1bv&upsig=b6bf83c2b0bb7755f796a5b702f48413&uparams=e,oi,trid,mid,platform,uipk,nbs,deadline,gen,os&bvc=vod&orderid=0,2&logo=00000000&f=i_0_0",
                    "inputUrl": "https://www.bilibili.tv/id/video/4799876706343424",
                    "videoUrl": "https://upos-sz-mirrorcosbstar1.bilivideo.com/iupxcodeboss/a6/gb/n260613ad1t83p83bzk7ww1ts9x0gba6-1-131210110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&mid=0&platform=pc&nbs=1&deadline=1782053463&os=cosbstar1bv&oi=1275924703&uipk=5&gen=playurlv3&trid=227d27e93f294a23aa16203c2832468bi&upsig=2a2b2cf2fac336ee0c02b63692fb2e78&uparams=e,mid,platform,nbs,deadline,os,oi,uipk,gen,trid&bvc=vod&orderid=0,2&logo=00000000&f=i_0_0",
                    "description": " ",
                    "availableQualities": [
                      "1080P(HD)",
                      "1080P",
                      "720P",
                      "480P",
                      "360P",
                      "240P",
                      "144P"
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/downloader:dailymotion/download": {
      "get": {
        "operationId": "downloader_dailymotion_download",
        "summary": "Download",
        "description": "Download media dari Dailymotion.",
        "tags": [
          "Dailymotion Downloader"
        ],
        "externalDocs": {
          "url": "https://zpi.web.id/api/downloader/dailymotion#reference-download"
        },
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Dailymotion media URL (video or post). Query params are fine.",
            "schema": {
              "type": "string",
              "example": "https://www.dailymotion.com/video/xadq8hi"
            }
          },
          {
            "name": "quality",
            "in": "query",
            "required": false,
            "description": "Max video quality — `max` = best available. Ignored when audioOnly=true.",
            "schema": {
              "type": "string",
              "enum": [
                "144",
                "240",
                "360",
                "480",
                "720",
                "1080",
                "max"
              ],
              "example": "1080"
            }
          },
          {
            "name": "audioOnly",
            "in": "query",
            "required": false,
            "description": "Set `true` to fetch audio only. Default `false` (video).",
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ],
              "example": "false"
            }
          },
          {
            "name": "audioFormat",
            "in": "query",
            "required": false,
            "description": "Audio container when audioOnly=true. Default mp3.",
            "schema": {
              "type": "string",
              "enum": [
                "mp3",
                "opus",
                "ogg",
                "wav"
              ],
              "example": "mp3"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                },
                "example": {
                  "status": "success",
                  "message": "Success",
                  "content": {
                    "ok": true,
                    "url": "https://cbt.zpi.web.id/tunnel?id=KbL_ms41YlECZLcUyYeRu&exp=1782046171667&sig=...&sec=...&iv=...",
                    "type": "video",
                    "filename": "You Have My Heart 2026 Episode 1 ｜ English Sub - CrimsonSceneArchive (544p).mp4",
                    "provider": "dailymotion",
                    "originalUrl": "https://www.dailymotion.com/video/xaggx0q"
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/downloader:facebook/download": {
      "get": {
        "operationId": "downloader_facebook_download",
        "summary": "Download",
        "description": "Download media dari Facebook.",
        "tags": [
          "Facebook Downloader"
        ],
        "externalDocs": {
          "url": "https://zpi.web.id/api/downloader/facebook#reference-download"
        },
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Facebook media URL (video or post). Query params are fine.",
            "schema": {
              "type": "string",
              "example": "https://www.facebook.com/watch/?v=10153231379946729"
            }
          },
          {
            "name": "quality",
            "in": "query",
            "required": false,
            "description": "Max video quality — `max` = best available. Ignored when audioOnly=true.",
            "schema": {
              "type": "string",
              "enum": [
                "144",
                "240",
                "360",
                "480",
                "720",
                "1080",
                "max"
              ],
              "example": "1080"
            }
          },
          {
            "name": "audioOnly",
            "in": "query",
            "required": false,
            "description": "Set `true` to fetch audio only. Default `false` (video).",
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ],
              "example": "false"
            }
          },
          {
            "name": "audioFormat",
            "in": "query",
            "required": false,
            "description": "Audio container when audioOnly=true. Default mp3.",
            "schema": {
              "type": "string",
              "enum": [
                "mp3",
                "opus",
                "ogg",
                "wav"
              ],
              "example": "mp3"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                },
                "example": {
                  "status": "success",
                  "message": "Success",
                  "content": {
                    "ok": true,
                    "url": "https://video-cgk2-2.xx.fbcdn.net/o1/v/t2/f2/m412/AQO00w7gkHtBwvAKd2SCYhroaNCqSwBQ52S2KsO2Hwmoh.mp4?ccb=17-1&_nc_zt=28&oh=00_Af_KpRpXItQ&oe=6A3D971D&bitrate=580000&tag=hd",
                    "type": "video",
                    "filename": "facebook_10153231379946729.mp4",
                    "provider": "facebook",
                    "originalUrl": "https://www.facebook.com/watch/?v=10153231379946729"
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/downloader:fdown/download": {
      "get": {
        "operationId": "downloader_fdown_download",
        "summary": "Download",
        "description": "Extract direct video links from a Facebook video URL.",
        "tags": [
          "Facebook Video"
        ],
        "externalDocs": {
          "url": "https://zpi.web.id/api/downloader/fdown#reference-download"
        },
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Facebook video URL (watch, reel, /videos/, fb.watch or permalink).",
            "schema": {
              "type": "string",
              "example": "https://www.facebook.com/watch?v=494095816865756"
            }
          },
          {
            "name": "quality",
            "in": "query",
            "required": false,
            "description": "Max video quality — `max` = best available. Ignored when audioOnly=true.",
            "schema": {
              "type": "string",
              "enum": [
                "144",
                "240",
                "360",
                "480",
                "720",
                "1080",
                "max"
              ],
              "example": "1080"
            }
          },
          {
            "name": "audioOnly",
            "in": "query",
            "required": false,
            "description": "Kalau `true`, ambil audio saja. Default `false` (video).",
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ],
              "example": "false"
            }
          },
          {
            "name": "audioFormat",
            "in": "query",
            "required": false,
            "description": "Audio container when audioOnly=true. Default mp3.",
            "schema": {
              "type": "string",
              "enum": [
                "mp3",
                "opus",
                "ogg",
                "wav"
              ],
              "example": "mp3"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                },
                "example": {
                  "status": "success",
                  "message": "Success",
                  "content": {
                    "ok": true,
                    "url": "https://video-cgk2-1.xx.fbcdn.net/o1/v/t2/f2/m412/AQOyqevZi5YEaiPASLgYlq1i3g5Q9SU-fFTFAKNf0XMEt-YyjC4TY62PgDjF6fIJY7IvfMwv6WOuhsd2gAulqrhL.mp4?_nc_cat=104&_nc_sid=5e9851&_nc_ht=video-cgk2-1.xx.fbcdn.net&_nc_ohc=lSmD_hYWHEgQ7kNvwFedTCo&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5GQUNFQk9PSy4uQzMuNzIwLmRhc2hfaGlnaF8xX3YxIiwieHB2X2Fzc2V0X2lkIjo0NjQwMzk2ODk0NTMxODAsImFzc2V0X2FnZV9kYXlzIjo3NTksInZpX3VzZWNhc2VfaWQiOjEwMTM5LCJkdXJhdGlvbl9zIjozMCwidXJsZ2VuX3NvdXJjZSI6Ind3dyJ9&ccb=17-1&vs=c5fcea7534cb10c7&_nc_vs=HBksFQIYNWZiX3Blcm1hbmVudC8xNjIyNzQwMjE4NTE1NTg1XzczMDM0MjU1NjY4ODU0NDMxNDUubXA0FQACyAESABUCGDVmYl9wZXJtYW5lbnQvMTUyMTEyOTE3NTUwNTA0OF8yNDQ3OTI2Mzk3MDcxMTQzNTYxLm1wNBUCAsgBEgAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACb4-c-N1YLTARUCKAJDMywXQD4AAAAAAAAYDmRhc2hfaGlnaF8xX3YxEQB1AmW2ngEA&_nc_gid=K3wlCKamSMGZqbYtGuQuTQ&_nc_ss=70289&_nc_zt=28&oh=00_Af9fr5fEgbh3wP2ODGlEcp1VpeCbEur9HIj7xs7xDSRR9Q&oe=6A3DB9C9&bitrate=463176&tag=dash_high_1_v1",
                    "type": "video",
                    "filename": "facebook_494095816865756.mp4",
                    "provider": "facebook",
                    "originalUrl": "https://www.facebook.com/watch?v=494095816865756"
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/downloader:fuckingfast/download": {
      "get": {
        "operationId": "downloader_fuckingfast_download",
        "summary": "Download",
        "description": "",
        "tags": [
          "FuckingFast Downloader"
        ],
        "externalDocs": {
          "url": "https://zpi.web.id/api/downloader/fuckingfast#reference-download"
        },
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "fuckingfast.co file URL or bare file ID",
            "schema": {
              "type": "string",
              "example": "https://fuckingfast.co/wajys77edcwh"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                },
                "example": {
                  "status": "success",
                  "message": "Success",
                  "content": {
                    "fileId": "ruh9kvhe7kl5",
                    "fileName": "Farm_Manager_World_--_fitgirl-repacks.site_--_.part2.rar",
                    "downloads": 281,
                    "sizeBytes": 2147483648,
                    "sizeHuman": "2.0GB",
                    "viewerUrl": "https://fuckingfast.co/ruh9kvhe7kl5",
                    "downloadUrl": "https://dl.fuckingfast.co/dl/jIIZPsnYfokMsiI3XTuImVUhREBQ72Uy6NgEYuZSvTtrteZFzXUEj44vWB9mpRLknA1UAvuZenOLOm67ZVw4sQ7lcwfJ7durqOc1PFEpr1qVnBMmYD1qt2jo_10f_L9SSonkD5kh4Jv0OhePwMeiIuAY6VIOP8tgDSOXyg"
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/downloader:google-drive/download": {
      "get": {
        "operationId": "downloader_google_drive_download",
        "summary": "Download",
        "description": "",
        "tags": [
          "Google Drive Downloader"
        ],
        "externalDocs": {
          "url": "https://zpi.web.id/api/downloader/google-drive#reference-download"
        },
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "URL atau ID file/folder Google Drive",
            "schema": {
              "type": "string",
              "example": "https://drive.google.com/file/d/1CaJig7lPfOqKGtsv34jWophJ1Q1LLhJC/view?usp=sharing"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                },
                "example": {
                  "status": "success",
                  "message": "Success",
                  "content": {
                    "id": "1CaJig7lPfOqKGtsv34jWophJ1Q1LLhJC",
                    "name": "image.jpeg",
                    "size": "237.61 KB",
                    "type": "file",
                    "viewUrl": "https://drive.google.com/file/d/1CaJig7lPfOqKGtsv34jWophJ1Q1LLhJC/view",
                    "mimeType": "image/jpeg",
                    "downloadUrl": "https://drive.usercontent.google.com/download?id=1CaJig7lPfOqKGtsv34jWophJ1Q1LLhJC&export=download&authuser=0"
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/downloader:instagram/download": {
      "get": {
        "operationId": "downloader_instagram_download",
        "summary": "Download",
        "description": "Download media dari Instagram.",
        "tags": [
          "Instagram Downloader"
        ],
        "externalDocs": {
          "url": "https://zpi.web.id/api/downloader/instagram#reference-download"
        },
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Instagram media URL (video or post). Query params are fine.",
            "schema": {
              "type": "string",
              "example": "https://www.instagram.com/reel/DZRfl_gB9B1/"
            }
          },
          {
            "name": "quality",
            "in": "query",
            "required": false,
            "description": "Max video quality — `max` = best available. Ignored when audioOnly=true.",
            "schema": {
              "type": "string",
              "enum": [
                "144",
                "240",
                "360",
                "480",
                "720",
                "1080",
                "max"
              ],
              "example": "1080"
            }
          },
          {
            "name": "audioOnly",
            "in": "query",
            "required": false,
            "description": "Set `true` to fetch audio only. Default `false` (video).",
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ],
              "example": "false"
            }
          },
          {
            "name": "audioFormat",
            "in": "query",
            "required": false,
            "description": "Audio container when audioOnly=true. Default mp3.",
            "schema": {
              "type": "string",
              "enum": [
                "mp3",
                "opus",
                "ogg",
                "wav"
              ],
              "example": "mp3"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                },
                "example": {
                  "status": "success",
                  "message": "Success",
                  "content": {
                    "ok": true,
                    "url": "https://scontent-cgk2-1.cdninstagram.com/o1/v/t2/f2/m86/AQOfeJCKfRYo7h4qfHrAqAeF2LBDH08QIJgWaxy_ZWPGV2rVFBLfnvTRf4zgz7RQB9Y2KpQy_1DgNHQiYY3C-jwmLMz-zM7RE3uIBg0.mp4?_nc_cat=103&_nc_sid=5e9851&_nc_ht=scontent-cgk2-1.cdninstagram.com&_nc_ohc=1VRQoJhRXFEQ7kNvwHKC49I&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5JTlNUQUdSQU0uQ0xJUFMuQzMuNzIwLmRhc2hfYmFzZWxpbmVfMV92MSIsInhwdl9hc3NldF9pZCI6MTY3NzAyMjEwMzcyNjQ5NSwiYXNzZXRfYWdlX2RheXMiOjE5NCwidmlfdXNlY2FzZV9pZCI6MTAwOTksImR1cmF0aW9uX3MiOjYyLCJ1cmxnZW5fc291cmNlIjoid3d3In0%3D&ccb=17-1&vs=cbbe07e88d5bed6d&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC81NjQ1RDcwMDg2NTlGMzkwOTU5MzM1NDI0MDE0MDM5OV92aWRlb19kYXNoaW5pdC5tcDQVAALIARIAFQIYR2lnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC8xNTQ2ODk1OTg2MzU3NzgzXzIyNzQ0MzU5MDczMjMyNjgxODUubXA0FQICyAESACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJr6mr6zEz_oFFQIoAkMzLBdATzdsi0OVgRgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gdl5p0BAA&_nc_gid=8Obi9uONjfAu6rKRb_6iJQ&_nc_ss=70689&_nc_zt=28&oh=00_AQCh7QiA1dwfw5vu7T_XAF4FNfDi2B1fHZ-UdL-nt9eccQ&oe=6A61135C",
                    "type": "video",
                    "filename": "instagram_DTPPJbZETtf.mp4",
                    "provider": "instagram",
                    "originalUrl": "https://www.instagram.com/reel/DTPPJbZETtf/"
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/downloader:loom/download": {
      "get": {
        "operationId": "downloader_loom_download",
        "summary": "Download",
        "description": "Download media dari Loom.",
        "tags": [
          "Loom Downloader"
        ],
        "externalDocs": {
          "url": "https://zpi.web.id/api/downloader/loom#reference-download"
        },
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Loom media URL (video or post). Query params are fine.",
            "schema": {
              "type": "string",
              "example": "https://www.loom.com/share/c43a642f815f4378b6f80a889bb73d8d"
            }
          },
          {
            "name": "quality",
            "in": "query",
            "required": false,
            "description": "Max video quality — `max` = best available. Ignored when audioOnly=true.",
            "schema": {
              "type": "string",
              "enum": [
                "144",
                "240",
                "360",
                "480",
                "720",
                "1080",
                "max"
              ],
              "example": "1080"
            }
          },
          {
            "name": "audioOnly",
            "in": "query",
            "required": false,
            "description": "Set `true` to fetch audio only. Default `false` (video).",
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ],
              "example": "false"
            }
          },
          {
            "name": "audioFormat",
            "in": "query",
            "required": false,
            "description": "Audio container when audioOnly=true. Default mp3.",
            "schema": {
              "type": "string",
              "enum": [
                "mp3",
                "opus",
                "ogg",
                "wav"
              ],
              "example": "mp3"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                },
                "example": {
                  "status": "success",
                  "message": "Success",
                  "content": {
                    "ok": true,
                    "url": "https://cdn.loom.com/sessions/transcoded/c43a642f815f4378b6f80a889bb73d8d.mp4?Policy=...&Key-Pair-Id=KQOSYIR44AIC0&Signature=...",
                    "type": "video",
                    "filename": "loom_c43a642f815f4378b6f80a889bb73d8d.mp4",
                    "provider": "loom",
                    "originalUrl": "https://www.loom.com/share/c43a642f815f4378b6f80a889bb73d8d"
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/downloader:mangadex/chapter/{chapterId}": {
      "get": {
        "operationId": "downloader_mangadex_chapter",
        "summary": "Chapter",
        "description": "Return page image URLs for a given manga chapter.",
        "tags": [
          "MangaDex"
        ],
        "externalDocs": {
          "url": "https://zpi.web.id/api/downloader/mangadex#reference-chapter"
        },
        "parameters": [
          {
            "name": "chapterId",
            "in": "path",
            "required": true,
            "description": "Chapter UUID (8-4-4-4-12 hex)",
            "schema": {
              "type": "string",
              "example": "a54c491c-8e4c-4e97-8873-5b79e59da210"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                },
                "example": {
                  "status": "success",
                  "message": "Success",
                  "content": {
                    "ok": true,
                    "hash": "2895e9889c6fae6a6ba845d3d359a028",
                    "pages": [
                      {
                        "idx": 0,
                        "url": "https://cmdxd98sb0x3yprd.mangadex.network/data/2895e9889c6fae6a6ba845d3d359a028/1-f174f57196f4482dccbe8ba1940302dce209c7d560bdf52ae9d21840b9b15828.png"
                      },
                      {
                        "idx": 1,
                        "url": "https://cmdxd98sb0x3yprd.mangadex.network/data/2895e9889c6fae6a6ba845d3d359a028/2-8b4e0f3b0eab1a34092e1043d70d15760e6864f28b4b3b3d2ba378a5de6493af.png"
                      },
                      {
                        "idx": 2,
                        "url": "https://cmdxd98sb0x3yprd.mangadex.network/data/2895e9889c6fae6a6ba845d3d359a028/3-f830bf17745cde239a9802529f4c2c960d505db8118202ce9d7729a0429edb34.png"
                      },
                      {
                        "idx": 3,
                        "url": "https://cmdxd98sb0x3yprd.mangadex.network/data/2895e9889c6fae6a6ba845d3d359a028/4-769605d5789328d8add840c495c96f186073d4fdd3f2a4f518700a2bd6be6c93.png"
                      },
                      {
                        "idx": 4,
                        "url": "https://cmdxd98sb0x3yprd.mangadex.network/data/2895e9889c6fae6a6ba845d3d359a028/5-566c2109e80273bade94646a9e8cb7359274edbd63ad8b7fd5a3984f56b79ff5.png"
                      },
                      {
                        "idx": 5,
                        "url": "https://cmdxd98sb0x3yprd.mangadex.network/data/2895e9889c6fae6a6ba845d3d359a028/6-655cebeae39a3e3f375ccabd80710b7758b92529162a896c10bfd3268a94d6a3.png"
                      },
                      {
                        "idx": 6,
                        "url": "https://cmdxd98sb0x3yprd.mangadex.network/data/2895e9889c6fae6a6ba845d3d359a028/7-d35c64e6d3916f1c2c30a0241839d838d83f8ec1bf0d928e7a90d1da155c847e.png"
                      },
                      {
                        "idx": 7,
                        "url": "https://cmdxd98sb0x3yprd.mangadex.network/data/2895e9889c6fae6a6ba845d3d359a028/8-3469dd9b9f5b495816db0ce680d31f0ffe648ab496f781422f8c9bf41dc44556.png"
                      }
                    ],
                    "total": 19,
                    "chapterId": "1e11c8b5-bd2d-4bd0-8c12-431a69d6736e"
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/downloader:mangadex/search": {
      "get": {
        "operationId": "downloader_mangadex_search",
        "summary": "Search",
        "description": "Search manga titles and return matching results with metadata.",
        "tags": [
          "MangaDex"
        ],
        "externalDocs": {
          "url": "https://zpi.web.id/api/downloader/mangadex#reference-search"
        },
        "parameters": [
          {
            "name": "title",
            "in": "query",
            "required": true,
            "description": "Manga title (partial match)",
            "schema": {
              "type": "string",
              "example": "Berserk"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Result limit. Default 10, max 50",
            "schema": {
              "type": "number",
              "example": "10"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                },
                "example": {
                  "status": "success",
                  "message": "Success",
                  "content": {
                    "ok": true,
                    "query": "one piece",
                    "total": 5,
                    "results": [
                      {
                        "id": "a1c7c817-4e59-43b7-9365-09675a149a6f",
                        "year": 1997,
                        "title": "One Piece",
                        "status": "ongoing",
                        "altTitles": [
                          "ワンピース",
                          "Ван Піс",
                          "One Piece. Большой куш",
                          "Ван Пис",
                          "وان پیس"
                        ],
                        "description": "Gol D. Roger, a man referred to as the \"Pirate King,\" is set to be executed by the World Government. But just before his demise, he confirms the existence of a great treasure, One Piece, located somewhere within the vast ocean known as the Grand Line. Announcing that One Piece can be claimed by anyone worthy enough to reach it, the Pirate King is executed and the Great Age of Pirates begins.  \n  \nTwenty-two years later, a young man by the name of Monkey D. Luffy is ready to embark on his own adv",
                        "lastChapter": "",
                        "contentRating": "suggestive",
                        "originalLanguage": "ja"
                      },
                      {
                        "id": "a0b49136-9f4d-46d4-b5dd-d5393e015009",
                        "year": 2014,
                        "title": "One Piece Party",
                        "status": "completed",
                        "altTitles": [
                          "ワンピースパーティー"
                        ],
                        "description": "Spin-off of One Piece, which takes place post-timeskip, showing the cast in SD/chibi form and features their hilarious antics around various islands while out in the sea.",
                        "lastChapter": "34",
                        "contentRating": "safe",
                        "originalLanguage": "ja"
                      },
                      {
                        "id": "b70113a5-32a3-44e8-a28f-0e88392808ba",
                        "year": 2019,
                        "title": "One Piece Academy",
                        "status": "ongoing",
                        "altTitles": [
                          "ONE PIECE学園",
                          "One Piece Gakuen",
                          "One Piece School",
                          "One Piece Akademisi",
                          "Học Viện One Piece"
                        ],
                        "description": "A spin off where the One Piece cast goes to a big academy & lives modern lives.",
                        "lastChapter": "",
                        "contentRating": "safe",
                        "originalLanguage": "ja"
                      },
                      {
                        "id": "470ac1ec-c3dd-4dc2-9e5d-0104600ed1a5",
                        "year": 2020,
                        "title": "One Piece: Ace’s Story—The Manga",
                        "status": "completed",
                        "altTitles": [
                          "One Piece Episode Ace",
                          "ワンピース エピソード A",
                          "ワンピース エピソード エース",
                          "Roronoa Zoro, Umi ni Chiru",
                          "ロロノア・ゾロ海に散る"
                        ],
                        "description": "Washed up on the shores of a deserted island at the edge of the East Blue Sea, two men from different backgrounds unite in their shared thirst for adventure. One of them, Portgaz D. Ace, will follow in his infamous father’s footsteps as the fearless captain of a pirate crew. The other, Masked Deuce, becomes the reluctant first member of Ace’s Spade Pirates. Survival is not enough for these seafaring buccaneers, as together they seek treasure, excitement, and a route to the New World.\n\n---\n**Note",
                        "lastChapter": "4",
                        "contentRating": "safe",
                        "originalLanguage": "ja"
                      },
                      {
                        "id": "a2c1d849-af05-4bbc-b2a7-866ebb10331f",
                        "year": 2012,
                        "title": "One Piece (Official Colored)",
                        "status": "ongoing",
                        "altTitles": [
                          "Ван Пис",
                          "ون پیس",
                          "海贼王",
                          "원피스",
                          "ONE PIECE カラー版"
                        ],
                        "description": "Gol D. Roger, a man referred to as the \"Pirate King,\" is set to be executed by the World Government. But just before his demise, he confirms the existence of a great treasure, One Piece, located somewhere within the vast ocean known as the Grand Line. \n\nAnnouncing that One Piece can be claimed by anyone worthy enough to reach it, the Pirate King is executed and the Great Age of Pirates begins.  \n  \nTwenty years later, a young man by the name of Monkey D. Luffy is ready to embark on his own adven",
                        "lastChapter": "",
                        "contentRating": "suggestive",
                        "originalLanguage": "ja"
                      }
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/downloader:mediafire/download": {
      "get": {
        "operationId": "downloader_mediafire_download",
        "summary": "Download",
        "description": "",
        "tags": [
          "MediaFire Downloader"
        ],
        "externalDocs": {
          "url": "https://zpi.web.id/api/downloader/mediafire#reference-download"
        },
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "URL halaman MediaFire (bukan link download langsung)",
            "schema": {
              "type": "string",
              "example": "https://www.mediafire.com/file/rutx9o67641wjm9/MediaFire_-_Getting_Started.pdf/file"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                },
                "example": {
                  "status": "success",
                  "message": "Success",
                  "content": {
                    "fileId": "rutx9o67641wjm9",
                    "fileName": "MediaFire+-+Getting+Started.pdf",
                    "fileSize": "372.37KB",
                    "fileType": "application/pdf",
                    "thumbnail": "https://static.mediafire.com/images/filetype/download/pdf.jpg",
                    "downloadUrl": "https://download2389.mediafire.com/do04ru3p1loghjdnGs4W9K2W0ef_N_CpzbMTzfG_fkDFJ0KmoMIVAJ2NoMr-Uj2Mr1ho9n05iwVGxQVwypSk2pcySKAGWcPKBI9dlGisI1OuYYridrDNVWvBgMg8Pk2W1qLWai1Y1I7Trwqahi9REtn2GO556a97eR9IpzTNIYvb/rutx9o67641wjm9/MediaFire+-+Getting+Started.pdf"
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/downloader:mega-nz/download": {
      "get": {
        "operationId": "downloader_mega_nz_download",
        "summary": "Download",
        "description": "",
        "tags": [
          "Mega.nz Downloader"
        ],
        "externalDocs": {
          "url": "https://zpi.web.id/api/downloader/mega-nz#reference-download"
        },
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "URL file Mega.nz (format /file/ atau /#!)",
            "schema": {
              "type": "string",
              "example": "https://mega.nz/file/EntxADbJ#UCXeVEZbEo0ci9xKBFJzgMPol39MfFecwoB-TXfp1yc"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                },
                "example": {
                  "status": "success",
                  "message": "Success",
                  "content": {
                    "fileId": "8soDySiQ",
                    "fileName": "libvirt-4.5.0.tar.xz",
                    "fileSize": "14.06 MB",
                    "mimeType": "application/x-xz",
                    "downloadUrl": "https://gfs270n367.userstorage.mega.co.nz/dl/rATNmAse8-iWVgJqXUC330yO-h_7s3ZfWMlbHu4zWYYMQeQvyUFnVfqNryw-CXAgNAGIK2N2glJTHGkLYUWFzzDd-wNovqhwCNc7EH0ricRyMPRkNyXa5pAKB5JzjA",
                    "fileSizeBytes": 14743956,
                    "downloadUrlMirrors": [
                      "https://gfs270n367.userstorage.mega.co.nz/dl/rATNmAse8-iWVgJqXUC330yO-h_7s3ZfWMlbHu4zWYYMQeQvyUFnVfqNryw-CXAgNAGIK2N2glJTHGkLYUWFzzDd-wNovqhwCNc7EH0ricRyMPRkNyXa5pAKB5JzjA",
                      "https://gfs262n301.userstorage.mega.co.nz/dl/t_vX0tOikzh58QKRZb4HTsbyEOb3ntE8Jz5mVHOd1hERYJuxF2BJrj4jmj2ughRx23nhSV6i6EO2Sa5n0NCGqcXG7J4Cdq07rmi5-gw0Pl6LWE9TznkcfKVodNKp3A",
                      "https://gfs214n109.userstorage.mega.co.nz/dl/dhGvvPFZvim0hQKw4Lo_FFii6TRWEB5Pp0l6R13it0zQTrhxTxrJS_cybtLgwga4tdXcYr8lxioOxonBj5OGsUReejLeShYJNVeGIEOt9tjrbX8cVGpwIx9rI5m-Pw",
                      "https://gfs204n119.userstorage.mega.co.nz/dl/a4MWwx_nV-GteAL-j5c2gVD40Djupd6IpKy3sCBd6YmFPVS6PUlhxsjJby2uTXliQFyj7Up1EW_1zuckMlgemRljDEUNYtVBHAvySCryVHOqHdSaxH579Pb8Dd9UuQ",
                      "https://gfs208n109.userstorage.mega.co.nz/dl/7gFSbMtTTIC2dAI6KmxSfdPfwXQMX2VR7QDkNld799fNvKS8M0BATl-IQh2Z305iynV7-2fX1KAzMCf2HPKKq8rm66WIkMOaIoxA96MwbtoUEQEIKDkl4-dzx_MThQ",
                      "https://gfs302n109.userstorage.mega.co.nz/dl/FP3ZcaXE13wdrgJms0kP-CJVzJWxzT9o8x1FsqUfEGX3bKDecZW8lubZx37jwJ0bYZsLi3YwjuCWMz09GuMHW_vOqP1CpxrzNCGdJE9ajq8-miXtgZtpr_vcp72oxQ"
                    ]
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/downloader:okru/download": {
      "get": {
        "operationId": "downloader_okru_download",
        "summary": "Download",
        "description": "Download media dari OK.ru.",
        "tags": [
          "OK.ru Downloader"
        ],
        "externalDocs": {
          "url": "https://zpi.web.id/api/downloader/okru#reference-download"
        },
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "OK.ru media URL (video or post). Query params are fine.",
            "schema": {
              "type": "string",
              "example": "https://ok.ru/video/14418516314862"
            }
          },
          {
            "name": "quality",
            "in": "query",
            "required": false,
            "description": "Max video quality — `max` = best available. Ignored when audioOnly=true.",
            "schema": {
              "type": "string",
              "enum": [
                "144",
                "240",
                "360",
                "480",
                "720",
                "1080",
                "max"
              ],
              "example": "1080"
            }
          },
          {
            "name": "audioOnly",
            "in": "query",
            "required": false,
            "description": "Set `true` to fetch audio only. Default `false` (video).",
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ],
              "example": "false"
            }
          },
          {
            "name": "audioFormat",
            "in": "query",
            "required": false,
            "description": "Audio container when audioOnly=true. Default mp3.",
            "schema": {
              "type": "string",
              "enum": [
                "mp3",
                "opus",
                "ogg",
                "wav"
              ],
              "example": "mp3"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                },
                "example": {
                  "status": "success",
                  "message": "Success",
                  "content": {
                    "ok": true,
                    "url": "https://cbt.zpi.web.id/tunnel?id=n7C2q9YOjxxN-6bgX_S5R&exp=1782046357925&sig=4d6H_IsYeF8rbVO33krRBIJ1h6W4q-UkhePDlEQzRhg&sec=Ty7PTXBQ_0jY76Qbj16f1KDLmifGRBMKX8uknkMd1Qo&iv=MekIZU3PeXCWkcME03JFGw",
                    "type": "video",
                    "filename": "Ко дню рождения А.С.Пушкина! - ОК Видео (1080p).mp4",
                    "provider": "okru",
                    "originalUrl": "https://ok.ru/video/14418516314862"
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/downloader:pinterest/download": {
      "get": {
        "operationId": "downloader_pinterest_download",
        "summary": "Download",
        "description": "Download media dari Pinterest.",
        "tags": [
          "Pinterest Downloader"
        ],
        "externalDocs": {
          "url": "https://zpi.web.id/api/downloader/pinterest#reference-download"
        },
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Pinterest media URL (video or post). Query params are fine.",
            "schema": {
              "type": "string",
              "example": "https://www.pinterest.com/pin/901212575419320219/"
            }
          },
          {
            "name": "quality",
            "in": "query",
            "required": false,
            "description": "Max video quality — `max` = best available. Ignored when audioOnly=true.",
            "schema": {
              "type": "string",
              "enum": [
                "144",
                "240",
                "360",
                "480",
                "720",
                "1080",
                "max"
              ],
              "example": "1080"
            }
          },
          {
            "name": "audioOnly",
            "in": "query",
            "required": false,
            "description": "Set `true` to fetch audio only. Default `false` (video).",
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ],
              "example": "false"
            }
          },
          {
            "name": "audioFormat",
            "in": "query",
            "required": false,
            "description": "Audio container when audioOnly=true. Default mp3.",
            "schema": {
              "type": "string",
              "enum": [
                "mp3",
                "opus",
                "ogg",
                "wav"
              ],
              "example": "mp3"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                },
                "example": {
                  "status": "success",
                  "message": "Success",
                  "content": {
                    "ok": true,
                    "url": "https://v1.pinimg.com/videos/mc/720p/0b/62/71/0b6271d4b1295244d6a319949d7a1e5f.mp4",
                    "type": "video",
                    "filename": "pinterest_901212575419320219.mp4",
                    "provider": "pinterest",
                    "originalUrl": "https://www.pinterest.com/pin/901212575419320219/"
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/downloader:pixeldrain/download": {
      "get": {
        "operationId": "downloader_pixeldrain_download",
        "summary": "Download",
        "description": "",
        "tags": [
          "Pixeldrain Downloader"
        ],
        "externalDocs": {
          "url": "https://zpi.web.id/api/downloader/pixeldrain#reference-download"
        },
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "URL halaman Pixeldrain (/u/<id>) atau ID file saja (mis. 5UZcgpfV)",
            "schema": {
              "type": "string",
              "example": "https://pixeldrain.com/u/5UZcgpfV"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                },
                "example": {
                  "status": "success",
                  "message": "Success",
                  "content": {
                    "views": 452,
                    "fileId": "5UZcgpfV",
                    "sha256": "d004d510c52de2389e515eb4e3b96cfdb90c006b0af53c7e22b773b7e9f771b7",
                    "showAds": true,
                    "fileName": "APPR2622win-yasir252.rar",
                    "mimeType": "application/x-rar-compressed",
                    "abuseType": "",
                    "downloads": 553,
                    "sizeBytes": 4419530686,
                    "sizeHuman": "4.12 GB",
                    "viewerUrl": "https://pixeldrain.com/u/5UZcgpfV",
                    "uploadedAt": "2026-05-10T17:38:00.677Z",
                    "canDownload": true,
                    "downloadUrl": "https://pixeldrain.com/api/file/5UZcgpfV?download",
                    "lastViewedAt": "2026-06-20T12:53:32.79Z",
                    "thumbnailUrl": "https://pixeldrain.com/file/5UZcgpfV/thumbnail",
                    "abuseReporter": "",
                    "bandwidthUsed": 1682540608132,
                    "deleteAfterDate": "0001-01-01T00:00:00Z",
                    "allowVideoPlayer": true,
                    "downloadSpeedLimit": 0,
                    "deleteAfterDownloads": 0
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/downloader:redditsave/download": {
      "get": {
        "operationId": "downloader_redditsave_download",
        "summary": "Download",
        "description": "Return downloadable video and audio links for a Reddit post URL.",
        "tags": [
          "Reddit Video Downloader"
        ],
        "externalDocs": {
          "url": "https://zpi.web.id/api/downloader/redditsave#reference-download"
        },
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "URL post Reddit berisi video (v.redd.it).",
            "schema": {
              "type": "string",
              "example": "https://www.reddit.com/r/funny/comments/iakyuq/who_said_chivalry_is_dead/"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                },
                "example": {
                  "status": "success",
                  "message": "Success",
                  "content": {
                    "ok": true,
                    "audio": "https://v.redd.it/bc7l2gra4ah51/DASH_audio.mp4",
                    "mediaId": "bc7l2gra4ah51",
                    "variants": [
                      {
                        "url": "https://v.redd.it/bc7l2gra4ah51/DASH_480.mp4",
                        "quality": "480p"
                      },
                      {
                        "url": "https://v.redd.it/bc7l2gra4ah51/DASH_360.mp4",
                        "quality": "360p"
                      },
                      {
                        "url": "https://v.redd.it/bc7l2gra4ah51/DASH_240.mp4",
                        "quality": "240p"
                      }
                    ],
                    "videoOnly": true,
                    "originalUrl": "https://www.reddit.com/r/funny/comments/iakyuq/who_said_chivalry_is_dead/",
                    "requiresMux": true
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/downloader:rutube/download": {
      "get": {
        "operationId": "downloader_rutube_download",
        "summary": "Download",
        "description": "Download media dari Rutube.",
        "tags": [
          "Rutube Downloader"
        ],
        "externalDocs": {
          "url": "https://zpi.web.id/api/downloader/rutube#reference-download"
        },
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Rutube media URL (video or post). Query params are fine.",
            "schema": {
              "type": "string",
              "example": "https://rutube.ru/video/df566fac28e4853bbf4e6389a6d08cda/"
            }
          },
          {
            "name": "quality",
            "in": "query",
            "required": false,
            "description": "Max video quality — `max` = best available. Ignored when audioOnly=true.",
            "schema": {
              "type": "string",
              "enum": [
                "144",
                "240",
                "360",
                "480",
                "720",
                "1080",
                "max"
              ],
              "example": "1080"
            }
          },
          {
            "name": "audioOnly",
            "in": "query",
            "required": false,
            "description": "Set `true` to fetch audio only. Default `false` (video).",
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ],
              "example": "false"
            }
          },
          {
            "name": "audioFormat",
            "in": "query",
            "required": false,
            "description": "Audio container when audioOnly=true. Default mp3.",
            "schema": {
              "type": "string",
              "enum": [
                "mp3",
                "opus",
                "ogg",
                "wav"
              ],
              "example": "mp3"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                },
                "example": {
                  "status": "success",
                  "message": "Success",
                  "content": {
                    "ok": true,
                    "url": "https://cbt.zpi.web.id/tunnel?id=pZmQQY-ArYRewo1S-RpOU&exp=1782046355255&sig=v1_gDEiIYNMuyaiK3g3LN4Eugqc-K6A9EbWET4VyMX0&sec=FwO5OZsQcwZE8xieo2gAPVh5H80qutxU5fbUK-VVun8&iv=iQu2y6SzSqBQf-rlKI5jQg",
                    "type": "video",
                    "filename": "Жертва и странное решение соперника. Шахматы рапид - Шахматы Олег Соломаха (1080p).mp4",
                    "provider": "rutube",
                    "originalUrl": "https://rutube.ru/video/2239a49871ae52770b4fd7093c46bb7f/"
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/downloader:send-now/download": {
      "get": {
        "operationId": "downloader_send_now_download",
        "summary": "Download",
        "description": "",
        "tags": [
          "Send.now Downloader"
        ],
        "externalDocs": {
          "url": "https://zpi.web.id/api/downloader/send-now#reference-download"
        },
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "URL Send.now — folder (/s/<id>/<name>) atau file tunggal (/fileCode atau kode saja)",
            "schema": {
              "type": "string",
              "example": "https://send.now/s/AbCdEf/folder-name"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                },
                "example": {
                  "status": "success",
                  "message": "Success",
                  "content": {
                    "type": "folder",
                    "files": [
                      {
                        "fileCode": "m45w7aol4sy5",
                        "fileName": "Demo.rar",
                        "viewerUrl": "https://send.now/m45w7aol4sy5",
                        "downloadUrl": "https://u3143.send.now/d/uvyxt2ng6gosj4l43j7f7fnu3ggcxgkd6nvq5pmcf2ewk2gzsfh3bhqsincrn3zacd4yfamy/Demo.rar",
                        "fileSizeHuman": "353 KB"
                      },
                      {
                        "fileCode": "ydrpgm830h86",
                        "fileName": "Demo.jpg",
                        "viewerUrl": "https://send.now/ydrpgm830h86",
                        "downloadUrl": "https://u3143.send.now/d/uvyxx2ng6gosj4l43j7ftanxyliq5z7imbmptaucjm2c4pllbocspvk7ufrbtgfu4s23cruj/Demo.jpg",
                        "fileSizeHuman": "300 KB"
                      },
                      {
                        "fileCode": "f084i4iin8d8",
                        "fileName": "Demo.docx",
                        "viewerUrl": "https://send.now/f084i4iin8d8",
                        "downloadUrl": "https://u3143.send.now/d/uvywl2ng6gosj4l43j7ffd7l2b27nwip5utrsruu2fxb7neul2cwe2qx4jrrqzvmmz4j7wav/Demo.docx",
                        "fileSizeHuman": "7 KB"
                      },
                      {
                        "fileCode": "79oylhpuegca",
                        "fileName": "Demo.pdf",
                        "viewerUrl": "https://send.now/79oylhpuegca",
                        "downloadUrl": "https://u3143.send.now/d/uvywp2ng6gosj4l43j7ejev22eirxw3w6vowbjuyqwveoxwk2fezqjfnzfocsbkhwbmojami/Demo.pdf",
                        "fileSizeHuman": "22 KB"
                      },
                      {
                        "fileCode": "g8onnkygphbh",
                        "fileName": "Demo.mp3",
                        "viewerUrl": "https://send.now/g8onnkygphbh",
                        "downloadUrl": "https://u3143.send.now/d/uvywd2ng6gosj4l43j7efc5gqz5ielj6kftbmpkvulo7lixz2hmwocvxupry3fbgvrtl2jse/Demo.mp3",
                        "fileSizeHuman": "3.7 MB"
                      },
                      {
                        "fileCode": "e7k5bh3vd5sv",
                        "fileName": "Demo.zip",
                        "viewerUrl": "https://send.now/e7k5bh3vd5sv",
                        "downloadUrl": "https://dl8218.usercdn.com/d/rryw32ng6gosj4l43j7fhhnfqg64dn2ayvbrwmstuuyb6vaishvsibrhwtufiwonhq7g5emx/Demo.zip",
                        "fileSizeHuman": "20.1 MB"
                      },
                      {
                        "fileCode": "5s95bgvirrcy",
                        "fileName": "Password Protected.zip",
                        "viewerUrl": "https://send.now/5s95bgvirrcy",
                        "downloadUrl": "https://dl8218.usercdn.com/d/rryw72ng6gosj4l43j7alepcyp6xwng3fe5jhwu3yrlkvkuq5ng54mef2spnkb54kfxfwsmg/Password Protected.zip",
                        "fileSizeHuman": "210.3 MB"
                      }
                    ],
                    "fileCount": 7,
                    "folderName": ""
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/downloader:snapchat/download": {
      "get": {
        "operationId": "downloader_snapchat_download",
        "summary": "Download",
        "description": "Download media dari Snapchat.",
        "tags": [
          "Snapchat Downloader"
        ],
        "externalDocs": {
          "url": "https://zpi.web.id/api/downloader/snapchat#reference-download"
        },
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Snapchat media URL (video or post). Query params are fine.",
            "schema": {
              "type": "string",
              "example": "https://www.snapchat.com/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYenJ"
            }
          },
          {
            "name": "quality",
            "in": "query",
            "required": false,
            "description": "Max video quality — `max` = best available. Ignored when audioOnly=true.",
            "schema": {
              "type": "string",
              "enum": [
                "144",
                "240",
                "360",
                "480",
                "720",
                "1080",
                "max"
              ],
              "example": "1080"
            }
          },
          {
            "name": "audioOnly",
            "in": "query",
            "required": false,
            "description": "Set `true` to fetch audio only. Default `false` (video).",
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ],
              "example": "false"
            }
          },
          {
            "name": "audioFormat",
            "in": "query",
            "required": false,
            "description": "Audio container when audioOnly=true. Default mp3.",
            "schema": {
              "type": "string",
              "enum": [
                "mp3",
                "opus",
                "ogg",
                "wav"
              ],
              "example": "mp3"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                },
                "example": {
                  "status": "success",
                  "message": "Success",
                  "content": {
                    "ok": true,
                    "url": "https://cf-st.sc-cdn.net/d/cbG3RVBhvWG13HACSV1RM.1034.IRZXSOY?uc=46",
                    "type": "video",
                    "filename": "snapchat_W7_EDlXWTBiXAEEniNoMPwAAYamV1bm16YWd4AZGR5HVKAZGR5HU2AAAAAQ.mp4",
                    "provider": "snapchat",
                    "originalUrl": "https://www.snapchat.com/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYamV1bm16YWd4AZGR5HVKAZGR5HU2AAAAAQ"
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/downloader:threads/download": {
      "get": {
        "operationId": "downloader_threads_download",
        "summary": "Download",
        "description": "Download media (foto/video/carousel) dari URL post Threads.",
        "tags": [
          "Threads"
        ],
        "externalDocs": {
          "url": "https://zpi.web.id/api/downloader/threads#reference-download"
        },
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Threads post URL (threads.com / threads.net). Image, video and carousel supported.",
            "schema": {
              "type": "string",
              "example": "https://www.threads.com/@zuck/post/DaKI6_uHU3T"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                },
                "example": {
                  "status": "success",
                  "message": "Success",
                  "content": {
                    "pk": "3929992863355325907",
                    "url": "https://www.threads.com/@dans24_/post/DaKI6_uHU3T",
                    "code": "DaKI6_uHU3T",
                    "type": "carousel",
                    "count": 3,
                    "media": [
                      {
                        "pk": "3929991103301313916",
                        "code": "DaKIhYiuGV8",
                        "type": "image",
                        "image": "https://scontent-cgk2-1.cdninstagram.com/v/t51.82787-15/730695117_17975230353109359_3601795552815075606_n.webp?_nc_cat=103&ig_cache_key=MzkyOTk5MTEwMzMwMTMxMzkxNg%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNBUk9VU0VMX0lURU0ueHBpZHMuMjI5Ni5zZHIucmVndWxhcl9waG90by5DMyJ9&_nc_ohc=xIUH8A6Z3L8Q7kNvwFz-oOA&_nc_oc=Adp18OPF7gvnD6pfAI5fZb8Zy7r0J406JpN_4F_TwUJglblj3MnA8BE8EC04DTafcMA&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_ht=scontent-cgk2-1.cdninstagram.com&_nc_gid=_Qarltqy2u5Dm3RyA4UWKw&_nc_ss=7a22e&oh=00_Af8G5mboevN-nsFq5FdoMyS1XrnKrKuC3Ryidu5kqT7EIw&oe=6A485F66",
                        "video": null,
                        "width": 2296,
                        "height": 4080
                      },
                      {
                        "pk": "3929991104626701637",
                        "code": "DaKIhZxuDVF",
                        "type": "image",
                        "image": "https://scontent-cgk2-2.cdninstagram.com/v/t51.82787-15/731068021_17975230344109359_6060072929748116430_n.webp?_nc_cat=100&ig_cache_key=MzkyOTk5MTEwNDYyNjcwMTYzNw%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNBUk9VU0VMX0lURU0ueHBpZHMuMjI5Ni5zZHIucmVndWxhcl9waG90by5DMyJ9&_nc_ohc=Ks1jhiQ6YosQ7kNvwHmZAFH&_nc_oc=AdokeruDLz5IGSsWHJBU9RLspC77wuw3Y7bRt-no00Dl0Gslj1G6fnju2hWr0I8nuXE&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_ht=scontent-cgk2-2.cdninstagram.com&_nc_gid=_Qarltqy2u5Dm3RyA4UWKw&_nc_ss=7a22e&oh=00_Af9ismKyboLhu3jxjh9qdfOUTsY_dvoCbLhIz5m1yeLawQ&oe=6A4853AB",
                        "video": null,
                        "width": 2296,
                        "height": 4080
                      },
                      {
                        "pk": "3929991179525877477",
                        "code": "DaKIifiDu7l",
                        "type": "video",
                        "image": "https://scontent-cgk2-2.cdninstagram.com/v/t51.71878-15/730112080_1451799150048794_8333954212127261250_n.jpg?stp=dst-jpg_e15_tt6&_nc_cat=100&ig_cache_key=MzkyOTk5MTE3OTUyNTg3NzQ3Nw%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNBUk9VU0VMX0lURU0ueHBpZHMuNjQwLnNkci52aWRlb19kZWZhdWx0X2NvdmVyX2ZyYW1lLkMzIn0%3D&_nc_ohc=qB9N806WloAQ7kNvwGwgLQU&_nc_oc=AdpjlKG2gBe3bWnYMi5fugXeAVsJDWgtmu-1tgQVWq5Z3gmqKJVnKizrKG2AwxOmQkk&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_ht=scontent-cgk2-2.cdninstagram.com&_nc_gid=_Qarltqy2u5Dm3RyA4UWKw&_nc_ss=7a22e&oh=00_Af8r9CdC_L_fDpPbmaCO10oRs08ypw9iegccA4oqz-su3w&oe=6A4863C1",
                        "video": "https://scontent-cgk1-2.cdninstagram.com/o1/v/t16/f2/m84/AQNAR3w8HLwzbH4T2XmSasMY_cUZ0Q2eqwfNgYxMjd5CPJZCfDHB0eFSdE7xtJCxt7PS32t97ob8FUY40UrIVk_A5hg5y7AbceQWTE8.mp4?_nc_cat=111&_nc_sid=5e9851&_nc_ht=scontent-cgk1-2.cdninstagram.com&_nc_ohc=CQ_uXoWd-cgQ7kNvwGV7nE-&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5JTlNUQUdSQU0uQ0FST1VTRUxfSVRFTS5DMy43MjAuZGFzaF9iYXNlbGluZV8xX3YxIiwieHB2X2Fzc2V0X2lkIjoxNzk3NTIzMDQwNzEwOTM1OSwiYXNzZXRfYWdlX2RheXMiOjAsInZpX3VzZWNhc2VfaWQiOjEwMTY0LCJkdXJhdGlvbl9zIjoxNSwidXJsZ2VuX3NvdXJjZSI6Ind3dyJ9&ccb=17-1&vs=f28c6f5c63d9cf88&_nc_vs=HBksFQIYTGlnX2JhY2tmaWxsX3RpbWVsaW5lX3ZvZC81QzRENkVGODVBODEzQ0FENEI3N0JBQjU5ODA4MzE5NF92aWRlb19kYXNoaW5pdC5tcDQVAALIARIAFQIYUWlnX3hwdl9wbGFjZW1lbnRfcGVybWFuZW50X3YyL0IwNDdBMDcxRjgzMzFCNzQxRjY5NTEwNjlFRDg1ODgyX2F1ZGlvX2Rhc2hpbml0Lm1wNBUCAsgBEgAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACbeq9_yjpjuPxUCKAJDMywXQC652yLQ5WAYEmRhc2hfYmFzZWxpbmVfMV92MREAde4HZeieAQA&_nc_gid=_Qarltqy2u5Dm3RyA4UWKw&_nc_zt=28&_nc_ss=7a22e&oh=00_Af8yKECGj4FkfKe9speYqSbY8qxK-6tIkk4VdfWj-cj18A&oe=6A4471FD",
                        "width": 640,
                        "height": 1136
                      }
                    ],
                    "author": {
                      "avatar": "https://scontent-cgk2-1.cdninstagram.com/v/t51.2885-19/379108318_1465226674019394_3807620004504065825_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=scontent-cgk2-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2gE_2CBwqdsWLrsijoDYEQaV7CE719kPmALYHlhT9bsv3_HMoF0EAKO_gq8ZL_cgljU&_nc_ohc=ixV0srzrgEIQ7kNvwF8xpws&_nc_gid=_Qarltqy2u5Dm3RyA4UWKw&edm=APs17CUBAAAA&ccb=7-5&oh=00_Af8oloaWtmh0muZpWj-ERkACs_RyTzdtVcE51Ao1eQfH9g&oe=6A4874E8&_nc_sid=10d13b",
                      "fullName": "ardann",
                      "username": "dans24_",
                      "isVerified": false
                    },
                    "caption": "Siang2 dibikin panik sama complain customer, udah deg2an pas buka chatnya \"OALAAHHH COOOKK SI OYEN\" 😭😂",
                    "takenAt": 1782711678,
                    "likeCount": 5813,
                    "isCarousel": true,
                    "takenAtIso": "2026-06-29T05:41:18.000Z"
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/downloader:tumblr/download": {
      "get": {
        "operationId": "downloader_tumblr_download",
        "summary": "Download",
        "description": "Download media dari Tumblr.",
        "tags": [
          "Tumblr Downloader"
        ],
        "externalDocs": {
          "url": "https://zpi.web.id/api/downloader/tumblr#reference-download"
        },
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Tumblr media URL (video or post). Query params are fine.",
            "schema": {
              "type": "string",
              "example": "https://animationdesk.tumblr.com/post/190775859037"
            }
          },
          {
            "name": "quality",
            "in": "query",
            "required": false,
            "description": "Max video quality — `max` = best available. Ignored when audioOnly=true.",
            "schema": {
              "type": "string",
              "enum": [
                "144",
                "240",
                "360",
                "480",
                "720",
                "1080",
                "max"
              ],
              "example": "1080"
            }
          },
          {
            "name": "audioOnly",
            "in": "query",
            "required": false,
            "description": "Set `true` to fetch audio only. Default `false` (video).",
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ],
              "example": "false"
            }
          },
          {
            "name": "audioFormat",
            "in": "query",
            "required": false,
            "description": "Audio container when audioOnly=true. Default mp3.",
            "schema": {
              "type": "string",
              "enum": [
                "mp3",
                "opus",
                "ogg",
                "wav"
              ],
              "example": "mp3"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                },
                "example": {
                  "status": "success",
                  "message": "Success",
                  "content": {
                    "ok": true,
                    "url": "https://va.media.tumblr.com/tumblr_nmpxmpTMlb1r0094t.mp4",
                    "type": "video",
                    "filename": "tumblr_190775859037.mp4",
                    "provider": "tumblr",
                    "originalUrl": "https://animationdesk.tumblr.com/post/190775859037"
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/downloader:twitter/download": {
      "get": {
        "operationId": "downloader_twitter_download",
        "summary": "Download",
        "description": "Download media dari Twitter / X.",
        "tags": [
          "Twitter / X Downloader"
        ],
        "externalDocs": {
          "url": "https://zpi.web.id/api/downloader/twitter#reference-download"
        },
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Twitter / X media URL (video or post). Query params are fine.",
            "schema": {
              "type": "string",
              "example": "https://x.com/SpaceX/status/1732824684683784516"
            }
          },
          {
            "name": "quality",
            "in": "query",
            "required": false,
            "description": "Max video quality — `max` = best available. Ignored when audioOnly=true.",
            "schema": {
              "type": "string",
              "enum": [
                "144",
                "240",
                "360",
                "480",
                "720",
                "1080",
                "max"
              ],
              "example": "1080"
            }
          },
          {
            "name": "audioOnly",
            "in": "query",
            "required": false,
            "description": "Set `true` to fetch audio only. Default `false` (video).",
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ],
              "example": "false"
            }
          },
          {
            "name": "audioFormat",
            "in": "query",
            "required": false,
            "description": "Audio container when audioOnly=true. Default mp3.",
            "schema": {
              "type": "string",
              "enum": [
                "mp3",
                "opus",
                "ogg",
                "wav"
              ],
              "example": "mp3"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                },
                "example": {
                  "status": "success",
                  "message": "Success",
                  "content": {
                    "ok": true,
                    "url": "https://video.twimg.com/ext_tw_video/1732820284301058052/pu/vid/avc1/1920x1080/K2NITCly19drRgED.mp4",
                    "type": "video",
                    "filename": "twitter_1732824684683784516.mp4",
                    "provider": "twitter",
                    "originalUrl": "https://x.com/SpaceX/status/1732824684683784516"
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/downloader:vk/download": {
      "get": {
        "operationId": "downloader_vk_download",
        "summary": "Download",
        "description": "Download media dari VK.",
        "tags": [
          "VK Downloader"
        ],
        "externalDocs": {
          "url": "https://zpi.web.id/api/downloader/vk#reference-download"
        },
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "VK media URL (video or post). Query params are fine.",
            "schema": {
              "type": "string",
              "example": "https://vk.com/video-22822305_456241864"
            }
          },
          {
            "name": "quality",
            "in": "query",
            "required": false,
            "description": "Max video quality — `max` = best available. Ignored when audioOnly=true.",
            "schema": {
              "type": "string",
              "enum": [
                "144",
                "240",
                "360",
                "480",
                "720",
                "1080",
                "max"
              ],
              "example": "1080"
            }
          },
          {
            "name": "audioOnly",
            "in": "query",
            "required": false,
            "description": "Set `true` to fetch audio only. Default `false` (video).",
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ],
              "example": "false"
            }
          },
          {
            "name": "audioFormat",
            "in": "query",
            "required": false,
            "description": "Audio container when audioOnly=true. Default mp3.",
            "schema": {
              "type": "string",
              "enum": [
                "mp3",
                "opus",
                "ogg",
                "wav"
              ],
              "example": "mp3"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                },
                "example": {
                  "status": "success",
                  "message": "Success",
                  "content": {
                    "ok": true,
                    "url": "https://cbt.zpi.web.id/tunnel?id=83cw82eT4fWR4f-TnX9-p&exp=1782046359506&sig=vKkmfm6NyofDj06uY_0JHtrtE22xlyseX6xMbZWs10c&sec=MPrhmpH8m1ur5pGODSDg1lj5RRFWIr6HTFbHemuHE7g&iv=BcftIkJCA1S0zZl6RHfj-A",
                    "type": "video",
                    "filename": "VK Звонки (1080p).mp4",
                    "provider": "vk",
                    "originalUrl": "https://vk.com/video-22822305_456241864"
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/downloader:youtube/download": {
      "get": {
        "operationId": "downloader_youtube_download",
        "summary": "Download",
        "description": "Download media dari YouTube.",
        "tags": [
          "YouTube Downloader"
        ],
        "externalDocs": {
          "url": "https://zpi.web.id/api/downloader/youtube#reference-download"
        },
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "YouTube media URL (video or post). Query params are fine.",
            "schema": {
              "type": "string",
              "example": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
            }
          },
          {
            "name": "quality",
            "in": "query",
            "required": false,
            "description": "Max video quality — `max` = best available. Ignored when audioOnly=true.",
            "schema": {
              "type": "string",
              "enum": [
                "144",
                "240",
                "360",
                "480",
                "720",
                "1080",
                "max"
              ],
              "example": "1080"
            }
          },
          {
            "name": "audioOnly",
            "in": "query",
            "required": false,
            "description": "Set `true` to fetch audio only. Default `false` (video).",
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ],
              "example": "false"
            }
          },
          {
            "name": "audioFormat",
            "in": "query",
            "required": false,
            "description": "Audio container when audioOnly=true. Default mp3.",
            "schema": {
              "type": "string",
              "enum": [
                "mp3",
                "opus",
                "ogg",
                "wav"
              ],
              "example": "mp3"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                },
                "example": {
                  "status": "success",
                  "message": "Success",
                  "content": {
                    "ok": true,
                    "url": "https://cbt.zpi.web.id/tunnel?id=y-P2cCDN_hF6zS4a00vt6&exp=1780841297533&sig=x3g8WJXSELziFWWLiD4sGq2jtq6JCbcv3X-sQ7N8B0Y&sec=Jcpn4xBFKNTcpX4RQwI1ttYbFKbbPwiJmkZKl-dIQ_4&iv=OGshggWPx11q-BL4xwu7Rw",
                    "type": "audio",
                    "filename": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster) - Rick Astley.mp3",
                    "provider": "youtube",
                    "originalUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    }
  }
}