Skip to content

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

@dowsyjatin

Description

@dowsyjatin

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions