{"record":{"id":"bd08903d8be02807","repo":"xtekky/gpt4free","slug":"cannot-create-glm-chat-session-status-response-s","errorCode":null,"errorMessage":"Cannot create GLM chat session (status {response.status})","messagePattern":"Cannot create GLM chat session \\(status (.+?)\\)","errorType":"exception","errorClass":"ProviderException","httpStatus":null,"severity":"error","filePath":"g4f/Provider/glm/__init__.py","lineNumber":328,"sourceCode":"                \"enable_thinking\": \"glm-5\" in model or \"glm-4\" in model,\n                \"reasoning_effort\": \"max\" if \"glm-5\" in model else \"\",\n                \"auto_web_search\": False,\n                \"message_version\": 1,\n                \"extra\": {},\n                \"timestamp\": int(time.time() * 1000),\n                \"type\": \"default\",\n            }\n        }\n        async with session.post(\n            f\"{GLM_BASE_URL}/api/v1/chats/new\",\n            json=chat_body,\n            headers={\n                \"Authorization\": f\"Bearer {cls.api_key}\",\n                \"Content-Type\": \"application/json\",\n            },\n        ) as response:\n            if response.status >= 400:\n                raise ProviderException(\n                    f\"Cannot create GLM chat session (status {response.status})\"\n                )\n            chat_data = await response.json()\n            return chat_data.get(\"id\") or chat_data.get(\"chat\", {}).get(\"id\") or chat_id\n\n    # ── Captcha ─────────────────────────────────────────────────────────────\n\n    @classmethod\n    async def _get_captcha_verify_param(cls) -> str:\n        \"\"\"Resolve a captcha_verify_param, falling back to an empty string when\n        the browser-based solver is unavailable (e.g. zendriver not installed).\"\"\"\n        if not captcha_solver_available():\n            return \"\"\n        return await get_captcha_verify_param()\n\n    # ── Main entry point (pipeline.ts: proxyViaGlmWebChat) ──────────────────\n\n    @classmethod","sourceCodeStart":310,"sourceCodeEnd":346,"githubUrl":"https://github.com/xtekky/gpt4free/blob/973504e1770928ed5fb82f43da528f441ad9ddc3/g4f/Provider/glm/__init__.py#L310-L346","documentation":"ProviderException raised when POST {GLM_BASE_URL}/api/v1/chats/new returns status >= 400. Every chat completion needs a server-side chat session id; if creation fails (401 expired key, 429 rate limit, 5xx, or payload rejected after an API change) the provider aborts before sending any messages, embedding the HTTP status in the message.","triggerScenarios":"Calling the GLM provider's create_async_generator when the session-creation request fails: invalid/expired api_key, hitting Z.ai rate limits on new-chat creation, or an upstream outage at chat-session creation time.","commonSituations":"Long-running processes where the key expires mid-session; bursty workloads creating many chats; library version lagging a Z.ai API contract change on the chats/new payload.","solutions":["Re-authenticate/refresh the GLM api_key (401 is the most common embedded status)","Add backoff/retry around chat creation for 429/5xx responses","Update g4f so the chat_body payload matches the current chats/new schema"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"try:\n    chat_id = await GLM._create_chat(session, chat_body)\nexcept ProviderException as e:\n    if 'status 429' in str(e) or 'status 5' in str(e):\n        await asyncio.sleep(backoff())\n        chat_id = await GLM._create_chat(session, chat_body)\n    else:\n        refresh_glm_key()  # 401: re-authenticate\n        raise","preventionTips":["Reuse chat sessions where the API allows it instead of creating one per request","Back off exponentially on 429 from chats/new","Refresh the GLM key on any 401 before retrying the chat flow"],"tags":["glm","http-error","chat-session","rate-limit"],"backgroundTag":null,"analyzedSha":"973504e1770928ed5fb82f43da528f441ad9ddc3","analyzedAt":"2026-08-14T23:45:32.408Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}