openai breaking changes
Every breaking API change we have recorded in openai on PyPI: 340 breaking changes in 1 version. Below are its newest version, removals and renames first, each with its source.
Newest change August 12, 2026

On this page
3.0.0
- Behavior changed
The SDK now uses HTTPX2 for its default clients, and installing openai no longer installs httpx. Code using custom HTTPX clients, transports, or configuration must move to HTTPX2 equivalents or install httpx explicitly. github.com - Behavior changed
With the default client, raw request, response, and transport exception objects are HTTPX2 types instead of HTTPX types. Code that inspects these objects must be updated. github.com - Behavior changed
Certificate verification now uses the OS trust store and certifi is no longer installed, which can break verification in some environments. Configure system CAs, SSL_CERT_FILE, SSL_CERT_DIR, or a custom ssl.SSLContext. github.com - Behavior changed
DefaultAsyncHttpxClient
The existing name still works but builds HTTPX2 async clients. Prefer DefaultAsyncHttpx2Client to make the HTTP client family explicit. github.com - Behavior changed
DefaultHttpxClient
The existing name still works but builds HTTPX2 clients. Prefer DefaultHttpx2Client to make the HTTP client family explicit. github.com - Signature changed
openai.APIConnectionError.__init__
Was def __init__(self, *, message: str = 'Connection error.', request: httpx.Request) -> None; now def __init__(self, *, message: str = 'Connection error.', request: httpx2.Request) -> None. pypi.org - Signature changed
openai.APIError.__init__
Was def __init__(self, message: str, request: httpx.Request, *, body: object | None) -> None; now def __init__(self, message: str, request: httpx2.Request, *, body: object | None) -> None. pypi.org - Signature changed
openai.APIError.request
Was request: httpx.Request; now request: httpx2.Request. pypi.org - Signature changed
openai.APIResponseValidationError.__init__
Was def __init__(self, response: httpx.Response, body: object | None, *, message: str | None = None) -> None; now def __init__(self, response: httpx2.Response, body: object | None, *, message: str | None = None) -> None. pypi.org - Signature changed
openai.APIResponseValidationError.response
Was response: httpx.Response; now response: httpx2.Response. pypi.org
And 330 more in this version.
Check your code
These are the changes. To see which of them reach your code, scan a public repository, or have your coding agent call check_code with your manifest or lockfile over MCP. The API reads every change in every version, not only the newest. On Team and up, a fix pull request opens for the changes that reach a connected repository. Nothing merges or deploys.

Put your code on continuous management.
Scan a public repository now, or give your agent one line.
See how out of date your code is.
Tell your agent what changed since it was trained.
claude mcp add --transport http since https://api.since.dev/mcp