---
title: "openai Breaking Changes on PyPI | Since.dev"
description: "What each openai release removed, renamed or changed: 340 breaking changes in 1 version on PyPI, each with its source."
canonical_url: https://since.dev/packages/pypi/openai
last_updated: 2026-08-12
---

# 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

## 3.0.0

340 breaking changes, first published August 12, 2026.

- **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](https://github.com/openai/openai-python/releases/tag/v3.0.0)
- **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](https://github.com/openai/openai-python/commit/ae8c3d5d8be96c8253e5875e7c79b646a0c239d6)
- **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](https://github.com/openai/openai-python/blob/main/httpx2.md)
- **Behavior changed** `DefaultAsyncHttpxClient`  

The existing name still works but builds HTTPX2 async clients. Prefer DefaultAsyncHttpx2Client to make the HTTP client family explicit. [github.com](https://github.com/openai/openai-python/blob/main/httpx2.md)
- **Behavior changed** `DefaultHttpxClient`  

The existing name still works but builds HTTPX2 clients. Prefer DefaultHttpx2Client to make the HTTP client family explicit. [github.com](https://github.com/openai/openai-python/blob/main/httpx2.md)
- **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](https://pypi.org/project/openai/3.0.0/)
- **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](https://pypi.org/project/openai/3.0.0/)
- **Signature changed** `openai.APIError.request`  

Was request: httpx.Request; now request: httpx2.Request. [pypi.org](https://pypi.org/project/openai/3.0.0/)
- **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](https://pypi.org/project/openai/3.0.0/)
- **Signature changed** `openai.APIResponseValidationError.response`  

Was response: httpx.Response; now response: httpx2.Response. [pypi.org](https://pypi.org/project/openai/3.0.0/)

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](https://since.dev/scan.md), or have your coding agent call `check_code` with your manifest or lockfile over [MCP](https://since.dev/docs.md#mcp). [The API](https://since.dev/docs.md#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.

[Scan a repository](https://since.dev/scan.md). Any public GitHub repository. No sign-in.

### Tell your agent what changed since it was trained.

`claude mcp add --transport http since https://api.since.dev/mcp`

---

Every page on this site as Markdown: https://since.dev/sitemap.md. For agents: https://since.dev/llms.txt.
