openapi-tui

May 10, 2026 · View on GitHub

logo

openapi-tui

CI

Terminal UI to list, browse and run APIs defined with OpenAPI v3.0 and v3.1 spec.

Usage

 openapi-tui --help
This TUI allows you to list and browse APIs described by the openapi specification.

Usage: openapi-tui [OPTIONS] --input <PATH>

Options:
  -i, --input <PATH>          Input file or url, in json or yaml format with openapi specification
  -H, --header <NAME: VALUE>  Global header to attach to every request, in `Name: Value` form. May be repeated.
  -h, --help                  Print help
  -V, --version               Print version

Examples

# open local yaml file
 openapi-tui -i examples/stripe/spec.yml

# open local json file
 openapi-tui -i examples/petstore.json

# open remote file
 openapi-tui -i https://raw.githubusercontent.com/github/rest-api-description/main/descriptions-next/api.github.com/api.github.com.yaml

# attach default headers to every request
 openapi-tui -i examples/petstore.json -H 'Authorization: Bearer xyz' -H 'X-Env: dev'

Demo

demo

Other Feature Animations

Show more

Nested Components

nested-refrences

Fullscreen

fullscreen

Webhooks

webhooks

Filter

filter

Call Endpoints

call

Multiple Server Support

call


Installation

Install from source:

 cargo install openapi-tui

Or download pre-built artifact from release page.

Docker

Just run the application with docker.

# open local file
 docker run --rm -ti -v$(pwd)/examples:/opt zaghaghi/openapi-tui -i /opt/petstore.json

# open remote file
 docker run --rm -it zaghaghi/openapi-tui -i https://raw.githubusercontent.com/github/rest-api-description/main/descriptions-next/api.github.com/api.github.com.yaml

Distro Packages

Packaging status

Packaging status

Arch Linux

You can install using pacman as follows:

 pacman -S openapi-tui

NixOS

You can install the openapi-tui package directly with the following command:

nix profile install github:zaghaghi/openapi-tui

You can also install openapi-tui by adding it to your configuration.nix file.

# flake.nix

{
  inputs.openapi-tui.url = "github:zaghaghi/openapi-tui";
  # ...

  outputs = {nixpkgs, ...} @ inputs: {
    nixosConfigurations.<your-hostname> = nixpkgs.lib.nixosSystem {
      specialArgs = { inherit inputs; }; # this is the important part
      modules = [
        ./configuration.nix
      ];
    };
  }
}

Then, add openapi-tui to your configuration.nix

# configuration.nix

{inputs, pkgs, ...}: {
  environment.systemPackages = with pkgs; [
    inputs.openapi-tui.packages.${pkgs.system}.openapi-tui
  ];
}

Keybindings

KeyAction
, lMove to next pane
, hMove to previous pane
, jMove down in lists
, kMove up in lists
1...9Move between tabs
]Move to next tab
[Move to previous tab
fToggle fullscreen pane
gGo in nested items in lists
qQuit
/Filter apis
:Run commands
?Show help popup with keys and commands
Backspace, bGet out of nested items in lists

Commands Main Page

CommandDescription
qQuit
request, rGo to request page
historyRequest history
authOpen authentication popup to set credentials for components.securitySchemes
helpShow help popup with keys and commands

Commands Request Page

CommandDescription
qQuit
send, sSend request
authOpen authentication popup to set credentials for components.securitySchemes
copy [curl|httpie]Copy the current request to the clipboard. Defaults to curl. e.g. copy curl
helpShow help popup with keys and commands
query, qAdd or remove query strings. sub-commands are add or rm. e.g. query add page
header, hAdd or remove headers. sub-commands are add or rm. e.g. header add x-api-key
request, rLoad request payload. e.g. request open /home/hamed/payload.json
response, sSave response payload e.g. response save /home/hamed/result.json
jq <expr>Filter JSON response with a jq expression. e.g. jq .items[0]
jqClear jq filter and return to normal response view
search <term>Search for a term in the response body (case-insensitive). e.g. search error
searchClear search and return to normal response view

Environment Variables

VariableDescription
OPENAPI_TUI_DEFAULT_SERVERAdd a custom server url to the list of servers

Implemented Features

  • Viewer
  • OpenAPI v3.1
  • Display Webhooks
  • Display Info and Version
  • Filter APIs
  • Remote API specification
  • Merge Parameters Based on in
  • Pane Fullscreen Mode
  • Nested Components
  • Status Line
  • Phone Page
  • Call History
  • Request Plain Editor
  • Header Input (No Validation)
  • Path Input (No Validation)
  • Calling
  • Plain Response Viewer (Status + Headers + Body)
  • History viewer
  • Refactor footer, add flash footer messages
  • Import request body file
  • Save response body and header
  • Command history with ↑/↓
  • Support array query strings
  • Suppert extra headers
  • Support multiple servers
  • Format response body by content-type (JSON pretty-print)
  • Syntax highlighting in response viewer
  • Line numbers in response viewer
  • Scroll response body with j/k
  • JQ filter for JSON responses
  • Text search in response body
  • Request progress bar
  • Display Key Mappings in Popup

Backlog

  • Schema Types (openapi-31)
  • Read Spec from STDIN