Introduction

Screenshot: Napper VS Code extension showing the request explorer panel, syntax-highlighted .nap file, and response viewer with JSON body and assertion results

Napper is a free, open-source, CLI-first API testing tool that integrates natively with VS Code. It is a modern alternative to Postman, Bruno, .http files, and curl.

Napper is built for developers who want:

  • Simple things to be simple — a one-off request is nearly as terse as curl (spec: nap-minimal)
  • Complex things to be possible — full F# and C# scripting for advanced flows (spec: script-fsx, script-csx)
  • Everything in version control — plain text files, no binary blobs (spec: nap-file, naplist-file, env-file)
  • First-class VS Code support — syntax highlighting, Test Explorer, environment switching
  • Easy migration — convert existing .http files with a single CLI command (spec: cli-convert)

How does Napper work?

Every HTTP request is a .nap file (spec: nap-file):

GET https://api.example.com/health

That's it. One line. Run it from the CLI:

napper run ./health.nap

Or from VS Code with a single click.

What happens when you need more?

Add headers, bodies, assertions, and environment variables (spec: nap-full):

[meta]
name = Create user

[request]
POST /users

[request.headers]
Content-Type = application/json
Authorization = Bearer 

[request.body]
"""
{
  "name": "Ada Lovelace",
  "email": "ada@example.com"
}
"""

[assert]
status = 201
body.id exists
duration < 500ms

Chain requests into test suites with .naplist files (spec: naplist-file). Add F# or C# scripts for advanced orchestration (spec: script-fsx, script-csx). Output JUnit XML for your CI pipeline (spec: output-junit).

Already using .http files? (spec: cli-convert)

Napper includes a built-in converter to migrate your existing .http files. Both Microsoft (VS Code REST Client) and JetBrains (IntelliJ, Rider, WebStorm) dialects are supported:

napper convert http ./requests.http

The converter maps variables to .napenv files, preserves request names, and converts JetBrains http-client.env.json environments. See the .http file comparison for details.

Why is the CLI the primary interface?

Napper is not a GUI-first tool with a CLI bolted on. The CLI is the primary interface. The VS Code extension operates on the same files and provides the same features in your editor. This means your API tests work the same way locally and in CI/CD, with no import/export step.

Screenshot: Napper CLI running a .naplist test suite, displaying coloured pass/fail output for each assertion across multiple endpoints

Next steps