Open Beta, free for solo devs

Your API client shouldn't phone home.

One binary. Local files. No cloud. No login wall. No seat licence email from your manager. Just a damn good API client.

12 MB binary · <50ms startup · 0 tracking pixels · 100% offline
restroom: GET /api/users ● 200 OK · 89ms
GET https://api.payments.internal/v2/users/{{userId}}
// Response: 200 OK
{
"id": "usr_9f3a2b",
"email": "ada@example.com",
"plan": "pro",
"seats": 5,
"created_at": "2026-01-14T09:00:00Z"
}

// The toolkit

Every weapon.
No bloat.

Proxy. Mock. Load test. Automate. Run in CI. Restroom ships it all in one binary. Nothing behind a plugin marketplace.

Proxy & Traffic Capture

Debug real traffic.
Not crafted requests.

Intercept every byte between your app and its API: HTTPS, WebSockets, the lot. Replay any request with one click. No separate tool. No Charles licence.

  • HTTPS interception with auto-installed CA cert
  • WebSocket frame capture
  • Replay & modify intercepted requests
  • System proxy toggle, one click
Proxy: Captured traffic
GET /api/v2/cart 200 43ms
POST /api/v2/orders 201 128ms
POST /api/v2/payment 422 89ms
WS /ws/realtime 101 open
GET /api/v2/user/me 200 31ms
Click any row to inspect · replay · export as request
~/projects/payments-api
# your collection is just files
.
├── payments-api/
│ ├── collection.yaml
│ ├── get-cart.yaml
│ ├── create-order.yaml ← modified
│ └── auth/
└── environments/
├── dev.yaml
└── prod.yaml
$ git diff create-order.yaml
+ "timeout": 30000
- "timeout": 5000
Git-Native Collections

Your requests live
in your repo.

Every request is a YAML file. Commit them, diff them, review them in pull requests. Team permissions are just git permissions. No separate access management layer.

  • Plain YAML, readable without the app
  • Full git history on every request
  • Review API changes in your PR workflow
  • No proprietary binary format
CLI & Automation

Headless. Pipeline-ready.
2am-proof.

restroom-cli runs your entire collection headlessly: in CI, in Docker, in a cron job, or at 2am when a webhook starts misfiring. Same YAML files, zero GUI required.

  • Run any collection or single request headlessly
  • Environment injection via flags or env vars
  • JUnit / JSON output for CI pipelines
  • Chain requests with variable passing
bash
$ restroom run payments-api/ \
--env prod \
--reporter junit
Running 12 requests...
GET /api/v2/health34ms
POST /api/v2/orders121ms
GET /api/v2/orders/latest67ms
POST /api/v2/refundsslow: 2.1s
...8 more
✓ 12 passed · 0 failed · 1 warning

// Also ships with

Mock Server

Spin up stubs from OpenAPI specs. Test your frontend without the real backend.

Load Testing

Virtual users, ramp-up curves, real-time charts. No separate k6 script needed.

All Auth Types

Bearer, Basic, OAuth 2.0, AWS Sig v4, NTLM, certs, and custom providers.

Environments

Switch dev → staging → prod in one click. Variables interpolate everywhere.

Response Diff

Compare two responses side by side. Catch regressions before they catch you.

Pre/Post Scripts

JavaScript hooks on every request. Set variables, assert status codes, chain flows.

Import Anything

Postman collections, Bruno files, OpenAPI specs, cURL commands: all welcome.

Offline-first

No Wi-Fi? No problem. Your data lives on disk. Zero dependency on our servers.

// Dear Postman user

We know why
you're here.

The free tier got smaller. The login became mandatory. The team plan arrived in your inbox with a number that required a meeting. You started Googling.

What you're leaving

  • Mandatory cloud sync
  • Collections in a proprietary format
  • A login wall before you can work
  • Per-seat pricing per month
  • Features hidden behind plan tiers
  • Telemetry you can't disable

What you keep

  • All your requests & collections
  • Your environments and variables
  • Your authentication configs
  • Your scripting logic
  • Your entire workflow
  • Your sanity

How to switch

01

Export from Postman as Collection v2.1 JSON

02

File → Import in Restroom

03

Delete your Postman account

Total time: ~30 seconds.

"

An API client should be a tool, not a platform. Your data should be yours. Your workflow shouldn't require an internet connection. $29 a year should feel like a steal, because it is. And $149 should mean forever, because it does.

// the Restroom manifesto

Simple, honest pricing

Free forever for individuals. Aggressively priced for professionals. No seat creep, no hidden limits.

Save up to 25%

Free

$0 forever

The full API client, no credit card required.

  • Up to 10 rooms
  • Unlimited requests
  • Environments & variables
  • Request history
  • Basic pre/post-request scripts
  • Import/export (Postman, Bruno, OpenAPI)
  • Community support
Download free
Most popular

Pro

$29 / yr

Every power feature, one low price.

  • Everything in Free
  • Unlimited rooms
  • Proxy & traffic capture
  • Mock server & stubs
  • Load testing
  • Automation & CLI
  • Advanced scripting
  • Priority support
Get Pro: $29/yr

Team

$6 / seat / mo

billed annually

Collaboration tools for engineering teams.

  • Everything in Pro
  • Shared rooms
  • Team environments
  • Access control
  • Audit log
  • Dedicated support
Start team trial

Lifetime Pro: pay once, own it forever

All Pro features, every future update, forever. No subscription. No renewal. Ever.

Buy Lifetime: $149

All prices in USD. Annual plans renew automatically and can be cancelled anytime. Team pricing requires a minimum of 2 seats.

Download Restroom

Free to download. Free to keep. No account required.

View all releases and changelogs on GitHub.