Keyboard-driven TUI for testing HTTP endpoints

API management through directory and file structures rather than monolithic JSON files. Eliminates merge conflicts and maintains git compatibility with individual request files. Support for .http, .yaml, .json, .jsonc, .ws, and OpenAPI formats.

Features

File-Based Organization

Multiple format support: .http, .yaml, .json, .jsonc, .ws, and OpenAPI. Request organization through categories and filtering systems. Run requests by name without extension using the CLI.

Variable System

Template syntax with {{varName}} and shell command execution via $(cmd). Environment-specific profiles with multi-value variable support. Load variables from .env files or override inline.

Request Execution

Dependency chaining with automatic variable extraction. Real-time streaming for SSE and WebSocket protocols. GraphQL and HTTP protocol support with cancellation.

Authentication

OAuth 2.0 with PKCE flow authentication. mTLS support with client certificate management. Dynamic certificate loading through variable interpolation.

Response Analysis

JMESPath and bash-based filtering with bookmarked filters. Response comparison and regression testing through pinning. Error reporting with stack traces and embedded documentation.

Analytics & History

Per-endpoint analytics and aggregated metrics. Persistent request history with search functionality. Automatic session cleanup on profile switch.

Performance Testing

Configurable load generation with concurrency controls and gradual ramp-up. Real-time metrics: latency, throughput, percentile analysis. Historical test result comparisons.

Developer Utilities

YAML-based mock server implementation. HTTP traffic inspection via debug proxy. CLI mode with JSON/YAML output for automation.

Converters

HAR file conversion for browser recordings. cURL to request file conversion. OpenAPI spec to request files conversion.

Check the documentation for the complete list.

Quick Start

# Start the interactive TUI
restcli

# Run by filename (no extension needed)
restcli run get-user

# Override variables inline
restcli run get-user -e id=123 -e env=prod

# Load environment from .env file
restcli --env-file .env.local request.http

# Convert cURL to YAML format
pbpaste | restcli curl2http --format yaml -o request.yaml

# Import OpenAPI as JSON
restcli openapi2http swagger.json --format json -o requests/

# Convert HAR file to request files
restcli har2http recording.har -o requests/

Get Started

Download for macOS and Linux and start testing HTTP endpoints, WebSocket connections, and GraphQL queries from your terminal. Join the community on Discord for support and updates.