An API-as-code workbench for the terminal.
resterm.app · docs
Resterm is an API client for the terminal. Requests are saved in plain .http and .rest files, so they can live in your repo next to your code. Use them from the terminal UI, or run the same files in CI or CLI with resterm run.
- HTTP, GraphQL, gRPC, WebSocket and SSE.
- Assertions, captures, loops, conditions and multi-step workflows, all written in the request file.
- Scripting with RestermScript, a small expression language made for Resterm, or JavaScript if you prefer.
- Mock servers and traffic recording that use the same file format.
- OAuth 2.0, tokens from CLIs you already have (like
gh auth token). - SSH tunnels and Kubernetes port-forwards.
- Tracing, profiling and side-by-side comparison of responses across environments.
- Vim-style keys with built-in help.
Trace and timeline
macOS and Linux:
brew install resterm
# or
curl -fsSL https://raw.githubusercontent.com/unkn0wn-root/resterm/main/install.sh | bashWindows:
iwr -useb https://raw.githubusercontent.com/unkn0wn-root/resterm/main/install.ps1 | iexWith Go 1.25 or newer:
go install github.com/unkn0wn-root/resterm/cmd/resterm@latestPrebuilt binaries for macOS, Linux and Windows are on the releases page. The Linux binaries need glibc 2.32 or newer.
To update, run brew upgrade resterm if you installed with Homebrew. Otherwise run resterm --update. More in the install guide.
mkdir my-api && cd my-api
resterm init
restermresterm init creates a requests.http file with a few sample requests and local mocks to answer them, so you don't need a real API to try it. Press g Shift+M to start the mock server, move the cursor to a request and press Ctrl+Enter to send it. Press ? for help at any time.
You don't need init either. Run resterm, type a URL or paste a curl command, and press Ctrl+Enter.
The same file also runs without the UI. Start the mocks in one terminal and run a request in another:
resterm mock requests.http # terminal 1
resterm run --request CreateUser requests.http # terminal 2Resterm reads the standard .http format and adds # @ directives on top for settings and automation:
# @setting base-url https://api.example.com/v1/
### Create users
// Send this request once for each name in the list.
# @for-each ["david", "tom"] as name
# @when env.mode == "development"
# @assert response.statusCode == 201
POST users
Content-Type: application/json
{"name":"{{= name }}"}A @setting before the first request applies to the whole file. ### starts a new request. Directives above a request can repeat it, skip it or check the response.
There are more examples in _examples/, and every directive is listed in the request file reference.
The full docs are at resterm.app/docs. Good places to start are workflows, mock servers, recording, the CLI and RestermScript.
Inside the TUI, :help <topic> opens the built-in manual and :docs <topic> opens the same page on the website.
To run request files from your own Go code, see the headless package.
Resterm is and always will be free and open source. If it saves you time, you can sponsor its development.






