---
name: httpx
summary: "httpx is an open-source Python project with 15.3k GitHub stars. It is associated with asyncio, http, python, trio. The repository has seen commits within the last year."
language: Python
license: BSD-3-Clause
repo: https://github.com/encode/httpx
source: https://opensources.dev/resource/httpx
health: 87
---

# httpx

httpx is an open-source Python project with 15.3k GitHub stars. It is associated with asyncio, http, python, trio. The repository has seen commits within the last year.

HTTPX is a fully featured HTTP client library for Python 3. It includes **an integrated command line client**, has support for both **HTTP/1.1 and HTTP/2**, and provides both **sync and async APIs**.

---

Install HTTPX using pip:

```shell
$ pip install httpx
```

Now, let's get started:

```pycon
>>> import httpx
>>> r = httpx.get('https://www.example.org/')
>>> r
<Response [200 OK]>
>>> r.status_code
200
>>> r.headers['content-type']
'text/html; charset=UTF-8'
>>> r.text
'<!doctype html>\n<html>\n<head>\n<title>Example Domain</title>...'
```

Or, using the command-line client.

```shell
$ pip install 'httpx[cli]'  # The command line client is an optional dependency.
```

Which now allows us to use HTTPX directly from the command-line...

Sending a request...

## Features

HTTPX builds on the well-established usability of `requests`, and gives you:

- A broadly [requests-compatible API](https://www.python-httpx.org/compatibility/).
- An integrated command-line client.
- HTTP/1.1 [and HTTP/2 support](https://www.python-httpx.org/http2/).
- Standard synchronous interface, but with [async support if you need it](https://www.python-httpx.org/async/).
- Ability to make requests directly to [WSGI applications](https://www.python-httpx.org/advanced/transports/#wsgi-transport) or [ASGI applications](https://www.python-httpx.org/advanced/transports/#asgi-transport).
- Strict timeouts everywhere.
- Fully type annotated.
- 100% test coverage.

Plus all the standard features of `requests`...

- International Domains and URLs
- Keep-Alive & Connection Pooling
- Sessions with Cookie Persistence
- Browser-style SSL Verification
- Basic/Digest Authentication
- Elegant Key/Value Cookies
- Automatic Decompression
- Automatic Content Decoding
- Unicode Response Bodies
- Multipart File Uploads
- HTTP(S) Proxy Support
- Connection Timeouts
- Streaming Downloads
- .netrc Support
- Chunked Requests

## Installation

Install with pip:

```shell
$ pip install httpx
```

Or, to include the optional HTTP/2 support, use:

```shell
$ pip install httpx[http2]
```

HTTPX requires Python 3.9+.

## Documentation

Project documentation is available at [https://www.python-httpx.org/](https://www.python-httpx.org/).

For a run-through of all the basics, head over to the [QuickStart](https://www.python-httpx.org/quickstart/).

For more advanced topics, see the [Advanced Usage](https://www.python-httpx.org/advanced/) section, the [async support](https://www.python-httpx.org/async/) section, or the [HTTP/2](https://www.python-httpx.org/http2/) section.

The [Developer Interface](https://www.python-httpx.org/api/) provides a comprehensive API reference.

To find out about tools that integrate with HTTPX, see [Third Party Packages](https://www.python-httpx.org/third_party_packages/).

## Contribute

If you want to contribute with HTTPX check out the [Contributing Guide](https://www.python-httpx.org/contributing/) to learn how to start.

## Dependencies

The HTTPX project relies on these excellent libraries:

- `httpcore` - The underlying transport implementation for `httpx`.
  - `h11` - HTTP/1.1 support.
- `certifi` - SSL certificates.
- `idna` - Internationalized domain name support.
- `sniffio` - Async library autodetection.

As well as these optional installs:

- `h2` - HTTP/2 support. *(Optional, with *`httpx[http2]`*)*
- `socksio` - SOCKS proxy support. *(Optional, with *`httpx[socks]`*)*
- `rich` - Rich terminal support. *(Optional, with *`httpx[cli]`*)*
- `click` - Command line client support. *(Optional, with *`httpx[cli]`*)*
- `brotli` or `brotlicffi` - Decoding for "brotli" compressed responses. *(Optional, with *`httpx[brotli]`*)*
- `zstandard` - Decoding for "zstd" compressed responses. *(Optional, with *`httpx[zstd]`*)*

A huge amount of credit is due to `requests` for the API layout that
much of this work follows, as well as to `urllib3` for plenty of design
inspiration around the lower-level networking details.

---
