HTTPie Keyboard Shortcuts
HTTPie exists in two meaningfully different forms — the original command-line tool, where 'shortcuts' really mean concise command syntax rather than key combinations, and the newer HTTPie Desktop GUI app, which has an actual keyboard shortcut set closer to what Postman or Insomnia users would expect. In the CLI, the closest thing to a shortcut is HTTPie's terse request syntax itself (like http POST api.example.com/users name=Bob instead of a much longer curl invocation), which is the tool's whole reason for existing rather than a modifier-key binding. HTTPie Desktop, by contrast, uses conventional Ctrl/Cmd-based shortcuts for sending requests and managing tabs, since it's built as a normal desktop GUI application layered on top of the same underlying HTTP engine. Because both forms are commonly used side by side by the same developers, it's worth being clear about which one a given shortcut applies to. Sessions, a CLI feature that persists headers, cookies, and auth across multiple separate command invocations, address a real friction point with any stateless request tool — without them, every authenticated request would need its auth header retyped or re-sourced from a script each time. HTTPie Desktop's collections feature, organizing related saved requests into folders much like Postman's collections, has become the more actively used half of the product for teams standardizing shared API test suites, even though the CLI remains the faster option for one-off scripted checks.
Cli Syntax
| Action | Windows | Mac | Description |
|---|---|---|---|
| Send a POST request with JSON body (CLI) | http POST url key=value | http POST url key=value | HTTPie's terse CLI syntax automatically infers a JSON body from key=value arguments and sets the correct Content-Type header, replacing what would otherwise be several flags and quoted JSON in raw curl. |
| Add custom header (CLI) | http url Header:Value | — | Appends a custom HTTP header using a colon-separated key:value argument, distinguished from JSON body fields (which use =) purely by that separator character. |
| Show full request and response (CLI) | http -v url | — | Adds verbose output showing the full raw request alongside the response, useful for debugging exactly what headers and body were actually sent over the wire. |
| Use a named session (CLI) | http --session=name url | http --session=name url | Persists headers, cookies, and auth for a named session across separate command invocations, avoiding the need to retype authentication details on every single request in a multi-step API testing workflow. |
Desktop App Requests
| Action | Windows | Mac | Description |
|---|---|---|---|
| Send request (Desktop app) | Ctrl+Enter | Cmd+Return | Sends the currently configured request in HTTPie Desktop, the GUI equivalent of running the CLI command, matching the convention used by most other API client GUIs. |
| Save current request | Ctrl+S | Cmd+S | Saves the current request configuration to a collection for reuse later, standard convention shared with most desktop applications for saving work. |
| Duplicate a saved request (Desktop app) | Right-click request > Duplicate | — | Creates a copy of an existing saved request in a collection, useful for building several similar API calls that only differ by an endpoint parameter or two. |
Desktop App Navigation
| Action | Windows | Mac | Description |
|---|---|---|---|
| Open new request tab | Ctrl+T | Cmd+T | Opens a new empty request tab, letting you work on multiple API calls side by side in the same window. |
| Close current tab | Ctrl+W | Cmd+W | Closes the currently focused request tab, standard tab-management convention shared across most tabbed desktop applications. |
| Switch between open tabs | Ctrl+Tab | Cmd+Shift+] | Cycles focus to the next open request tab in HTTPie Desktop, letting you compare responses across several in-progress requests without closing any of them. |
Frequently Asked Questions
Is HTTPie's command-line syntax really faster than typing an equivalent curl command?
For common cases like sending JSON bodies or setting headers, yes, meaningfully — HTTPie infers content types and formats JSON automatically from simple key=value pairs, where the equivalent curl command typically requires explicit -H, -d, and quoting JSON manually, which is verbose and error-prone by comparison, especially for requests with several fields.
Do HTTPie Desktop and the CLI tool share saved requests or history?
They're related but distinct products with their own storage — HTTPie Desktop has its own collections and history system built for a GUI workflow, while the CLI tool's session and history features work differently and are file-based, so requests saved in one aren't automatically available in the other without exporting/importing.
Can I script HTTPie CLI commands the same way I would script curl in a shell script?
Yes — since HTTPie's http command is a normal CLI executable, it works fine inside shell scripts, CI pipelines, and Makefiles the same way curl does, and its more readable syntax is part of why some teams prefer it for scripted API testing despite curl's near-universal availability by default on most systems.
What problem do named sessions solve in the CLI tool specifically?
Without a session, each CLI invocation is stateless and needs its headers, cookies, or auth token supplied fresh every time, which gets repetitive across a multi-step testing workflow; a named session persists that state on disk between separate command calls, so a login step's resulting cookie can automatically carry over into subsequent requests without manual copying.
Are HTTPie Desktop's collections comparable to Postman's collections feature?
Conceptually yes — both organize related saved requests into folders that a team can share and standardize around for testing a given API's endpoints, though the two tools' collection formats aren't directly interchangeable, so migrating an existing Postman collection to HTTPie Desktop generally requires manual recreation rather than a direct import.
Can I run the same request against different environments, like staging versus production?
Yes, both the CLI (through environment variables or separate session files) and HTTPie Desktop (through configurable environment variables tied to a collection) support parameterizing a base URL or auth token so the same request definition can target different environments without duplicating the request itself.
Does HTTPie support GraphQL requests the same way it handles REST endpoints?
GraphQL requests can be sent through HTTPie using its standard JSON body syntax since GraphQL over HTTP is typically just a POST request with a query string in the body, though there isn't a dedicated GraphQL-specific syntax shortcut the way some specialized GraphQL clients offer.
Does HTTPie support authentication methods beyond basic username and password?
Yes, both the CLI and Desktop app support common auth schemes including bearer tokens, digest auth, and OAuth flows in addition to basic auth, covering most authentication patterns a typical API testing session would need without external tooling.
Is there a keyboard shortcut in HTTPie's desktop app for duplicating an existing saved request?
Yes — right-clicking a saved request in the sidebar and choosing Duplicate creates an identical copy ready for modification, though this is a context-menu action rather than a bound keyboard shortcut, since duplicating a request is infrequent enough compared to sending one that a dedicated key wasn't a priority.