HTTPie (pronounced aitch-tee-tee-pie) is a cURL-like, modern, user-friendly, and cross-platform command line HTTP client written in Python. It is designed to make CLI interaction with web services easy and as user-friendly as possible.


It has a simple http command that enables users to send arbitrary HTTP requests using a straightforward and natural syntax. It is used primarily for testing, trouble-free debugging, and mainly interacting with HTTP servers, web services and RESTful APIs.

  • HTTPie comes with an intuitive UI and supports JSON.
  • Expressive and intuitive command syntax.
  • Syntax highlighting, formatted and colorized terminal output.
  • HTTPS, proxies, and authentication support.
  • Support for forms and file uploads.
  • Support for arbitrary request data and headers.
  • Wget-like downloads and extensions.
  • Supports ython 2.7 and 3.x.


In this article, we will show how to install and use httpie with some basic examples in Linux.


How to Install and Use HTTPie in Linux


Most Linux distributions provide a HTTPie package that can be easily installed using the default system package manager, for example:

# apt-get install httpie  [On Debian/Ubuntu]
# dnf install httpie      [On Fedora]
# yum install httpie      [On CentOS/RHEL]
# pacman -S httpie        [On Arch Linux]


Once installed, the syntax for using httpie is:

$ http [options] [METHOD] URL [ITEM [ITEM]]


The most basic usage of httpie is to provide it a URL as an argument:

$ http


Now let’s see some basic usage of httpie command with examples.


Send a HTTP Method

You can send a HTTP method in the request, for example, we will send the GET method which is used to request data from a specified resource. Note that the name of the HTTP method comes right before the URL argument.

$ http GET rootadminz.lan


Upload a File

This example shows how to upload a file to using input redirection.

$ http < file.txt


Download a File

You can download a file as shown.

$ http > file.txt #using output redirection
$ http --download           #using wget format


Submit a Form

You can also submit data to a form as shown.

$ http --form POST rootadminz.lan date='Hello World'


View Request Details

To see the request that is being sent, use -v option, for example.

$ http -v --form POST rootadminz.lan date='Hello World'


Basic HTTP Auth

HTTPie also supports basic HTTP authentication from the CLI in the form:

$ http -a username:password http://rootadminz.lan/admin/


Custom HTTP Headers 

You can also define custom HTTP headers in using the Header:Value notation. We can test this using the following URL, which returns headers. Here, we have defined a custom User-Agent called ‘strong>TEST 1.0’:

$ http GET User-Agent:'TEST 1.0'


See a complete list of usage options by running.

$ http --help
$ man  ttp


Was this answer helpful? 0 Users Found This Useful (0 Votes)