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.

HTTPGraphQLgRPCWebSocketSSEmacOS, Linux, WindowsApache-2.0

### 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"}$ resterm mock requests.http &

Mock server listening on http://127.0.0.1:8080 (2 routes, 2 scenarios)

$ resterm run --env dev --all requests.http

Running 2 target(s) from requests.http with env dev

PASS POST Hello [200 OK in 12.5625ms]

Source Target: {{base.url}}/hello

Effective Target: http://127.0.0.1:8080/hello

PASS 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=0brew install restermmacOS and Linux

curl -fsSL https://raw.githubusercontent.com/unkn0wn-root/resterm/main/install.sh | bashmacOS and Linux

iwr -useb https://raw.githubusercontent.com/unkn0wn-root/resterm/main/install.ps1 | iexPowerShell

go install github.com/unkn0wn-root/resterm/cmd/resterm@latestGo 1.25 or newer

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

$ 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.

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.