Browse the Knowledge Hub211 resources
Insomnia review: pricing, pros and cons
Insomnia is an open source API client from Kong for REST, GraphQL, gRPC, WebSocket and server-sent events, with environments, scripts, mock servers and OpenAPI design. Projects can stay local, sync through Insomnia’s cloud or live as YAML files in your own Git repository. Insomnia 13, released on 16 June 2026, changed the template engine to LiquidJS.
QAble has evaluated this tool and works alongside it. The factual sections are complete; our view is bounded to what we have actually seen rather than a long-term verdict.
- last reviewed
- 13 October 2026
- version covered
- Insomnia 13
- licence
- Freemium
At a glance
Insomnia at a glance
- Vendor
- Kong
- Category
- API testing
- Licence
- Freemium (Apache 2.0 application, with paid Pro and Enterprise plans)
- Platforms
- Windows, macOS, Linux
- Integrates with
- Inso CLI, Git, Kong Konnect, OpenAPI, Spectral
- First released
- 2016
- Version reviewed
- Insomnia 13
Verdict
Our verdict on Insomnia
Strengths
- Local Vault, Cloud Sync or Git Sync storage per project, with Enterprise controls over which are allowed
- Git Sync writes projects as YAML in your repository, with branching, merging and conflict resolution in the app
- One client for REST, GraphQL, gRPC, WebSocket and server-sent events
- After-response scripts use Chai-style expect, and many Postman scripts run after import
- OpenAPI design, Spectral linting, mocks and requests live together in an API Collection
- The application is open source under Apache 2.0
Weaknesses
- Version 13 replaced Nunjucks with LiquidJS, so some advanced template syntax must be rewritten
- Inso CLI reporters are console formats plus JSON output; there is no JUnit XML reporter
- Git Sync on the free Essentials plan is limited to three users
- Legacy unit tests are hidden from 13.3 and planned for deprecation, so older suites need moving to scripts
Our take
Insomnia’s strongest argument is choice of storage. A team can keep everything on the laptop, sync through Kong’s cloud with end-to-end encryption, or store projects as YAML in its own Git repository and review them in pull requests, and administrators on Enterprise can enforce which. It also suits teams that design APIs spec-first, since OpenAPI editing, Spectral linting and requests sit in one API Collection. QAble has evaluated it rather than maintained a long-running suite on it, so treat this as a bounded take. Watch two things: version 13 moved template tags from Nunjucks to LiquidJS, which breaks some advanced templates, and the Inso CLI reports in console formats and JSON rather than JUnit XML, which shapes how results reach CI dashboards.
We have evaluated this tool rather than maintained a long-running suite on it, so this is a bounded view rather than a long-term verdict. The rest of this page is factual.
How it works
How Insomnia works
Projects, API Collections and storage types
Work is organised into projects, and each project has a storage type. Local Vault keeps all data on the device with no cloud interaction. Cloud Sync stores projects in Insomnia’s cloud with end-to-end encryption, commits, branches and sharing across an organisation. Git Sync stores projects in a third-party Git repository and uses Insomnia as a Git client. A Scratch Pad works offline before you sign in. Storage can be changed after a project is created. Since 13.3, the older Document and Collection types are merged into a single API Collection with Spec and Tests tabs, so an OpenAPI spec and its requests live in one place.
Git Sync as a real Git repository
With Git Sync, project resources are written as YAML files and each collaborator clones the repository. From 12.6 the project uses a standard .git folder, after a one-time migration, so the Git command line, GitHub Desktop or an editor’s source control panel work on it directly; from 13.1 the repository can live anywhere on disk and Insomnia reads your ~/.gitconfig. Branch protection is enforced by your Git provider, conflicts open a three-way merge view, and reverts are done with Git tooling outside the app. Insomnia also writes metadata files, so expect occasional changes in the repository when no request has changed.
Templates, variables and scripts
Requests reference environment variables and template tags with double braces. In version 13 the template engine moved from Nunjucks to LiquidJS, so the syntax inside tags follows Liquid: assign instead of set, elsif instead of elif, and colon-separated filter arguments. Scripts run before a request and after its response through the insomnia object, which reads and sets variables at environment, base environment and local scope, edits the outgoing request, sends extra requests and asserts with insomnia.test and insomnia.expect. Scripts can require bundled libraries such as ajv, chai, lodash and uuid, plus a set of Node.js modules.
The Inso CLI reads the same data
Inso is the command line companion, distributed with each Insomnia release for macOS, Windows and Linux and as the kong/inso Docker image. It looks for data in a .insomnia directory in the working directory, in the Insomnia app data directory, or in a file passed with --workingDir, which can be an export or a Git Sync YAML file. inso run collection runs requests and their scripts with environments, iteration data and environment overrides; inso lint spec checks OpenAPI documents; and inso run test runs legacy unit tests. The --ci flag disables prompts so CI jobs fail cleanly on a non-zero exit code.
Strengths
What it does well
Choice of where data lives
Few API clients offer local-only, encrypted cloud and self-managed Git storage side by side. For organisations with data residency rules or a policy against vendor clouds, Local Vault or Git Sync keeps request data, including examples that may contain production-like data, under their own control.
Spec-first design in the same tool
An API Collection holds one OpenAPI spec alongside requests generated from it, with Spectral linting available in Local, Cloud Sync and Git Sync projects and a custom ruleset file. inso lint spec runs the same rules in CI, so a style guide is enforced before an API is implemented, not only in review.
Migrating from Postman
Insomnia imports Postman collections and environments, and Kong documents that scripts exported from Postman v2.0 and v2.1 should work after import. The differences are listed: collectionVariables maps to the base environment, insomnia.globals is not yet supported, and deprecated postman.* interfaces do not run, which makes a migration plannable.
Mock servers
Insomnia can host mock servers in the cloud or run them self-hosted, so front-end work and tests can proceed before an endpoint exists. 13.1 added multiple verbs per path in mocks. Cloud mock requests are metered per plan, with add-on packs on Essentials and Pro.
Kong Konnect integration
From version 13, Konnect control planes and routes sync into Insomnia as collections and requests, keeping local changes. For teams running Kong Gateway, that removes the step of hand-building requests for every route the gateway exposes.
Pricing
Insomnia pricing and licensing
The Insomnia application is open source under Apache 2.0 and free to download. Kong sells per-user plans around it: Essentials is free, Pro adds unlimited Git Sync users and higher mock limits, and Enterprise adds SSO, SCIM, storage controls, vault integrations and Konnect governance, with self-serve purchase up to a seat limit and sales above it. Collection runs are unlimited on every plan.
- Licence: Apache 2.0 for the application source in the Kong/insomnia repository; account features depend on the plan.
- Essentials (free): unlimited local and cloud projects and collection runs, Git Sync for up to three users, and a monthly allowance of cloud mock requests.
- Pro: per user, with Git Sync for all users and a larger mock allowance. Check the pricing page for current list prices and billing terms.
- Enterprise: per user, adding SSO with SAML or OIDC, SCIM, enforced storage types, external vault integrations and Konnect features; larger organisations buy through sales.
- Hidden costs: rewriting advanced templates for LiquidJS, moving legacy unit tests to scripts, and building JUnit-style reporting around Inso if CI needs it.
Checked against the vendor’s own pages on 13 October 2026. Pricing changes; confirm on the official site before buying.
Getting started
Getting started with Insomnia
Setup, step by step
- Install Insomnia 13 for your platform from insomnia.rest or the GitHub release.
- Create a project and choose its storage: Local Vault, Cloud Sync or Git Sync.
- Create an API Collection, add a base environment and an environment per target.
- Add requests that reference variables, then write an after-response script with insomnia.test.
- Run the collection in the Collection Runner to check the scripts pass together.
- Install the Inso CLI and run the same collection from a terminal.
Install
# macOS: the Inso CLI through Homebrew
brew install inso
inso --version
# Linux: download the binary from the matching release
curl -sL -o inso.tar.xz "https://github.com/Kong/insomnia/releases/download/[email protected]/inso-linux-x64-13.3.1.tar.xz"
tar -xJf inso.tar.xz && ./inso --versionA first example
// After-response script on GET {{ baseUrl }}/orders/{{ orderId }}
const order = insomnia.response.json()
insomnia.test('returns 200', () => {
// response.code is the number; response.status is the reason text
insomnia.expect(insomnia.response.code).to.eql(200)
})
insomnia.test('order has the expected shape', () => {
insomnia.expect(order).to.have.property('id')
insomnia.expect(order.status).to.be.oneOf(['PENDING', 'PAID', 'SHIPPED'])
insomnia.expect(order.lines).to.be.an('array')
})
// Make the id available to the next request in this environment
insomnia.environment.set('orderId', order.id)What trips people up first
Templates and tutorials written for Insomnia 12 or earlier. Insomnia 13 renders template tags with LiquidJS instead of Nunjucks, so set becomes assign, elif becomes elsif, filter arguments use a colon, as in replace: followed by the values, some filters such as batch, groupby and striptags are gone, and upper is upcase. Simple variable references keep working; anything with logic inside the braces needs checking. The other early surprise is status checks: insomnia.response.status is the reason text such as OK, so compare insomnia.response.code, or use insomnia.response.to.have.status(200).
In practice
Using Insomnia in practice
Choosing storage and organising the repository
Decide storage per project before anyone builds a large collection. For API tests that should be reviewed with the code, use Git Sync and give the Insomnia project its own folder or repository, since Insomnia manages the file layout and its metadata. Keep one API Collection per service, with folders by resource, a base environment holding defaults and one environment per target. Keep secrets out of synced environments: use a private environment, an external vault on Enterprise, or values passed to Inso with --env-var in CI. Agree that folder moves and structural changes are made with Git tooling, because Insomnia does not change project structure from its interface.
Chaining requests with scripts
Request chaining is where scripts earn their place. A pre-request script can call insomnia.sendRequest, awaited through a promise as Kong’s examples show, to fetch a token or create test data, store the result in an environment variable and let the main request use it. After-response scripts then assert and pass ids forward. Keep chained flows short and explicit, and name variables for their purpose, because a long chain of implicit environment writes is hard to debug when one link fails. For reusable logic, Insomnia’s folder-level variables and parent folder access let a folder hold shared values for every request inside it.
// Pre-request script: fetch a token once and reuse it
if (!insomnia.environment.get('accessToken')) {
const tokenReq = {
url: insomnia.environment.get('authUrl'),
method: 'POST',
header: { 'Content-Type': 'application/json' },
body: {
mode: 'raw',
raw: JSON.stringify({ clientId: insomnia.environment.get('clientId') }),
},
}
// Wrap the callback in a promise and await it, as Kong's docs do,
// so the main request waits for the token
const resp = await new Promise((resolve, reject) => {
insomnia.sendRequest(tokenReq, (err, res) => (err != null ? reject(err) : resolve(res)))
})
insomnia.environment.set('accessToken', resp.json().access_token)
}Running collections in GitHub Actions
Download the Inso binary that matches your Insomnia version from the GitHub release, check out the Git Sync repository, and run inso run collection with --ci so prompts are disabled and failures set the exit code. Point --workingDir at the collection’s YAML file or an export, select the environment by name, and inject secrets with --env-var. Inso has console reporters such as spec, dot and tap, and --output writes results to a JSON file, which you can upload as an artefact or convert for your dashboard; it does not write JUnit XML itself. Kong also maintains a setup-inso action, whose documented examples pin older Inso versions.
# .github/workflows/insomnia.yml
name: insomnia-api-tests
on: [push, pull_request]
jobs:
api:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Install Inso CLI
run: |
curl -sL -o inso.tar.xz "https://github.com/Kong/insomnia/releases/download/[email protected]/inso-linux-x64-13.3.1.tar.xz"
tar -xJf inso.tar.xz
- name: Run the Orders collection
run: >-
./inso run collection "Orders API"
--workingDir insomnia/orders-api.yaml
--env "CI"
--env-var "accessToken=${{ secrets.API_TOKEN }}"
--reporter spec
--ciUpgrading to Insomnia 13
Plan the upgrade as three checks. First, templates: search requests and environments for Nunjucks constructs such as set, elif, filter calls with parentheses and object iteration, and rewrite them in Liquid syntax. Second, plugins: plugins now run in a separate background window without direct access to the renderer, so plugins that touch the DOM, window globals or React state break, and plugins that call Node.js APIs from their entry point fail. Third, tests: 13.3 hides legacy unit tests by default and Kong plans to deprecate them, so move assertions into after-response scripts. Upgrade one person first, and coordinate the team on Git Sync so everyone moves together.
Pitfalls
Common pitfalls
Nunjucks template syntax failing after the upgrade
Why it happens: Insomnia 13 renders template tags with LiquidJS. Nunjucks constructs such as set, elif, parenthesised filter arguments and object iteration with key and value do not work.
The fix: Rewrite them in Liquid: assign, elsif, colon-separated filter arguments and pair-based loops, and replace removed filters such as batch and striptags with script logic.
Comparing insomnia.response.status with 200
Why it happens: In the scripting API, response.status is the reason phrase such as OK, while response.code holds the numeric status, so a numeric comparison on status always fails.
The fix: Assert on insomnia.response.code, or use insomnia.response.to.have.status(200), which checks the numeric code.
Expecting JUnit XML from Inso
Why it happens: Inso’s reporters are dot, list, min, progress, spec and tap, plus JSON output with --output. CI systems that only read JUnit XML show no test results.
The fix: Rely on the exit code for gating, upload the JSON output as an artefact, and convert it or the TAP output with a separate step if a JUnit report is required.
Writing new tests as legacy unit tests
Why it happens: Older guides use the Tests tab with insomnia.send. Since 13.3 those tests are hidden by default and Kong plans to deprecate them.
The fix: Write new checks as after-response scripts with insomnia.test and insomnia.expect, and migrate existing unit tests when convenient.
Plugins breaking in version 13
Why it happens: Plugins now run in a hidden background window. Those that reach into the user interface or call Node.js APIs from their entry point fail.
The fix: Check each plugin against Kong’s breaking changes page before upgrading, update or replace incompatible plugins, and keep a test machine on 12.x until they are fixed.
Hitting the Git Sync user limit on the free plan
Why it happens: Essentials allows Git Sync for up to three users. Larger teams find the fourth collaborator cannot use the shared Git project.
The fix: Budget Pro seats for everyone who edits Git Sync projects, or keep larger teams on Local Vault with exported files committed by a smaller group.
Compared
Insomnia alternatives compared
| Tool | Storage options | Protocols | CI runner and reports | Licence | Free collaboration |
|---|---|---|---|---|---|
| Insomnia | Local, encrypted cloud or Git Sync | REST, GraphQL, gRPC, WebSocket, SSE | Inso CLI; console reporters and JSON | Apache 2.0 app, paid plans | Git Sync for up to 3 users |
| Postman | Postman cloud, or v3 YAML in Git | REST, GraphQL, gRPC, WebSocket and more | Postman CLI; JUnit for v2.1 collections | Proprietary, freemium | None: Free and Solo are single-user |
| Bruno | Plain files in your repository only | REST, GraphQL, gRPC, WebSocket, SOAP | bru run; JSON, JUnit and HTML | MIT, paid Pro and Ultimate | Unlimited through your own Git |
Head-to-head comparisons
Insomnia vs PostmanFAQ
Frequently asked questions
What are the best Insomnia alternatives?
The alternatives most often weighed against Insomnia are Postman, Bruno and Hoppscotch. The comparison on this page sets them side by side on storage options, protocols, ci runner and reports, licence and free collaboration, and the verdict above says where Insomnia is the wrong choice and which of them to pick instead.
Is Insomnia free?
The Insomnia application is open source under Apache 2.0 and free to use, and the Essentials plan is free with unlimited local and cloud projects and unlimited collection runs. Git Sync on Essentials is limited to three users and cloud mocks have a monthly allowance. Pro and Enterprise are paid per user and add unlimited Git Sync users, higher mock limits, SSO, SCIM and administrative controls.
What changed in Insomnia 13?
Insomnia 13.0, released on 16 June 2026, added a tree-based sidebar, Kong Konnect sync and Spectral linting in every project type. Its breaking changes were the move from Nunjucks to LiquidJS for template tags and plugins running in a separate background window. Later releases let Git Sync projects live anywhere on disk, merged Document and Collection types into a single API Collection and hid legacy unit tests.
Insomnia or Postman?
Choose Insomnia when storage control matters, such as keeping everything local or in your own Git repository, when you design APIs from OpenAPI specs, or when you run Kong Gateway. Choose Postman when the team already shares Postman collections, needs its monitors and wider integrations, or relies on JUnit reports from the CLI for v2.1 collections. Both import each other’s collections, so trying both on a real API is cheap.
Can I store Insomnia collections in Git?
Yes. Git Sync stores project resources as YAML files in a repository you own, on GitHub, GitLab, Bitbucket or another provider with manual credentials. From version 12.6 the project uses a standard .git folder, so ordinary Git tools work on it, and Insomnia provides branching, committing, pushing, pulling and a three-way merge view in the app. Free Essentials accounts can use Git Sync with up to three users.
How do I run Insomnia tests in CI?
Install the Inso CLI from the GitHub release, Homebrew or the kong/inso Docker image, then run inso run collection with the collection name or file, an environment and the --ci flag. Pass secrets with --env-var. Use inso lint spec to check OpenAPI documents in the same job. Inso reports to the console and can write JSON with --output, so plan how results reach your CI dashboard.
Do Postman scripts work in Insomnia?
Mostly. Kong documents that scripts exported from Postman v2.0 and v2.1 should work after import, with known differences: collectionVariables maps to Insomnia’s base environment, insomnia.globals is not supported yet and deprecated interfaces such as postman.setEnvironmentVariable do not run. Test migrated collections in the Collection Runner before relying on them, and replace pm references where behaviour differs.
Alternatives
Insomnia alternatives worth weighing
Postman
API platform combining a request client, collections, environments, JavaScript test scripts and mock servers, with collections run in CI by the Postman CLI.
Bruno
Git-native API client storing collections as plain text files in your repository, with no cloud account.
Hoppscotch
Lightweight browser-based API client, self-hostable, covering REST, GraphQL and real-time protocols.
Resources
Where to go next
Picking the wrong tool costs more than picking late.
QAble advises on toolchain decisions and then implements them, with engineers who have run these tools on real delivery. Start with a free QA audit.