ShellReq API Client

A native, blazing-fast API client — built right inside Visual Studio Code.
No context switching. No external apps. Just pure, focused API testing.
Overview
ShellReq is a lightweight, fully integrated API testing client for Visual Studio Code. It lives in your sidebar, speaks your workflow's language, and stays out of your way — giving you everything you need to test, inspect, and manage HTTP requests without ever leaving your editor.
Designed for developers who want speed, clarity, and zero clutter.
Features
- Sidebar API Client — Full REST client in the VS Code activity bar, always one click away.
- Draggable Splitter — Resize the request and response panels by dragging the divider bar.
- Full HTTP Support — GET, POST, PUT, PATCH, DELETE, HEAD with headers, params, and body.
- Key-Value Editors — Structured editors for query params and request headers.
- JSON Body Editor — Write and send JSON payloads; Format JSON prettifies the body tab.
- Smart Collections — Save requests, reload instantly, remove individual items, or clear all.
- Auto History — Last 50 requests saved automatically; click any entry to replay.
- Response Tools — Copy response body to clipboard, clear the response panel, view headers tab.
- URL Helpers — Auto-prepends
https:// when the scheme is omitted; query params are merged into the URL.
- Configurable Timeout — Set
shellreq.requestTimeoutMs in VS Code settings (default 30s).
- Persistent State — Last request, headers, params, and panel layout survive restarts and tab switches.
- Zero Runtime Dependencies — Uses Node.js built-in
http/https — no axios, no supply chain risk.
- Built by Mahesh Shinde — Shown in the bottom-right corner of the panel.
Getting Started
1. Open the Client
Click the ⚡ ShellReq lightning bolt icon in the VS Code Activity Bar (left sidebar).
2. Build Your Request
| Section |
What to Do |
| Method |
Select GET, POST, PUT, PATCH, or DELETE |
| URL |
Enter your endpoint URL |
| Params |
Add query parameters using the key-value editor |
| Headers |
Add request headers using the key-value editor |
| Body |
Enter JSON payloads for POST/PUT/PATCH requests |
3. Send and Inspect
Click ▶ SEND. The response panel shows:
- Status badge (green for 2xx, amber for 3xx, red for 4xx/5xx)
- Response time in milliseconds
- Payload size
- Formatted JSON body (or raw text)
- Full response headers
4. Resize Panels
Drag the splitter bar between the request and response panels to adjust the layout.
5. Save to Collections
Click ★ Save to Collection to permanently save the current request.
Commands
Access these via the Command Palette (Ctrl+Shift+P / Cmd+Shift+P):
| Command |
Description |
ShellReq: Focus API Client |
Jump to the ShellReq sidebar |
ShellReq: Open API Client |
Open the API client panel |
ShellReq: Send Request |
Send the current request from the sidebar |
ShellReq: Clear Request History |
Remove all history entries |
Settings
| Setting |
Default |
Description |
shellreq.requestTimeoutMs |
30000 |
HTTP request timeout in milliseconds |
Keyboard Shortcuts
| Shortcut |
Action |
Enter in URL field |
Send request immediately |
Ctrl+Shift+Enter / Cmd+Shift+Enter |
Send request (when ShellReq view is focused) |
Requirements
- Visual Studio Code
^1.85.0 or later
- No external runtime dependencies required
Development
From vscode-extension/shellreq-api-client:
npm install
npm run compile # dev build → dist/extension.js
npm run package # production build (minified)
Press F5 in VS Code to launch an Extension Development Host with the sidebar client loaded.
Changelog
v0.4.1
Fixes
- Reliable draggable splitbar (mouse/touch/pointer) with persisted panel height
- 5 MB response body cap for stability
v0.4.0
Critical fix
- Fixed webview HTML generation broken by esbuild (sidebar UI and scripts did not load). HTML is now built with safe array joins.
New features
- HEAD method, Format JSON body, New Request reset, Copy/Clear response, delete/clear collections
- Auto
https:// URL prefix, configurable request timeout, ShellReq: Send Request command
- Webview retains context when hidden; improved host-not-found error messages
v0.3.1
Bug Fixes & Stability
- Fixed draggable splitbar events.
- Made API methods robust for POST requests lacking content lengths.
- Fixed UI components loading and history persistence.
- Improved defensive state handling.
v0.3.0
Bug Fixes & Stability
- Fixed webview tab switching and draggable splitter (works with mouse and touch).
- Stabilized message passing between webview and extension host to avoid lost updates.
- Mirrored webview runtime bundle in
dist/ so the published extension receives the fixes.
Security & Maintenance
- Continued removal of risky runtime dependencies; networking uses Node built-ins.
- Temporary TypeScript suppressions removed from distribution build to ensure runtime stability.
v0.2.0
New Features
- Draggable splitter bar between request and response panels
- Enter key in the URL field triggers send immediately
- "Built by Mahesh Shinde" footer branding
- Improved response viewer and placeholder states
Security Improvements
- Removed
axios runtime dependency
- Replaced networking with Node.js built-in
http/https
- Fixed shell injection vulnerability from unsafe
exec() usage
- Removed vulnerable dependency chain from
shellreq
UI Improvements
- Cleaner compact layout
- Better status badges
- Improved typography and spacing
- Scrollable response body and headers
- Smoother tab switching and state sync
Stability Fixes
- Fixed request/response panel rendering bugs
- Improved persistence and collection syncing
- Fixed multiple TypeScript/runtime issues
v0.1.2 — Production Stability Overhaul
- Fixed UI and state synchronization bugs
- Improved bi-directional sync between extension host and Webview
- Added CSP for secure Webview execution
- Added loading spinner and disabled states during requests
v0.1.1
- Minor stability improvements and internal refactoring
v0.1.0 — Official Release
- Native Sidebar API Client
- Full HTTP method support
- Collections and request history
- Introduced sidebar-first layout
- Added persistent storage for collections and history
Contributing
Contributions, bug reports, and feature requests are welcome!
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature
- Commit your changes and open a Pull Request
License
This project is licensed under the MIT License.