Skip to content

The interactive shell for HTTP requests.

Set a base URL once. Add headers once. Use variables, save requests, and re-run them from history. Pure terminal efficiency, built in Rust.

$curl -fsSL https://reqsh.dev/install.sh | sh
HTTP/1.1 200 OK 142ms
content-type: application/json
[ { "id": 1, "name": "Alice" }, { "id": 2, "name": "Bob" } ]
1: base https://api.example.com 2: header Authorization Bearer tok_abc 3: GET /users
HTTP/1.1 200 OK 98ms
content-type: application/json
[ { "id": 1, "name": "Alice" }, { "id": 2, "name": "Bob" } ]

Everything a terminal-first workflow needs.

A persistent REPL.

Stop typing the same host and authentication headers over and over. Set your base URL and headers once per session — every subsequent request uses them automatically.

reqsh> base https://api.stripe.com
reqsh> header Authorization Bearer sk_test
reqsh> GET /v1/customers
.....> ::send

Time-travel with history.

Every command is saved. Type historyto see everything you've done in the current session. Made a typo or need to repeat a request? Just use rerun <id> to execute it instantly.

reqsh> history
1:base https://api.stripe.com
2:header Authorization Bearer sk_test
3:GET /v1/customers
reqsh> rerun 3

Variables. Save. Run.

Use {{name}} syntax to interpolate values into paths, headers, and bodies. Save any request with save and replay it instantly with run. Every response includes its timing.

reqsh> set token eyJhbGciOiJIUzI1NiJ9
reqsh> GET /users/{{token}}
.....> ::send
HTTP/1.1 200 OK 142ms
reqsh> save get-users
reqsh> run get-users

Small tool. Sharp edges filed off.

Instant startup

Written in Rust. Launches in milliseconds with a minimal memory footprint.

0.00ms
Click to test startup latency

Case-insensitive methods

get, GET, or GeT — reqsh understands all HTTP verbs however you type them.

User TypedgEt
reqsh Parsed
GET

Pretty-printed output

JSON responses are formatted and colorized automatically. No piping to jq.

Syntax HighlightedPretty View
{
  "status": "ok",
  "data": {
    "id": 42,
    "username": "reqsh_dev"
  }
}

Session history

Every command is recorded. Inspect, replay, or rerun anything instantly from the history list.

Interactive Session Shell
1base https://api.github.com
Set Base URL Rerun
2GET /user/repos
200 OK 120ms Rerun
3set token ghp_xxxx
Set Variable Rerun
4rerun 2
200 OK 98ms Rerun

Built-in timing

Every response includes its latency so you measure performance at a glance.

Real-time Ping:
38ms

Ready to leave curl flags behind?

One command. No config files, no accounts, no runtime. Just a fast shell for your API work.

$curl -fsSL https://reqsh.dev/install.sh | sh