HTTPie—aitch-tee-tee-pie—is a user-friendly command-line HTTP client for the API era. It comes with JSON support, syntax highlighting, persistent sessions, wget-like downloads, plugins, and more.

Demonstration of HTTPie use

Install Try online Read docs

The same command side-by-side with cURL
Comparison of the same request sent with HTTPie and cURL.

HTTPie is designed for painless debugging and interaction with APIs, HTTP servers, and web services, which it accomplishes by:

  • Built-in JSON support
  • Colorized and formatted terminal output
  • Sensible defaults
  • Persistent sessions
  • Forms and file uploads
  • HTTPS, proxies, and authentication support
  • Support for arbitrary request data and headers
  • Wget-like downloads
  • Extensions API
  • Expressive and intuitive syntax
  • Linux, macOS, and Windows support
  • All that & more in 2 simple commands: http + https

See all features

Installation

HTTPie can be installed on any operating system.

$ <tool> brew apt-get pip port yum more… install httpie

Read more

Getting started

Hello World:

$ http https://httpie.org/hello

Custom HTTP method, HTTP headers and JSON data:

$ http PUT httpbin.org/put X-API-Token:123 name=John

Submitting forms:

$ http -f POST httpbin.org/post hello=World

See the request that is being sent using one of the output options:

$ http -v httpbin.org/get

Build and print a request without sending it using offline mode:

$ http --offline httpbin.org/post hello=offline

Use Github API to post a comment on an issue with authentication:

$ http -a USERNAME POST https://api.github.com/repos/jakubroztocil/httpie/issues/83/comments body='HTTPie is awesome! :heart:'

Upload a file using redirected input:

$ http httpbin.org/post < files/data.json

Download a file and save it via redirected output:

$ http httpbin.org/image/png > image.png

Download a file wget style:

$ http --download httpbin.org/image/png

Use named sessions to make certain aspects of the communication persistent between requests to the same host:

$ http --session=logged-in -a username:password httpbin.org/get API-Key:123
$ http --session=logged-in httpbin.org/headers

Set a custom Host header to work around missing DNS records:

$ http localhost:8000 Host:example.com

Learn more in the docs

Testimonials

More #love on Twitter, GitHub

Who uses HTTPie

Developers all around the world rely on HTTPie for API testing. Here is a few of the companies where engineers use it, and/or that use HTTPie in their API docs.

Amazon Apple Facebook GitHub Google LinkedIn Microsoft Monzo RedHat Spotify Strava Stripe Twitter Akamai

Newsletter

Join the occasional HTTPie newsletter for news and tips.