The market for API clients (aka REST Clients) is growing. Competition has forced many providers to give their users more features, easier workflows, and lower prices. This is great for developers that are looking to improve their API testing, descriptions, and integrations. The caveat is the difficulty in finding the right API client for your needs. It’s time-consuming to work through the stated features, free trials, and example images on the providers’ websites.
Therefore, in this article, we are going to take a look at three API clients:
A few of the comparison categories include:
- UX and Performance
- Composition, Scripting, and Advanced Values
- API Description
Before jumping into the comparisons, let’s talk about what an API client is and how these services look to solve similar issues.
What is an API Client?
An API client is a set of tools and protocols that operate from an application on a computer. They help you to bypass some operations when developing a web application rather than reinventing the wheel every time. Using a client API is a great way to speed up the development process.
Insomnia, Paw, and Postman are referred to as HTTP/API clients. They provide a graphical user interface (GUI) to send HTTP requests.
API Testing Tools
Testing APIs is what brings many developers to look into the different types of API clients available. If a program cannot compile code in development it will throw an error. There’s instant feedback when the code is incorrect. Similarly, this kind of development experience is desired with API clients. As users create routes they want instant feedback on whether this new route can handle the types of HTTP requests it plans to receive.
Some languages and runtimes, like Python and NodeJS, have “test runners” that can quickly execute a suite of tests on new code. API clients have API testing tools that can mock responses, requests, or return predefined example errors. Also, they can utilize dynamic values.
Being able to work dynamic values into an HTTP request—when testing—can let a user string together requests in a series to mimic the behavior of an application or user. Next, let’s introduce the three API clients that we discuss in this article.
Insomnia REST Client
Design and debug APIs like a human, not a robot.
Insomnia offers an easy and everyday solution. It plays well with GraphQL and has an extensive free tier. Insomnia allows users to design APIs, create requests, inspect responses, configure gateways, and deploy API specs.
Paw is a full-featured HTTP client that lets you test and describe the APIs you build or consume. It has a beautiful native macOS interface to compose requests, inspect server responses, generate client code and export API definitions.
Postman is an API client that allows the user to design, mock, test, document, and monitor your APIs. Postman also has automated testing that can help improve continuous integration (CI) and continuous deployment (CD).
Insomnia vs. Postman vs. Paw
Now that you have some background on these HTTP clients, let’s get into the details on how they stack up. If you are hoping for an outright winner you will most likely be disappointed. However, you will probably find certain advantages for each category that may pander to your needs.
UX and performance
|Look and Feel||macOS graphical user interface||Custom||Custom|
|Working Speed · How many clicks to create a request||1 click||1 click||2 clicks|
|Launch Performance||1.4 sec.||6 sec.||3.15 sec.|
|Large Requests||Loads and pretty-prints 10 MB JSON in 0.2 sec||Takes 12 sec. to pretty-print the JSON after the first layout||Hides response over 5 MB. Users can unhide voluntarily after being warned of performance issues|
|Supports Multi-line Text||No||No||Yes|
|Generate Code Snippets||Yes||Yes||Yes|
|Custom Code Generators||Yes||No||No|
Look and feel. Postman and Insomnia have custom user interfaces with Insomnia’s looking more simple than Postman’s. Paw is integrated with macOS, therefore the user interface is aligned with what Mac users already expect. This is an advantage for Paw if you’re a Mac user.
Clicks to create a request. All providers came in pretty low with creating a request only taking a click or two.
Launch speed. Opening the different applications can vary based on your machine. However, Paw was able to open in ~1.4 seconds, Postman clocked in at around 6 seconds, and Insomnia launched in ~3.15 seconds.
Handling large requests. Insomnia hides responses over 5 MB and the user can choose to view the full response after a performance warning. Both Paw and Postman show good speeds with large response objects. Despite their similarities, Paw was able to load and “pretty print” (format the JSON so it was easier to read) a 10 MB response object in less than half a second.
Supports multi-line text. Only Insomnia supports multi-line text.
Generate code snippets. All of the services allow the user to create code snippets for different programming languages. However, Paw has a feature that allows for custom code generation.
Conclusion: The winner is Paw
UX and performance appear to favor Paw. That being said, the UI is favorable to users that use Mac (Update: Now available for Windows, Linux, and Mac). Next, let’s take a look at authentication.
|Digest Auth||Yes (via Extension)||Yes||Yes|
|Hawk||Yes (via Extension)||Yes||Yes|
|AWS Sig v4||Yes (via Extension)||Yes||Yes|
|JWT Generation||Yes (via Extension)||No||No|
|AuthO||Yes (via Extension)||No||No|
When using Postman it’s worth noting that the OAuth 2 configuration is not stored with the request (only the token is stored). Therefore, if the user wants to fetch the token again, they need to enter all OAuth parameters a second time.
Conclusion: Almost a tie
You can see a virtual tie here with authentication methods. However, Paw does have the ability to extend it’s authentication methods a little bit further via extensions.
|General||Environments and their variables are segregated per project||Environments can be segregated by workspace||Environments and their variables are segregated per workspace|
|Variable Grouping||Yes||Yes||Has sub-environments but no groups|
|Editing||Easy||Easy||Edit as JSON|
When working with API clients there’s typically a need to create environment variables that help with API testing and mocking. Also, environment variables can be used for configurations like handling cookies or headers. The details become even more important when handling security. It’s nice to be able to separate environment variables between APIs because some APIs have a lot of variables attached to them in the client.
General. All the services support environments. Also, Insomnia and Paw let the user segregate environment variables per project (workspace). In Postman, the variable grouping is called environments that can be shared between workspaces.
Paw allows for multiple environments to be organized in groups and Insomnia lets the user create sub-environments for organization purposes.
Cloud sync. Paw syncs environments with an option for end-to-end encryption in the cloud. Insomnia and Postman provide syncing capabilities.
Editing environments. Both Postman and Paw have an intuitive table view for editing variables. You can edit Insomnia variables in a JSON input component.
Conclusion: Winners are Paw and Postman
The use of environment variables, and grouping variables, seems to be a standard future for HTTP clients. The differences between the services are small, but we favor the UI for the workflow with Paw and Postman.
Composition, Values, and Scripting
Being able to compose detailed requests, script scenarios, and build advanced values becomes important when you reach the upper levels of API design. Programming typically moves toward making things more automated and simple. Having the ability to use advanced values and script in the app can improve development speed, automation, and simplicity.
Body types are the format of data that can be sent with the HTTP requests from the client. For many use cases, this is JSON. However, there are plenty of other ways to send data over the internet!
|JSON||Yes, with custom JSON editor||Yes||Yes|
|Multipart with files||Yes||Yes||Yes|
|GraphQL||No||Yes, includes schema fetching.||Yes, includes schema fetching.|
Plug-ins/Extensions. Insomnia and Paw can create plugins. Paw seems to emphasize the use of plug-ins and user-created extensions. This is apparent when viewing the table on their Authentication support in a previous section. Postman does not allow users to create plugins.
Conclusion: Winner is Paw
|Import/Export Swagger 2.0||Yes||Import Only||Import Only|
|Import/Export Open API 3.0||No||Import Only||Import Only|
|Import/Export API Blueprint||Yes||No||No|
|Describe fields||Yes||Yes||Yes, via Insomnia Designer|
|Add schema||Yes||Yes||Yes, via Insomnia Designer|
|Describe response||No||No||Yes, via Insomnia Designer|
|Documentation generation||No||Yes, documentation has a nice UI.||Yes, using Swagger UI|
|Save response as “Example”||No||Yes||No|
The ability to easily describe and spec-out an API is huge for API design. Therefore, it’s very important to make this process logical and easy for developers. Many APIs look to utilize specifications like OpenAPI and Swagger. These specs can be imported, exported, and generated in API clients. Above is a table comparing the services and what they support.
Paw does not support OpenAPI 3.0. That being said, Paw does allow exporting for Swagger 2.0. This cannot be done in Insomnia and in Postman you must use a third-party. Insomnia allows users to work with their Insomnia Designer and Swagger to add schemas and generate documentation. Out of the three, Postman is the only one that lets the user save a response object as an “Example”.
The advantages and disadvantages are spread out fairly evenly across the board in this documentation. In other words, it’s up to the user to determine which service provides the best fit for their documentation.
|Assertions||No||Yes, but the user has to write code for it.||No|
|Automated Testing in the Cloud||No||Yes (“Monitors”)||No|
|Automated Testing Locally||No||Yes (“Automated Testing”)||No|
The majority of software needs some type of testing. API clients can be used to help test other applications and software by sending mock HTTP requests. Some services offer testing within their application. Out of the three API clients in this article, Postman is the only one that has testing capabilities.
Conclusion: The winner is Postman
Postman takes the testing category. Being able to set up automated tests in the cloud and locally can give users peace of mind during development.
Paw is a macOS native application, so it’s probably more exciting to someone working on a Mac. Paw (recently cross-platform), Postman, and Insomnia support use on Mac, Linux, and Windows. Additionally, Postman has support for browser use with Postman for the web.
Conclusion: The winner is Postman
By total numbers, Postman and Insomnia win the competition for the diversity of platforms. Finally, in the last section, we are going to break down the services by price.
Below are the prices for the three services based on the plans offered. Postman and Insomnia both offer a free tier. However, if you plan to be sticking with API development and design, the flat-fee option in Paw will be more advantageous in the long run.
More advanced users and teams need to take a harder look at the features that they are going to be paying for.
|Individual||$49.99 flat fee||Free||Free or Plus for $5/month|
Insomnia offers a Team plan of $8 per month. This is the lowest price, but it lacks in features (i.e testing, dynamic values, etc.) when compared to the other two providers. Paw and Postman have increased areas of strength. Analysis on a case-by-case basis would be more appropriate. That being said, Paw offers a lower Team rate per user in a month. If someone can use macOS for development, then Paw offers a better team cost compared to Postman.
API clients change regularly. They are continuously redesigning and adding features. Keep an eye on the companies website or view announcements to see when or where a company is going next.