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

Open Beginner friendly
#3,294 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
76/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Quiet
Tech stack
python
Domain
api

Research direction

Start in src/openai/_client.py around lines 117–119 and inspect how websocket_base_url is derived when no value is provided. Reproduce the issue with the proxy URL in the report, then verify the resulting URL preserves http:// in the query parameter while changing only the base scheme. Add regression coverage using the reported example and run the relevant client tests.

Written by the indexing model from the issue text.

Description

upstream

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():

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

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:

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
Dominant language
Python
Stars
31.7k
Forks
5.8k
Avg merge
1d 6h
Merged PRs (30d)
96

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from openai/openai-python

All issues in openai/openai-python

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.