{"record":{"id":"0b19eae3c5d7f0a8","repo":"ytdl-org/youtube-dl","slug":"wrong-password","errorCode":null,"errorMessage":"Wrong password","messagePattern":"Wrong password","errorType":"exception","errorClass":"ExtractorError","httpStatus":401,"severity":"error","filePath":"youtube_dl/extractor/vimeo.py","lineNumber":1012,"sourceCode":"        if try_get(album, lambda x: x['privacy']['view']) == 'password':\n            password = self._downloader.params.get('videopassword')\n            if not password:\n                raise ExtractorError(\n                    'This album is protected by a password, use the --video-password option',\n                    expected=True)\n            self._set_vimeo_cookie('vuid', viewer['vuid'])\n            try:\n                hashed_pass = self._download_json(\n                    'https://vimeo.com/showcase/%s/auth' % album_id,\n                    album_id, 'Verifying the password', data=urlencode_postdata({\n                        'password': password,\n                        'token': viewer['xsrft'],\n                    }), headers={\n                        'X-Requested-With': 'XMLHttpRequest',\n                    })['hashed_pass']\n            except ExtractorError as e:\n                if isinstance(e.cause, compat_HTTPError) and e.cause.code == 401:\n                    raise ExtractorError('Wrong password', expected=True)\n                raise\n        entries = OnDemandPagedList(functools.partial(\n            self._fetch_page, album_id, jwt, hashed_pass), self._PAGE_SIZE)\n        return self.playlist_result(\n            entries, album_id, album.get('name'), album.get('description'))\n\n\nclass VimeoGroupsIE(VimeoChannelIE):\n    IE_NAME = 'vimeo:group'\n    _VALID_URL = r'https://vimeo\\.com/groups/(?P<id>[^/]+)(?:/(?!videos?/\\d+)|$)'\n    _TESTS = [{\n        'url': 'https://vimeo.com/groups/kattykay',\n        'info_dict': {\n            'id': 'kattykay',\n            'title': 'Katty Kay',\n        },\n        'playlist_mincount': 27,\n    }]","sourceCodeStart":994,"sourceCodeEnd":1030,"githubUrl":"https://github.com/ytdl-org/youtube-dl/blob/956b8c585591b401a543e409accb163eeaaa1193/youtube_dl/extractor/vimeo.py#L994-L1030","documentation":"Raised by VimeoAlbumIE after the showcase auth endpoint (vimeo.com/showcase/<id>/auth) returns HTTP 401 during password verification. The extractor POSTs the supplied password plus the xsrft token and interprets any 401 as a rejected credential. It is expected=True so it surfaces as a clean user error.","triggerScenarios":"POSTing a wrong --video-password to https://vimeo.com/showcase/<id>/auth with X-Requested-With: XMLHttpRequest, causing the wrapped compat_HTTPError with code 401 to be converted to 'Wrong password'.","commonSituations":"Typo in the password; the password was rotated by the album owner; copying a password with trailing whitespace/newline from a shared document.","solutions":["Double-check and re-enter the correct --video-password value","Confirm the password in a browser by logging into the showcase page manually, then retry","Update to a recent youtube-dl/yt-dlp in case Vimeo changed the auth handshake"],"exampleFix":"# before\nyoutube-dl --video-password hunter2 https://vimeo.com/album/12345\n# after (use the real showcase password)\nyoutube-dl --video-password 'C0rr3ct-P4ss' https://vimeo.com/album/12345","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"from youtube_dl.utils import ExtractorError\ntry:\n    ydl.extract_info(album_url)\nexcept ExtractorError as e:\n    if 'Wrong password' in str(e):\n        # re-prompt, do not loop blindly\n        opts['videopassword'] = prompt_new_password()\n        raise  # or retry once with new YoutubeDL(opts)","preventionTips":["Strip whitespace from passwords pasted from documents","Verify the password in a browser before scripting the download","Retry at most once per corrected password to avoid account lockouts"],"tags":["vimeo","password","http-401","authentication"],"backgroundTag":null,"analyzedSha":"956b8c585591b401a543e409accb163eeaaa1193","analyzedAt":"2026-08-14T18:59:47.863Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}