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.
HTTP/1.1 200 OK 142mscontent-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 /usersHTTP/1.1 200 OK 98mscontent-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.
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.
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.
Small tool. Sharp edges filed off.
Instant startup
Written in Rust. Launches in milliseconds with a minimal memory footprint.
Case-insensitive methods
get, GET, or GeT — reqsh understands all HTTP verbs however you type them.
Pretty-printed output
JSON responses are formatted and colorized automatically. No piping to jq.
{
"status": "ok",
"data": {
"id": 42,
"username": "reqsh_dev"
}
}
Session history
Every command is recorded. Inspect, replay, or rerun anything instantly from the history list.
Built-in timing
Every response includes its latency so you measure performance at a glance.
Ready to leave curl flags behind?
One command. No config files, no accounts, no runtime. Just a fast shell for your API work.