yt-dlp/yt-dlp · error · ExtractorError
Could not decrypt data: {e}
Error message
Could not decrypt data: {e} What it means
Error "Could not decrypt data: {e}" thrown in yt-dlp/yt-dlp.
Source
Thrown at yt_dlp/extractor/wrestleuniverse.py:138
headers['Authorization'] = f'Bearer {self._TOKEN}'
return self._download_json(
f'https://{self._API_HOST}/v1/{self._API_PATH}/{video_id}{param}', video_id,
note=f'Downloading {msg} JSON', errnote=f'Failed to download {msg} JSON',
data=data, headers=headers, query=query, fatal=fatal)
def _call_encrypted_api(self, video_id, param='', msg='API', data={}, query={}, fatal=True):
if not Cryptodome.RSA:
raise ExtractorError('pycryptodomex not found. Please install', expected=True)
private_key = Cryptodome.RSA.generate(2048)
cipher = Cryptodome.PKCS1_OAEP.new(private_key, hashAlgo=Cryptodome.SHA1)
def decrypt(data):
if not data:
return None
try:
return cipher.decrypt(base64.b64decode(data)).decode()
except (ValueError, binascii.Error) as e:
raise ExtractorError(f'Could not decrypt data: {e}')
token = base64.b64encode(private_key.public_key().export_key('DER')).decode()
api_json = self._call_api(video_id, param, msg, data={
'deviceId': self._DEVICE_ID,
'token': token,
**data,
}, query=query, fatal=fatal)
return api_json, decrypt
def _download_metadata(self, url, video_id, lang, props_keys):
metadata = self._call_api(video_id, msg='metadata', query={'al': lang or 'ja'}, auth=False, fatal=False)
if not metadata:
webpage = self._download_webpage(url, video_id)
nextjs_data = self._search_nextjs_data(webpage, video_id, fatal=False)
metadata = traverse_obj(nextjs_data, (
'props', 'pageProps', *variadic(props_keys, (str, bytes, dict, set)), {dict})) or {}
return metadata
View on GitHub (pinned to 81ecd58b13)
Solutions
- Re-export fresh cookies; the decryption key may be tied to your session
- Update yt-dlp if the site changed its encryption scheme
- Report the error with verbose logs if it persists
When it happens
Trigger: AES decryption of the Wrestle Universe API response fails, usually due to an invalid/expired key or a changed encryption scheme.
Common situations: See trigger scenarios.
AI-assisted analysis of yt-dlp/yt-dlp@81ecd58b13 (2026-08-22).
Data as JSON: /api/errors/0cebe4ff05586eaa.
Report an issue: GitHub.