>_ RESTERM
v1.10.2
GET200

An API-as-code workbench for the terminal.

Resterm is an API client that keeps requests in plain .http files next to your code. Send them from a keyboard-driven TUI, or run the same files in CI with resterm run.

brew install resterm
Quick start ▸Read the docs

HTTPGraphQLgRPCWebSocketSSEmacOS, Linux, WindowsApache-2.0

Screens
Resterm editor with directive completions open

Requests are plain text

A request file is a normal text file you can review in a pull request. Mocks can sit in the same file. The TUI and resterm run read the same files, so what you try by hand is what CI runs.

requests.http
### Mock: say hello
# @mock method=POST path=/hello
# @match json={"kind":"greeting"}
HTTP/1.1 200 OK
Content-Type: application/json

{"message":"hello from the mock","name":{{json.body.name}}}

### Mock: create a member
# @mock method=POST path=/users
# @match headers={"Authorization":{"prefix":"Bearer "}} json={"role":"member"}
HTTP/1.1 201 Created
Content-Type: application/json

{"id":{{json.body.id}},"name":{{json.body.name}}}

### Say hello
# @name Hello
# @assert response.statusCode == 200
# @assert response.json("name") == "Resterm"
POST {{base.url}}/hello
Content-Type: application/json

{"kind":"greeting","name":"Resterm"}

### Create users from a list of names
# @name CreateUsers
# @for-each ["ada","linus","grace"] as name
# @auth bearer {{auth.token}}
# @assert response.statusCode == 201
# @assert response.json("name") == name
POST {{base.url}}/users
Content-Type: application/json

{"id":"user-{{= name }}","name":"{{= name }}","role":"member"}
Terminal
$ resterm mock requests.http &Mock server listening on http://127.0.0.1:8080 (2 routes, 2 scenarios)$ resterm run --env dev --all requests.httpRunning 2 target(s) from requests.http with env devPASS POST Hello [200 OK in 12.5625ms]  Source Target: {{base.url}}/hello  Effective Target: http://127.0.0.1:8080/helloPASS FOR-EACH POST CreateUsers [3 passed, 0 failed, 0 skipped in 2.807625ms]  1. PASS POST CreateUsers (1/3) [201 Created in 958.5µs]  2. PASS POST CreateUsers (2/3) [201 Created in 789.708µs]  3. PASS POST CreateUsers (3/3) [201 Created in 928.375µs]Summary: total=2 passed=2 failed=0 skipped=0

What it does

Every row opens the part of the docs that covers it.

Install

One binary. No runtime to install, no account to create.

Install
brew install resterm

macOS and Linux

Release binaries for macOS, Linux and Windows are on the releases page. Installed without Homebrew? resterm --update updates in place.

Quick start
$ mkdir my-api && cd my-api$ resterm init$ resterm

resterm init writes a small project with local mocks. Press g Shift+M to start the mock server, then Ctrl+Enter to send the request under the cursor.

Response

HTTP/1.1 200 OK

Content-Type: text/plain

No telemetry. No account. Your requests stay in files you own.
Resterm is free and open source under the Apache 2.0 license.

Search

↑↓ moveEnter openEsc close

Help

These keys work like the ones in the TUI.

/
Search the docs (also Ctrl K)
j k
Scroll down and up
g g G
Jump to the top or the bottom
[ ]
Previous and next docs page
g d
Docs index
g h
Home page
t
Switch between dark and light
?
Show this help
Esc
Close a dialog