v0.1.0 — Now available for macOS & Windows

API testing that
lives in your files.

Write .http, .flow, and .ws files. Run HTTP requests, chain flows with assertions, test WebSocket connections — all from a native desktop app. No accounts. No cloud. No lock-in.

No account required No telemetry macOS & Windows
sendpad — my-api-tests
my-api-tests
envs
dev.env
staging.env
users.http
auth.flow
chat.ws
@baseUrl = https://api.example.com
@token = dev_abc123
### List Users
GET {{baseUrl}}/users
Authorization: Bearer {{token}}
### Create User
POST {{baseUrl}}/users
Content-Type: application/json
{
"name": "Alice",
"email": "alice@example.com"
}
# @assert status == 201
200 OK 142ms · 1.2 KB
Headers Body
{
"users": [
{
"id": 1,
"name": "Alice",
"email": "alice@example.com"
}
]
}
status == 201

How it works

Three steps to shipping with confidence.

01

Write plain text files

Create .http files for individual requests, .flow files for chained test sequences, and .ws files for WebSocket sessions. Any folder becomes your workspace.

users.http
@baseUrl = https://api.example.com

### Get User
GET {{baseUrl}}/users/1
Authorization: Bearer {{TOKEN}}

### Create User
POST {{baseUrl}}/users
Content-Type: application/json

{ "name": "Alice" }
02

Run with one click

Click ▶ in the gutter or press ⌘Enter. The Flow Runner chains requests, extracts variables with JSONPath, and shows live pass/fail assertion badges.

auth.flow
### Step 1 · Create user
# @name createUser
POST {{baseUrl}}/users
Content-Type: application/json

{ "name": "Alice" }

# @extract userId = $.id
# @assert status == 201

### Step 2 · Verify user
GET {{baseUrl}}/users/{{userId}}
# @assert status == 200
# @assert body contains "Alice"
03

Ship and collaborate

Your tests are files on disk. Commit them. PR them. Diff them. Devs, QA, and PMs all work from the same workspace — no proprietary format, no cloud, no friction.

workspace layout
my-api-tests/
├── envs/
│   ├── dev.env
│   └── staging.env
├── requests/
│   └── users.http
├── flows/
│   └── user-crud.flow
└── .sendpad/  ← auto-gitignored

Features

Everything you need.
Nothing you don't.

Built for developers, QA engineers, and anyone who needs to test APIs without the ceremony.

Text-first editor

Syntax-highlighted .http, .flow, and .ws files powered by CodeMirror 6. Variable autocomplete. One-click gutter run buttons.

Flow runner

Chain requests sequentially. Extract values with JSONPath, assert status and body. Get pass/fail badges and literate test reports.

WebSocket support

Interactive .ws sessions with real-time message timeline. Script send/receive sequences with assertions and extraction.

Git-native

Every request, flow, and env is a plain text file on disk. Diff, branch, PR — collaboration works out of the box.

Cookie jar

Per-environment RFC 6265 cookie jar. Cookies set by responses are sent automatically on future requests. Inspect or clear via the Cookie Manager.

Zero config

Open the app. Open a folder. Click Run. No setup wizard, no account creation, no cloud sync. Just files and results.

Comparison

How SendPad stacks up.

There are great tools out there. Here's where SendPad fits.

Feature SendPad you are here Postman Bruno VS Code REST
Native desktop app
Plain text files
Git-native collaboration
No account required
No cloud sync
Flow runner + assertions Partial
WebSocket support
MQTT support Soon
Non-developer friendly

Download

Start testing in minutes.

Free to download and use. No account, no telemetry, no credit card.

v0.1.1 · Free for personal and commercial use