{"record":{"id":"d7fbb3ee54ba4fb3","repo":"ytdl-org/youtube-dl","slug":"this-clip-is-no-longer-available","errorCode":null,"errorMessage":"This clip is no longer available","messagePattern":"This clip is no longer available","errorType":"exception","errorClass":"ExtractorError","httpStatus":null,"severity":"error","filePath":"youtube_dl/extractor/twitch.py","lineNumber":907,"sourceCode":"    }, {\n        'url': 'https://go.twitch.tv/rossbroadcast/clip/ConfidentBraveHumanChefFrank',\n        'only_matching': True,\n    }]\n\n    def _real_extract(self, url):\n        video_id = self._match_id(url)\n\n        clip = self._download_gql(\n            video_id, [{\n                'operationName': 'VideoAccessToken_Clip',\n                'variables': {\n                    'slug': video_id,\n                },\n            }],\n            'Downloading clip access token GraphQL')[0]['data']['clip']\n\n        if not clip:\n            raise ExtractorError(\n                'This clip is no longer available', expected=True)\n\n        access_query = {\n            'sig': clip['playbackAccessToken']['signature'],\n            'token': clip['playbackAccessToken']['value'],\n        }\n\n        data = self._download_base_gql(\n            video_id, {\n                'query': '''{\n  clip(slug: \"%s\") {\n    broadcaster {\n      displayName\n    }\n    createdAt\n    curator {\n      displayName\n      id","sourceCodeStart":889,"sourceCodeEnd":925,"githubUrl":"https://github.com/ytdl-org/youtube-dl/blob/956b8c585591b401a543e409accb163eeaaa1193/youtube_dl/extractor/twitch.py#L889-L925","documentation":"Raised by TwitchClipsIE when the VideoAccessToken_Clip GraphQL query returns an empty/null clip object, meaning the slug no longer resolves to a clip. Expected error: clips are user-deletable and clips of deleted VODs also disappear.","triggerScenarios":"Extracting a clips.twitch.tv/<slug> URL where gql data.clip is falsy — clip deleted by its creator, clip removed with the source VOD, or the slug is mistyped.","commonSituations":"Old clip links shared in chat/articles whose authors deleted them, clips of banned channels, truncated slugs from copy-paste.","solutions":["Open the clip URL in a browser to confirm it is gone.","Search the clip title on Twitch or YouTube for a mirror/re-upload.","Double-check the slug for copy-paste truncation.","Extract the parent VOD (if still alive) and cut the interval manually."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":"def clip_alive(data: dict) -> bool:\n    return bool(data.get('clip'))","tryCatchPattern":"try:\n    ydl.extract_info(clip_url)\nexcept ExtractorError as e:\n    if 'no longer available' in str(e):\n        mark_clip_dead(slug)\n    else:\n        raise","preventionTips":["Download clips promptly; they vanish with creator deletions and source-VOD removal.","Validate clip slugs (exact case and length) before batch runs."],"tags":["twitch","clips","not-found","availability"],"backgroundTag":null,"analyzedSha":"956b8c585591b401a543e409accb163eeaaa1193","analyzedAt":"2026-08-14T18:59:47.863Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}