Skip to content

OAuth authentication broken - Ring has migrated to new /oauth/v2 endpoint #1717

@ksand012

Description

@ksand012

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/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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions