Is there an existing issue for this?
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/token to /oauth/v2/signin
- Content-Type changed from
application/json to application/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/token endpoint 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 Acceptable
Screenshots
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
Is there an existing issue for this?
Describe The Bug
Summary
As of approximately February 23rd, 2026 around noon PST, all authentication attempts fail with a
406 Not Acceptablefrom Cloudflare. This affects both initial login and refresh token renewal.Environment
Current behavior
All requests to
https://oauth.ring.com/oauth/tokenreturn:Root cause
Ring has migrated their OAuth flow to new
/oauth/v2endpoints. Captured via browser HAR, the new flow is:Step 1: Grab CSRF Token
Parse
csrf-tokenfrom<script id="oauth-args">Step 2: Sign in
Step 3: 2FA verification
Step 4: Authorization
Returns a
302redirect that callshttps://ring.com/users/sign_in/end.Step 5: Callback Code
You receive a
https://ring.com/users/sign_in/callbackresponse that contains auth token.Key differences from old flow
/oauth/tokento/oauth/v2/signinapplication/jsontoapplication/x-www-form-urlencoded/oauth/tokenendpoint now returns 406 for both password grant AND refresh token grantImpact
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