Skip to content

[vimeo] Failed to fetch macos OAuth token: HTTP Error 401: Unauthorized — no anonymous client works #17271

Description

@PawmelMeller

Checklist

  • I'm reporting that yt-dlp is broken on a supported site
  • I've verified that I'm running yt-dlp version 2026.07.04 (update using -U)
  • I've checked that all provided URLs are alive and playable in a browser
  • I've checked that all URLs and arguments with special characters are properly quoted or escaped
  • I've searched the bugtracker for similar issues including closed ones

Description

The vimeo extractor's macos client is failing to fetch a fresh OAuth token with a 401 Unauthorized error. This breaks anonymous (non-logged-in) extraction entirely, because none of the other clients can substitute for it:

  • android and ios clients are CACHE_ONLY — they raise "unable to fetch new OAuth tokens and is only intended for use with previously cached tokens" and cannot bootstrap a token on their own.
  • web client requires login (REQUIRES_AUTH) and raises "The web client only works when logged-in" without cookies/credentials.
  • macos was the only client able to fetch a fresh OAuth token anonymously — it is now returning 401.

Net effect: there is currently no working path to extract a public Vimeo video without providing account cookies/credentials.

Reproduced independently (not tied to one server/IP): fails the same way from a clean --rm-cache-dir on a residential connection, and also observed from our CI runner (different IP/ASN), on both yt-dlp 2026.06.09 and 2026.07.04.

Reproduction

yt-dlp --rm-cache-dir
yt-dlp -F "https://vimeo.com/76979871" -v

Verbose output (macos client, default)

[debug] Command-line config: ['-F', 'https://vimeo.com/76979871', '-v']
[debug] yt-dlp version stable@2026.06.09 from yt-dlp/yt-dlp [821bef0f0] (pip)
[vimeo] Extracting URL: https://vimeo.com/76979871
[vimeo] 76979871: Downloading webpage
[vimeo] Fetching macos OAuth token
ERROR: [vimeo] 76979871: Failed to fetch macos OAuth token: HTTP Error 401: Unauthorized (caused by <HTTPError 401: Unauthorized>)
    'Authorization': self._fetch_oauth_token(client),
  File "yt_dlp/extractor/vimeo.py", line 386, in _fetch_oauth_token
    self._oauth_tokens[cache_key] = self._download_json(
yt_dlp.networking.exceptions.HTTPError: HTTP Error 401: Unauthorized

Fallback clients also fail (confirming there is no working path)

android (--extractor-args "vimeo:client=android"):

ERROR: [vimeo] 76979871: The android client is unable to fetch new OAuth tokens and is only intended for use with previously cached tokens

ios (--extractor-args "vimeo:client=ios"):

ERROR: [vimeo] 76979871: The ios client is unable to fetch new OAuth tokens and is only intended for use with previously cached tokens

web (--extractor-args "vimeo:client=web"):

ERROR: [vimeo] 76979871: The web client only works when logged-in. Use --cookies, --cookies-from-browser, --username and --password, --netrc-cmd, or --netrc (vimeo) to provide account credentials.

First observed

2026-07-20, via an automated hourly health-check hitting a public Vimeo test URL (video id 76979871), previously passing consistently.

Expected

The extractor should be able to fetch a fresh OAuth token anonymously via at least one client (as macos did previously), enabling extraction of public, non-login-required Vimeo videos.

Metadata

Metadata

Assignees

No one assigned

    Labels

    ai-policy-violationThe contribution is in violation of the project's AI / LLM policyduplicateThis issue or pull request already existssite:vimeo

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions