NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #33 most downloaded on PyPI
The next generation HTTP client.
Last release 28 days ago
31 Aug 2026
Release timing varies
gaps range from 8 days to 11 months
Nearly every release is documented
notes for 59 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
77 releases · first in 2019
Fixed HTTP/2 with autodetection backend. (Pull #614)
Released due to packaging build artifact.
Released due to packaging build artifact.
One column per quarter.
The 0.9 releases brings some major new features, including:
The 0.9 releases brings some major new features, including:
We've also removed all private types from the top-level package export.
In order to ensure you are only ever working with public API you should make
sure to only import the top-level package eg. import httpx, rather than
importing modules within the package.
Client(backend='trio') and Client(backend='asyncio') API. (Pull #585)response.stream_lines() API. (Pull #575)response.is_error API. (Pull #574)timeout=Timeout(5.0, connect_timeout=60.0) styles. (Pull #593)timeout=None now correctly always disable timeouts. (Pull #592).netrc authentication info. (Commit 095b691)httpx.stream() API. Using stream=True now results in a warning. (Pull #600, #610)Client(http2=True) API from Client(http_versions=["HTTP/1.1", "HTTP/2"]). (Pull #586)verify, cert, and trust_env now raise warnings if used per-request when using a Client instance. They should always be set on the Client instance itself. (Pull #597)proxy_mode argument. The HTTPProxyMode enum still exists, but its usage will raise warnings. (#610)httpx.Timeout(...), not httpx.TimeoutConfig(...). The old version currently remains as a synonym for backwards compatibility. (Pull #591)The synchronous API has been removed, in order to allow us to fundamentally change how we approach supporting both sync and async variants. (See #588
Add support for proxy tunnels for Python 3.6 + asyncio. (Pull #521)
Resolve an issue with cookies behavior on redirect requests. (Pull #529)
Drop proxies parameter from the high-level API. (Pull #485)
proxies parameter from the high-level API. (Pull #485)str file contents. (Pull #482)getproxies for all proxy environment variables. (Pull #470)asyncio stream to close when closing a connection. (Pull #494)Allow lists of values to be passed to params. (Pull #386)
params. (Pull #386)ASGIDispatch, WSGIDispatch are now available in the httpx.dispatch namespace. (Pull #407)HTTPError is now available in the httpx namespace. (Pull #421)start_tls() to the Trio concurrency backend. (Pull #467)Host header when basic authentication
credentials are supplied via the URL. (Pull #417).delete() function no longer has json, data, or files parameters
to match the expected semantics of the DELETE method. (Pull #408)trio extra. Trio support is detected automatically. (Pull #390)Add Trio concurrency backend. (Pull #276)
params parameter to Client for setting default query parameters. (Pull #372)SSL_CERT_FILE and SSL_CERT_DIR environment variables. (Pull #307)Client without timeouts in Python 3.6. (Pull #383)Client configuration to HTTP proxies. (Pull #377)HTTP Proxy support. (Pulls #259, #353)
.build_request() method to Client and AsyncClient. (Pull #319).elapsed property on responses. (Pull #351)SSLKEYLOGFILE in Python 3.8b4+. (Pull #301)Host header when redirecting cross-origin. (Pull #321)Content-Length headers on GET redirects. (Pull #310)KeyError if header isn't found in Headers. (Pull #324)NotRedirectResponse in response.next() if there is no redirection to perform. (Pull #297)Enforce using httpx.AsyncioBackend for the synchronous client. (Pull #232)
httpx.AsyncioBackend for the synchronous client. (Pull #232)httpx.ConnectionPool will properly release a dropped connection. (Pull #230)raise_app_exceptions argument from Client. (Pull #238)DecodeError will no longer be raised for an empty body encoded with Brotli. (Pull #237)http_versions parameter to Client. (Pull #250)httpx.get(). (Pull #284)Client.cookies and Client.headers when set as a property. (Pull #274)HTTPX_DEBUG=1 enables debug logging on all requests. (Pull #277)Include files with source distribution to be installable. (Pull #233)
Remove deprecated TLS versions (TLSv1 and TLSv1.1) from default SSLConfig. (Pull #155)
trust_env property to BaseClient. (Pull #187)links property to BaseResponse. (Pull #211)ssl.SSLContext instances into SSLConfig(verify=...). (Pull #215)Response.stream_text() with incremental encoding detection. (Pull #183)Host header when a redirect changes the origin. (Pull #199)Content-Encoding headers. (Pull #196)~/.netrc and ~/_netrc files by default when trust_env=True. (Pull #189)HTTPError with request and response properties. (Pull #162)BaseClient to upgrade HTTP URLs to HTTPS. (Pull #184)headers property to BaseClient. (Pull #159)brotli library. (Pull #156)SSLConfig. (Pull #155)URL.join(...) to work similarly to RFC 3986 URL joining. (Pull #144)Check for disconnections when searching for an available connection in ConnectionPool.keepalive_connections (Pull #145)
ConnectionPool.keepalive_connections (Pull #145)URL objects (Pull #139)commonName for hostname checking for OpenSSL 1.1.0+ (Pull #118)Response.json() (Pull #116)Check for connection aliveness on re-acquisition (Pull #111)
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →