The interactive shell for HTTP requests.

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

reqsh
reqsh>basehttps://api.example.com
reqsh>headerAuthorization Bearer tok_abc
reqsh>GET/users
.....>::send
HTTP/1.1 200 OK
content-type: application/json
[
  { "id": 1, "name": "Alice" },
  { "id": 2, "name": "Bob" }
]
reqsh>history
base https://api.example.com
header Authorization Bearer tok_abc
GET /users
reqsh>rerun3
HTTP/1.1 200 OK
reqsh> 

A persistent REPL.

Stop typing the same host and authentication headers over and over. With reqsh, you set your base URL and headers once in a session. Every subsequent request uses them automatically.

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

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 to memory with save and replay it instantly with run.

reqsh> set token eyJhbGciOiJIUzI1NiJ9
reqsh> GET /users/{{token}}
.....> ::send
reqsh> save get-users
reqsh> run get-users
reqsh>POST

Built for speed.

Written in Rust, reqsh starts instantly and uses minimal memory. It features blazing fast tab completion for all commands and HTTP methods.

Read the documentation