{"record":{"id":"e8d7732c610e20cb","repo":"ytdl-org/youtube-dl","slug":"this-video-is-protected-by-a-password-use-the-v","errorCode":null,"errorMessage":"This video is protected by a password, use the --video-password option","messagePattern":"This video is protected by a password, use the --video-password option","errorType":"exception","errorClass":"ExtractorError","httpStatus":null,"severity":"error","filePath":"youtube_dl/extractor/vimeo.py","lineNumber":79,"sourceCode":"        self._set_vimeo_cookie('vuid', vuid)\n        try:\n            self._download_webpage(\n                self._LOGIN_URL, None, 'Logging in',\n                data=urlencode_postdata(data), headers={\n                    'Content-Type': 'application/x-www-form-urlencoded',\n                    'Referer': self._LOGIN_URL,\n                })\n        except ExtractorError as e:\n            if isinstance(e.cause, compat_HTTPError) and e.cause.code == 418:\n                raise ExtractorError(\n                    'Unable to log in: bad username or password',\n                    expected=True)\n            raise ExtractorError('Unable to log in')\n\n    def _get_video_password(self):\n        password = self._downloader.params.get('videopassword')\n        if password is None:\n            raise ExtractorError(\n                'This video is protected by a password, use the --video-password option',\n                expected=True)\n        return password\n\n    def _verify_video_password(self, url, video_id, password, token, vuid):\n        if url.startswith('http://'):\n            # vimeo only supports https now, but the user can give an http url\n            url = url.replace('http://', 'https://')\n        self._set_vimeo_cookie('vuid', vuid)\n        return self._download_webpage(\n            url + '/password', video_id, 'Verifying the password',\n            'Wrong password', data=urlencode_postdata({\n                'password': password,\n                'token': token,\n            }), headers={\n                'Content-Type': 'application/x-www-form-urlencoded',\n                'Referer': url,\n            })","sourceCodeStart":61,"sourceCodeEnd":97,"githubUrl":"https://github.com/ytdl-org/youtube-dl/blob/956b8c585591b401a543e409accb163eeaaa1193/youtube_dl/extractor/vimeo.py#L61-L97","documentation":"Raised by VimeoBaseInfoExtractor._get_video_password when the target video presents a password form but the caller supplied no --video-password / videopassword param. It is a configuration precondition: the video is private-but-link-accessible and Vimeo requires the per-video password before serving data. expected=True.","triggerScenarios":"Extracting a Vimeo URL whose page contains the pw_form / password check while self._downloader.params.get('videopassword') is None — i.e. forgot the option in CLI or API params.","commonSituations":"Event recordings, client-review uploads, and paid-course videos shared with a password; batch scripts not passing --video-password; API users omitting 'videopassword' in params.","solutions":["Supply the password: --video-password SECRET on the CLI, or {'videopassword': '...'} in params for API use.","If the password is correct but you still fail later, see the 'Wrong video password' error (check-password returning false).","Store passwords out of shell history (prompt or netrc-style secret files) when scripting.","For embed URLs, the password check goes through _verify_player_video_password — same param name applies."],"exampleFix":"# before\nyoutube_dl 'https://vimeo.com/12345678'\n# after\nyoutube_dl --video-password 'hunter2' 'https://vimeo.com/12345678'","handlingStrategy":"validation","validationCode":"params = ydl.params\nif needs_password_check(url) and not params.get('videopassword'):\n    fail_fast('this video is password-protected: pass --video-password before extracting')","typeGuard":null,"tryCatchPattern":"try:\n    ydl.extract_info(url)\nexcept ExtractorError as e:\n    if e.expected and '--video-password' in str(e):\n        prompt_and_set_video_password_then_retry_once()\n    else:\n        raise","preventionTips":["Collect per-video passwords alongside URL lists in job configuration.","Prompt for the video password up front when you know the target is protected.","Distinguish the video password from the account password in tooling."],"tags":["vimeo","password","configuration","private-video"],"backgroundTag":null,"analyzedSha":"956b8c585591b401a543e409accb163eeaaa1193","analyzedAt":"2026-08-14T18:59:47.863Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}