LinuxCommandLibrary

httpie

Send HTTP requests

TLDR

Check updates for http

$ httpie cli check-updates
copy

List installed http plugins
$ httpie cli plugins list
copy

Install/upgrade/uninstall plugins
$ httpie cli plugins [install|upgrade|uninstall] [plugin_name]
copy

SYNOPSIS

http [options...] [URL] [key[=value] [key[=value] ...]]

PARAMETERS

-h, --help
    Show help and exit.

--version
    Display version info.

-v, --verbose
    Enable verbose mode; show request/response details.

-q, --quiet
    Suppress all output except errors.

-s, --stream
    Stream response body continuously.

-p, --print
    Specify output: H=req headers, h=resp headers, b=body, B=both.

-j, --json
    Send JSON; auto for APIs (Content-Type: application/json).

--form
    Use form-encoded data (Content-Type: application/x-www-form-urlencoded).

-f, --files
    Upload files with field names.

-a, --auth [:]
    Basic auth credentials.

--session=NAME
    Load/save session (cookies, auth).

-d, --download
    Download to stdout; show progress.

-o, --output
    Save response body to file.

-X, --method
    Request method (GET, POST, PUT, etc.).

--timeout
    Request timeout in seconds.

--headers
    Custom headers.

DESCRIPTION

HTTPie (pronounced aitch-tee-tee-pie) is a modern, user-friendly command-line HTTP client designed to make interacting with web services and APIs as simple as possible. It serves as a colorful alternative to tools like curl, offering intuitive syntax, automatic JSON handling, colorized output, and progress bars by default.

Unlike verbose tools, HTTPie lets you send requests with minimal typing: http example.com fetches a page, while http POST pie.dev/post hello=world sends JSON data effortlessly. It supports HTTP methods via flags, authentication, sessions for cookies, file uploads, streaming, and more.

Key strengths include human-readable output (headers, body), plugin ecosystem for extensions like OAuth, and compatibility with proxies and custom headers. Ideal for developers testing endpoints, debugging responses, or scripting API calls. Written in Python, it's cross-platform and extensible.

HTTPie shines in readability: responses show status, size, encoding, and formatted JSON/XML. It auto-detects content types and prettifies output, reducing errors in fast-paced workflows. With over 50k GitHub stars, it's widely adopted for its simplicity over curl's complexity.

CAVEATS

Not installed by default; requires Python/pip. Lacks some low-level curl features like custom SSL. Large responses may overwhelm terminal.

INSTALLATION

pip install httpie
Debian/Ubuntu: sudo apt install httpie
macOS: brew install httpie.

EXAMPLE USAGE

http GET pie.dev/get name=John — JSON request.
http POST pie.dev/post files:=@image.jpg — upload file.

HISTORY

Created by Jakub Roztočil in 2011 as a Python script to simplify curl. Evolved into open-source project with 50k+ stars. Now v3.2+ under httpie-org; supports Python 3.7+, active plugins community.

SEE ALSO

curl(1), wget(1), aria2c(1)

Copied to clipboard