HTTPie: a terminal client that makes testing an API readable

Summary

HTTPie is a modern command line HTTP client whose syntax reads almost like a sentence: write the method, the address and the key value pairs, and JSON is serialised automatically with coloured, formatted output.

Recommend
Name
HTTPie
Version
3.2.4
Pricing
Free
Open source
Open source
Operating system
WindowsmacOSLinux
Updated
2026-10-06 22:32

curl is powerful, and tiring to write

Every developer has written the curl command that got out of hand. Quotes inside quotes, escapes on top of escapes, a single line half a screen wide, and a JSON body in which finding the stray comma takes several attempts. HTTPie starts from exactly that pain. It is a modern HTTP client for the command line, and its syntax is designed to read close to a natural sentence: the method, the address and the key value pairs are written in order, data fields are appended directly in the form name=John, JSON is serialised automatically, and no manual escaping is needed anywhere.

HTTPie in a terminal

The gain is not only typing speed. A command that can be read back a week later is a command that can be copied into a note, pasted into a ticket or handed to a colleague, and the escaping rules of a shell are precisely the part that makes a working command impossible to reconstruct from memory. Removing them turns an experiment into something that can be kept.

Output that is comfortable to read

The other strength is what comes back. Response headers and body are formatted automatically, JSON is indented and aligned, and the status code and method are coloured by meaning, so a glance is enough to locate the problem instead of parsing a wall of text.

The 3.x releases add response timing metadata, and with the Pie theme the timing shifts through green, yellow, orange and red, which makes a slow endpoint obvious without opening a profiler. The rest of the list is what a working developer actually needs: sessions so a login does not have to be repeated, file upload in a single command, native support for Bearer and Basic authentication, a plugin system that extends protocols and output formats, and streaming responses that scroll on their own.

An old friend of the open source community

The project is published under the BSD-3-Clause licence on GitHub, carries close to forty thousand stars, and has been a fixture of the developer tool landscape for years; the current command line version is 3.2.4. It is not trying to replace curl. In scripts and pipes curl still rules, and that is unlikely to change. What HTTPie targets is the human side of the work, where the cost of testing one endpoint should be as close to zero as possible.

There are also official desktop and web versions, which means a team member who is not comfortable in a terminal can debug against the same tool rather than a different one, and the results stay comparable across the team.

The division of labour is worth stating plainly, because arguments about these tools usually come from mixing the two cases. Anything that has to run unattended belongs in a script and belongs to curl. Anything a person types, reads and adjusts belongs in the tool that keeps the command legible, and that is where this one pays for itself.

Sessions are the feature that saves the most time in practice. A protected endpoint usually needs a login before anything can be tested, and repeating that by hand for the twentieth request is where people start writing throwaway shell scripts instead of thinking about the interface. Keeping the session in one place removes that detour.

Streaming responses matter for the same reason: an endpoint that sends events continuously cannot be inspected by a tool that waits for the end of the body. Watching them arrive as they are produced is often the only way to tell a slow server from a stalled one.

The philosophy is that a tool should accommodate the person rather than the other way round. The same request is a spell in curl and a sentence here. Install it once, and both the speed and the mood of debugging an endpoint improve.

HTTPieDownload
Supported systems: Windows macOS Linux