-
-
Notifications
You must be signed in to change notification settings - Fork 192
Description
Is there an existing issue for this?
- I have searched the existing issues
Describe The Bug
Summary
As of approximately February 23rd, 2026 around noon PST, all authentication attempts fail with a 406 Not Acceptable from Cloudflare. This affects both initial login and refresh token renewal.
Environment
- ring-client-api: latest
- ring-mqtt HA addon
- Home Assistant OS
Current behavior
All requests to https://oauth.ring.com/oauth/token return:
Status: 406 Not Acceptable
Content-Type: text/plain
Body: 406 Not Acceptable
Root cause
Ring has migrated their OAuth flow to new /oauth/v2 endpoints. Captured via browser HAR, the new flow is:
Step 1: Grab CSRF Token
GET https://oauth.ring.com/oauth/v2/signin
Parse csrf-token from <script id="oauth-args">
Step 2: Sign in
POST https://oauth.ring.com/oauth/v2/signin
Content-Type: application/x-www-form-urlencoded
username=<email>&password=<password>&csrf-token=<token>
Step 3: 2FA verification
POST https://oauth.ring.com/oauth/v2/2fa/verify
Content-Type: application/x-www-form-urlencoded
2fa_code=<code>&csrf-token=<token>&remember_me=false
Step 4: Authorization
GET https://oauth.ring.com/oauth/v2/authorize
Returns a 302 redirect that calls https://ring.com/users/sign_in/end.
Step 5: Callback Code
You receive a https://ring.com/users/sign_in/callback response that contains auth token.
Key differences from old flow
- Endpoint changed from
/oauth/tokento/oauth/v2/signin - Content-Type changed from
application/jsontoapplication/x-www-form-urlencoded - Now requires a CSRF token obtained from the signin page before authenticating
- Multi-step flow instead of single POST
- The old
/oauth/tokenendpoint now returns 406 for both password grant AND refresh token grant
Impact
- New token generation is completely broken
- Existing refresh token renewal is also broken since it also hits the old endpoint
- All ring-client-api users are affected
To Reproduce
Try using the existing oauth system to login and you will receive an error message.
Expected behavior
The system should let you login, enter your 2FA code, and display an auth token.
Relevant log output
Status: 406
URL: https://oauth.ring.com/oauth/token
Headers: {
"cf-cache-status": "DYNAMIC",
"connection": "keep-alive",
"content-length": "20",
"content-type": "text/plain; charset=utf-8",
"server": "cloudflare",
"x-content-type-options": "nosniff"
}
Body: 406 Not AcceptableScreenshots
No response
Additional context
No response
OS
Windows
Node.js Version
v24.14.0
NPM Version
v11.9.0
ring-client-api
v14.3.0
Operating System
Windows