HTTPie is on a mission to make APIs simple and intuitive for all those building the tools of our time. And today, we’re thrilled to announce the biggest release yet and a large step in that direction. Check out what’s new 👇
- 🔓 Public beta — HTTPie Web & Desktop is now publicly available 🎉
- 🕵️♀️ Incognito mode — You can now use the app without an account.
- ☁️ Real-time sync — Your data is now real-time synchronized across devices.
- ⬆️ Auto-updates — A reworked, more transparent system for updates.
- 💲 Variables — Work smarter and don’t repeat yourself.
- 🏞️ Environments — A quick way to swap between contexts.
- 🌊 cURL import — A humble but efficient start of our import system.
- 🔒 SSL verification — You can now turn off certificate validation.
- 📱 Mobile — Now it’s easier than ever to work on touch devices.
- ✨ Other improvements — Various changes to improve your experience.
- 🪲 Bug fixes — Hopefully, we caught them before you noticed.
- 🔮 What’s next? — A glimpse into the future.
🔓 Public beta
After months of development, testing, and collecting feedback in private beta, we’re opening HTTPie for Web & Desktop to everyone today 🚀
💌 Thanks to our community and private beta users
Since the launch of the Terminal app ten years ago, an enthusiastic community has been forming around HTTPie. When we announced HTTPie for Web & Desktop, the interest exceeded our expectations, and our waitlist started to fill up. We opened up a private beta program and invited thousands of beta users to whom we couldn’t be more grateful.
We were submerged in hundreds of thoughtfully answered surveys, messages in our growing Discord community, emails, GitHub issues, and Twitter DMs, and we appreciated every single one!
All that feedback has translated into improvements and features, like the ones included in this release and many more on our roadmap.
In return, HTTPie swag has found its way all around the world 💫
🕵️♀️ Incognito mode
Now that the private beta fence no longer exists, the account-required wall can be torn down too. And that’s exactly what we’ve done.
You can now use the app without an account. When you are not logged in—when you’re incognito—you still have access to all features apart from sync and creating new spaces. When you decide to log in or sign up, we sync your incognito space into your account, and you can continue to work uninterrupted. Easy!
☁️ Real-time sync
Sync is finally here. As long as you are not incognito, your data is backed up to our secure cloud and synchronized across your devices. When you change something, it’s instantly updated on your other clients.
Start working in the Web app, switch to the Desktop app, and check some request details on your phone later. And you don’t have to worry about hitting save because we continuously auto-save your work.
You might be wondering the most important question of all, can I still test my local API on a plane trip if I need to? Sure thing! HTTPie works offline-first. When your computer is offline (or our cloud is temporarily down), you can continue to work as usual. We’ll simply resume syncing once the connection has been restored. To see the current sync status, check out your account menu:
All synced data is encrypted at transit between the HTTPie cloud and clients (SSL) and at rest in a backed-up AWS RDS storage with redundancy (AES). All sensitive data—your requests, auth credentials, variables, etc.—are additionally encrypted at the server-side before storage and decrypted on client access (AES).
You can now check for updates and see the app update status straight in the account menu. This makes it easy for you to have the greatest and latest version of HTTPie always installed.
We continuously improve the app and release frequent updates with new features and bug fixes. The desktop app downloads new versions automatically, even though you don’t have to install them right away.
The auto-update system is integrated with sync, and the update status in the menu will tell you when an update is required to maintain compatibility with the HTTPie cloud.
Variables were among the most requested features by our private beta users. And we agree. When it comes to building requests in a clean, don’t-repeat-yourself way, variables are a game-changer. So here they are!
Define variables inside the current space’s detail tab. Then you can reference them from any request or collection within the space via
It’s often helpful to review the full HTTP request with variables already substituted before sending it. To do that, keep the Preview panel open.
If you reference a variable that doesn’t exist, we mark the reference red and prevent the request from being sent until the variable is declared. This way, you never have to deal with confusing results.
🤫 Secret variables
Mark a variable as secret, and we’ll mask its values in the variable list so that you don’t accidentally share them on a Zoom call, for example.
See local-only environments below for other advanced ways to deal with sensitive variables.
Environments allow you to quickly swap between different contexts. A common practice is to have an API running in different environments—on your local machine, in staging, in production, etc.
Imagine you need to talk to the same API in production but also in a staging environment. The requests are the same, but the root URL and auth, for example, differ. You can turn those values into variables, so it’s easier to change them. And with environments, you can instantly toggle between different values for those variables:
You can create as many environments as you like and switch between them using the menu at the top right of the app.
An environment is a named set of variable values. In the table, rows represent variables, columns represent environments, and inner cells are specific values for a variable in a specific environment. So once you declare a variable, it exists in every environment in the space (possibly with differing or empty values).
Every space starts with an empty environment called “Defaults.” It works as a regular environment, and for simple use-cases, you can just use it exclusively.
When you create additional environments, they use values from Defaults for variables where you don’t explicitly specify a custom value. If you don’t need a default value for a variable, you can simply leave its value in Defaults empty.
If you want to prevent some data from syncing to the HTTPie cloud and across your devices, you can store it as values in a local-only environment.
When creating an environment, select the option to create a local-only one, and its values will never leave your device.
🚫 No environment
In some situations, you might want to temporarily prevent requests from accessing your variables altogether. By selecting the “No environment” option, you can achieve just that:
Currently, this option is most useful when it comes to debugging your requests. But because variables can contain sensitive data, the importance of this feature will grow as we continue to add various import and sharing mechanisms.
🌊 cURL import
We are working on a robust import mechanism, which will eventually support many advanced import sources. But already today, you can import cURL commands as requests into your HTTPie library:
This allows you to quickly import cURL calls from scripts or import requests from Chrome DevTools. Find the “Import…” option under the
+ menu in your space library.
🪄 cURL import shortcut
There’s also a quick hidden shortcut for importing cURL. Can you guess where?
Just paste a cURL command into the URL field and see what happens 👀
🔒 SSL verification
This is a smaller feature, but many of our private beta users have been waiting for it, and we’re happy to finally ship it. By default, we verify the server SSL certificate and reject self-signed, expired, and non-matching certificates. Now you can disable this validation in the settings:
When you run into an SSL error and wish to temporarily allow invalid certificates, you can do that straight from the response view:
Turn it on again from the settings when you’re finished.
We’ve also focused on streamlining our mobile experience. The app is 100% responsive (both Web and Desktop), and you can use all features on touch devices as well.
Mobile-friendliness is one of those features that you don’t need most of the time. But when you need it, you really need it. And with HTTPie, you can get work done comfortably from anywhere, anytime.
- The mobile experience of the URL bar component is much improved.
- You can now use the Preview & Export feature on small screens.
- Keyboards are now contextual.
- Spacing is more compact and comfortable on small devices.
- You can now access tooltips on touch devices.
✨ Other improvements
- The body type and auth type selectors now have icons. As they say, an icon is worth a thousand labels.
- Error badges are now more minimal, less clunky, and more on brand.
- It’s been a while since we expanded the icon set for spaces and collections. Now you have eight crisp new icons to choose from. Check them out!
- The light mode previously received less love than the dark one. So we improved it. What do you think? Can you spot all the differences?
- Placeholders now look more like placeholders.
- Now you see a loading indicator when the app is launching.
- The monospaced font now supports non-Latin characters.
- Text selection is now disabled for all UI elements while keeping content selectable.
- In the desktop app, you can maximize and un-maximize the window by double-clicking the title bar.
- You can also drag the window using the left toolbar, where your profile image resides.
🪲 Bug fixes
- When you renamed a draft, it would change its auth to inherited, as if it was added to a collection. Fixed.
🔮 What’s next?
This release marks an important milestone on our journey to provide the best experience to anyone working with APIs.
With HTTPie, you can work on APIs with or without an account. While you are online or offline. In a dedicated cross-platform desktop app, in the browser, in the terminal, and even on your phone. Your data is auto-saved and synchronized across devices. You can organize your work in spaces and collections, parametrize requests with variables and environments, work on many things simultaneously with our tabbed system, and preview requests before sending them. These and many other features are available today, wrapped in what we aim to be a delightful, human-centered interface.
There’s still a lot of work to fully unlock the potential of APIs, and our roadmap is packed with ambitious milestones. Here’s a sample of the themes we’re focusing on next:
- 👥 Team collaboration
- ⚙️ Additional protocols and formats
- ⚡ Automation and testing
- 🔗 Full interoperability with HTTPie for Terminal
- 🎹 Become a keyboard-first app
- 🎉 Refreshed website