binary-husky/gpt_academic · error · Exception

Authentication failed. You have not been accepted into the b

Error message

Authentication failed. You have not been accepted into the beta.

What it means

Synchronous conversation-creation variant: the HTTP call succeeded (or the fallback was used) but response.json() raised JSONDecodeError (or NotAllowedToAccess), meaning the endpoint returned HTML/an error page instead of the conversation JSON. edge_gpt_free wraps this as 'Authentication failed. You have not been accepted into the beta.'

Source

Thrown at request_llms/edge_gpt_free.py:345

                self.session.cookies.set(cookie["name"], cookie["value"])
        # Send GET request
        response = self.session.get(
            url=os.environ.get("BING_PROXY_URL")
            or "https://edgeservices.bing.com/edgesvc/turing/conversation/create",
        )
        if response.status_code != 200:
            response = self.session.get(
                "https://edge.churchless.tech/edgesvc/turing/conversation/create",
            )
        if response.status_code != 200:
            print(f"Status code: {response.status_code}")
            print(response.text)
            print(response.url)
            raise Exception("Authentication failed")
        try:
            self.struct = response.json()
        except (json.decoder.JSONDecodeError, NotAllowedToAccess) as exc:
            raise Exception(
                "Authentication failed. You have not been accepted into the beta.",
            ) from exc
        if self.struct["result"]["value"] == "UnauthorizedRequest":
            raise NotAllowedToAccess(self.struct["result"]["message"])

    @staticmethod
    async def create(
        proxy=None,
        cookies=None,
    ):
        self = _Conversation(async_mode=True)
        self.struct = {
            "conversationId": None,
            "clientId": None,
            "conversationSignature": None,
            "result": {"value": "Success", "message": None},
        }
        self.proxy = proxy

View on GitHub (pinned to d6bde0fa54)

Solutions

  1. Inspect the printed response text — HTML indicates a consent/captcha/region page; act accordingly (fresh cookies from an enrolled browser session)
  2. Regenerate NEWBING_COOKIES from an Edge browser where Copilot works, then retry
  3. Route through a residential/clean egress IP or a working BING_PROXY_URL
  4. If the API surface changed, update the pinned edge_gpt_free client or migrate to an official API-backed bridge
Defensive patterns

Strategy: try-catch

Validate before calling

import json, requests
r = requests.get('https://edgeservices.bing.com/edgesvc/turing/conversation/create', cookies=cookies, timeout=10)
try:
    r.json()
    json_ok = True
except ValueError:
    json_ok = False  # HTML gate page -> this error will follow
print('endpoint returns JSON:', json_ok)

Try / catch

try:
    convo = _Conversation(...)
except Exception as e:
    if 'not been accepted into the beta' in str(e):
        cookies = harvest_fresh_edge_cookies()  # enroll + export cookie jar
        convo = _Conversation(..., cookies=cookies)
    else:
        raise

Prevention

When it happens

Trigger: request_llms/edge_gpt_free.py:345: conversation/create responds 200-family or redirects to an HTML consent/block page (e.g. Bing challenge, region gate), so parsing JSON fails. Common when the account/cookie is not enrolled in the Copilot beta or Bing serves a captcha page.

Common situations: Cookies from a browser not signed into Copilot; datacenter IP served an interstitial; churchless fallback proxy returning an HTML error page; endpoint schema changed after a Bing update breaking this free client.

Understand the failure class

Related errors


AI-assisted analysis of binary-husky/gpt_academic@d6bde0fa54 (2026-08-14). Data as JSON: /api/errors/1a6fdeaaeefe2164. Report an issue: GitHub.