rest-sh/restish

Restish is a CLI for interacting with REST-ish HTTP APIs with some nice features built-in

Go

1,384

1,372 commits

updated Sep 29, 2026

See the code

README

Restish

CI Docs Site Release Go Reference License

Restish is a CLI for working with REST-ish HTTP APIs. It can make generic HTTP requests, discover OpenAPI descriptions, generate API-aware commands, manage profiles and auth, render structured output, follow pagination links, and run plugins.

Restish v2 is the active release line. Users who need the legacy v1 line can install rest-sh/tap/restish@1; see the v1 upgrade guide.

Try It

Make a direct request with no setup beyond installing the CLI:

restish api.rest.sh/types

Then format, filter, and page through real API responses:

restish api.rest.sh/images -o table --rsh-columns name,format,self
restish api.rest.sh/example -f 'body.basics.{name, label, profiles}'

Example table output:

name                       format  self
Dragonfly macro            jpeg    /images/jpeg
Origami under blacklight   webp    /images/webp
Andy Warhol mural in Miami gif     /images/gif

Sponsors

A big thank you to our sponsor!

SerpApi

SerpApi: Web Search API

Access Google Search, Maps, Shopping, and other search engine data with a simple API by SerpApi.

Learn more

Install

Use Homebrew for the easiest managed install on macOS:

brew install restish
restish --version

Or use mise:

mise use -g restish@latest
restish --version

Install the latest tagged v2 release from source with Go:

go install github.com/rest-sh/restish/v2/cmd/restish@latest
restish --help

Check restish --version after installation. See the install guide for shell setup, upgrades, and platform notes.

Why Restish?

  • Use one-off HTTP commands with good defaults for headers, content types, retries, caching, TLS, and output.
  • Connect OpenAPI descriptions to get generated API commands, help, profiles, auth, and shell completion.
  • Filter normalized responses with shorthand or jq, then render JSON, YAML, tables, CSV, NDJSON, lines, gron, images, and raw downloads.
  • Follow pagination links and stream API data without writing boilerplate loops.
  • Extend the CLI with plugins for bulk workflows, CSV, MCP, TLS signing, and custom API behavior.

Documentation

Plugins

Bundled plugins live in this repository and can be built alongside the main CLI:

go build ./cmd/restish-bulk
go build ./cmd/restish-csv
go build ./cmd/restish-mcp
go build ./cmd/restish-pkcs11

Start with Install and Use Plugins or Plugin Quickstart.

Development

Build from this repository when developing Restish itself:

go build ./cmd/restish
./restish --help
./restish api.rest.sh/types

Run the normal development loop with:

go test ./...

Build the CLI and bundled plugins with:

go build ./cmd/restish
go build ./cmd/restish-bulk
go build ./cmd/restish-csv
go build ./cmd/restish-mcp
go build ./cmd/restish-pkcs11

Run the full integration suite before releases or larger CLI/plugin changes:

go test -tags=integration ./...

Development docs:

License

Restish is released under the MIT License. See LICENSE.md.

auth
auth0
brotli
cbor
cli
fastapi
gzip
hacktoberfest
http2
hypermedia
json
json-schema
msgpack
oauth2
openapi3
openapi31
rest
rest-client
swagger
yaml

rest-sh/restish

Restish is a CLI for interacting with REST-ish HTTP APIs with some nice features built-in

Go

1,384

1,372 commits

updated Sep 29, 2026

See the code

README

Restish

CI Docs Site Release Go Reference License

Restish is a CLI for working with REST-ish HTTP APIs. It can make generic HTTP requests, discover OpenAPI descriptions, generate API-aware commands, manage profiles and auth, render structured output, follow pagination links, and run plugins.

Restish v2 is the active release line. Users who need the legacy v1 line can install rest-sh/tap/restish@1; see the v1 upgrade guide.

Try It

Make a direct request with no setup beyond installing the CLI:

restish api.rest.sh/types

Then format, filter, and page through real API responses:

restish api.rest.sh/images -o table --rsh-columns name,format,self
restish api.rest.sh/example -f 'body.basics.{name, label, profiles}'

Example table output:

name                       format  self
Dragonfly macro            jpeg    /images/jpeg
Origami under blacklight   webp    /images/webp
Andy Warhol mural in Miami gif     /images/gif

Sponsors

A big thank you to our sponsor!

SerpApi

SerpApi: Web Search API

Access Google Search, Maps, Shopping, and other search engine data with a simple API by SerpApi.

Learn more

Install

Use Homebrew for the easiest managed install on macOS:

brew install restish
restish --version

Or use mise:

mise use -g restish@latest
restish --version

Install the latest tagged v2 release from source with Go:

go install github.com/rest-sh/restish/v2/cmd/restish@latest
restish --help

Check restish --version after installation. See the install guide for shell setup, upgrades, and platform notes.

Why Restish?

  • Use one-off HTTP commands with good defaults for headers, content types, retries, caching, TLS, and output.
  • Connect OpenAPI descriptions to get generated API commands, help, profiles, auth, and shell completion.
  • Filter normalized responses with shorthand or jq, then render JSON, YAML, tables, CSV, NDJSON, lines, gron, images, and raw downloads.
  • Follow pagination links and stream API data without writing boilerplate loops.
  • Extend the CLI with plugins for bulk workflows, CSV, MCP, TLS signing, and custom API behavior.

Documentation

Plugins

Bundled plugins live in this repository and can be built alongside the main CLI:

go build ./cmd/restish-bulk
go build ./cmd/restish-csv
go build ./cmd/restish-mcp
go build ./cmd/restish-pkcs11

Start with Install and Use Plugins or Plugin Quickstart.

Development

Build from this repository when developing Restish itself:

go build ./cmd/restish
./restish --help
./restish api.rest.sh/types

Run the normal development loop with:

go test ./...

Build the CLI and bundled plugins with:

go build ./cmd/restish
go build ./cmd/restish-bulk
go build ./cmd/restish-csv
go build ./cmd/restish-mcp
go build ./cmd/restish-pkcs11

Run the full integration suite before releases or larger CLI/plugin changes:

go test -tags=integration ./...

Development docs:

License

Restish is released under the MIT License. See LICENSE.md.

auth
auth0
brotli
cbor
cli
fastapi
gzip
hacktoberfest
http2
hypermedia
json
json-schema
msgpack
oauth2
openapi3
openapi31
rest
rest-client
swagger
yaml

Project health

Latest release

v2.3.0 · Jun 30, 2026

Releases this year

6

Significant stargazers

(top 24 of 44)

Christian Muehlhaeuser

3,417 followers · starred May 2022

Alexandre Dulaunoy

1,488 followers · starred Mar 2026

Miguel Grinberg

12,947 followers · starred May 2024

Marc Philipp

642 followers · starred Mar 2022