Bug:- websocket_base_url derivation corrupts URLs containing http:// in query params

Author: dowsyjatinCreated May 21, 2026Updated Sep 14, 2026
Labelsupstream

Confirm this is an issue with the Python library and not an underlying OpenAI API This is an issue with the Python library

Describe the bug When no websocket_base_url is provided, the SDK derives one from base_url using Python's str.replace():

python
base_url.replace("https://", "wss://").replace("http://", "ws://")

str.replace() replaces all occurrences, not just the scheme prefix. If http:// appears anywhere else in the URL (query parameter, path segment, etc.), it gets incorrectly rewritten too.

To Reproduce

python
from openai import OpenAI

client = OpenAI(
    api_key="sk-test",
    base_url="https://proxy.com/forward?target=http://backend.internal/v1"
)
print(client.websocket_base_url)

Expected result

wss://proxy.com/forward?target=http://backend.internal/v1

Actual result

wss://proxy.com/forward?target=ws://backend.internal/v1

Suggested fix Replace only the scheme prefix, not all occurrences:

python
if base_url.startswith("https://"):
    return "wss://" + base_url[len("https://"):]
elif base_url.startswith("http://"):
    return "ws://" + base_url[len("http://"):]

Environment

  • Library version: latest (main)
  • File: src/openai/_client.py lines ~117–119
  • Python version: 3.x