Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>RestRoomNew to Visual Studio Code? Get it now.
RestRoom

RestRoom

SamXtremes

|
3 installs
| (0) | Free
A lightweight, local-only API client inside VS Code. No account, no sign-in, no cloud sync — just send requests, save collections, and manage environments.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

RestRoom

A lightweight, local-only API client that lives inside VS Code — the most-used parts of Postman, with no account, no sign-in, and no cloud sync. Everything is stored on your machine using VS Code's own storage.

Features

  • Send requests — GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS
  • Params — query params two-way synced with the URL bar
  • Headers — enable/disable individual headers
  • Body — None, JSON (with a "Format JSON" beautifier), Text, HTML, XML, x-www-form-urlencoded, and multipart Form Data (text fields)
  • Auth — No Auth, Basic Auth, Bearer Token (adds the Authorization header for you)
  • Response viewer — status, time, size, Pretty/Raw JSON with syntax highlighting, and response headers
  • Collections — save requests into named collections, rename/duplicate/delete
  • Environments — named variable sets plus a always-on Globals environment; use {{variableName}} anywhere in the URL, params, headers, body, or auth fields
  • History — every send is recorded; reopen, delete, or save any past request into a collection
  • Copy as cURL
  • Import & Export — Postman Collection v2.1 compatible, so files move freely between this extension and real Postman
  • Ctrl/Cmd+Enter to send while the request tab is focused

No telemetry, no external servers, no login screen — requests go straight from your machine to the API you're calling.

Running it

This extension has no build step (plain JS), so you can run it straight from source:

  1. Open this folder in VS Code.
  2. Press F5 (or Run → Start Debugging). This launches an Extension Development Host window with the extension active.
  3. Click the plug/arrow icon in the Activity Bar to open the REST Client sidebar (Collections, Environments, History).
  4. Click New Request to open a request tab, enter a URL, and hit Send.

Packaging a .vsix you can install permanently (no marketplace needed)

npm install -g @vscode/vsce
cd rest-client-lite   # this folder
vsce package

That produces a .vsix file. Install it via the Extensions view → ··· menu → Install from VSIX…, or:

code --install-extension rest-client-lite-0.1.0.vsix

This is enough to use the extension yourself or share the file with a few people — no account of any kind required.

Publishing it publicly

To make it installable by anyone from inside VS Code's Extensions view, it needs to go to a public registry. There are two, and you can do either or both — publishing doesn't require the extension's users to sign in to anything, only you as the publisher need an account.

Before publishing, edit three placeholders:

  • publisher in package.json (see step 2 below for how this is chosen)
  • repository.url and bugs.url in package.json (point at your own GitHub repo, or delete these two fields if you don't have one)
  • the copyright name in LICENSE

Option A — the official VS Code Marketplace

  1. Install the CLI: npm install -g @vscode/vsce

  2. Create a publisher: go to the Marketplace publisher management page, sign in with a Microsoft account, and create a publisher (you choose an ID — this is what goes in package.json's publisher field).

  3. Get a Personal Access Token: in Azure DevOps, open your account → Personal Access Tokens → New Token. Set Organization to All accessible organizations and scope to Marketplace → Manage.

  4. Log in and publish:

    vsce login <your-publisher-id>
    # paste the PAT when prompted
    vsce publish
    

    It's usually live within a few minutes at marketplace.visualstudio.com/items?itemName=<publisher>.rest-client-lite.

  5. To ship an update later: bump the version and run vsce publish patch (or minor/major).

    Heads-up: Microsoft is retiring the "All accessible organizations" (global) PAT type on December 1, 2026. If you're publishing after that date and a PAT no longer works, use Microsoft Entra ID–based auth instead — see Publishing Extensions for the current method.

Option B — Open VSX Registry (used by VSCodium, Cursor, Windsurf, Gitpod, and others)

No Microsoft account needed — sign in with GitHub instead.

npm install -g ovsx
npx ovsx create-namespace rest-client-lite   # or your own namespace name, enter your token when prompted
vsce package                                  # if you haven't already
ovsx publish rest-client-lite-0.1.0.vsix -p <your-open-vsx-token>

Get the token from your profile on open-vsx.org (Settings → Access Tokens) after signing in with GitHub.

Which one should I use?

  • If your users are on plain VS Code → the official Marketplace (Option A).
  • If some are on VS Code forks (VSCodium, Cursor, Windsurf, etc.) → Open VSX (Option B); those editors can't see the official Marketplace at all.
  • Most public extensions do both — the steps don't conflict with each other.

Using variables

  1. Open the Environments view, click + to create one (e.g. "Staging"), and add variables like baseUrl = https://staging.api.example.com.
  2. Click the environment in the sidebar (or pick it from the dropdown in a request tab) to make it active.
  3. Use {{baseUrl}} in any URL, header, param, or body field.
  4. The Globals environment (top of the Environments list) is always applied, regardless of which environment is active — handy for things like a shared API key.

Import & Export

Files are written in the standard Postman Collection v2.1 format (*.postman_collection.json), so they open in real Postman too, and Postman exports can be imported here.

Export:

  • Collection → hover it in the sidebar → the ↑ icon
  • A single saved request → hover it → the ↑ icon
  • An open (even unsaved) request tab → Export button next to Copy cURL

Import:

  • Collections view title bar → the ↓ icon → pick a .json file
  • A whole Postman collection imports as a new collection here (nested folders are flattened into the request name, e.g. "Users / Get User")
  • A single exported Postman request imports into a collection you pick (or a new one)
  • Basic and Bearer auth carry over; other auth types (OAuth2, API Key, etc.) import as No Auth, with a warning telling you how many requests were affected

Project layout

package.json               Extension manifest (commands, views, menus)
src/extension.js           Activation: wires up tree views + commands
src/storage.js             All persistence (globalState) — collections, environments, history
src/httpClient.js          Performs the actual HTTP request (runs in the extension host, so no CORS issues)
src/utils.js               Variable substitution, URL/params sync, cURL export, formatting
src/postmanFormat.js       Converts between our request/collection model and Postman Collection v2.1
src/exportImport.js        File-dialog side of import/export (save/open dialogs, read/write JSON)
src/panels/requestPanel.js Webview panel controller (one per open request tab)
src/providers/*.js         TreeDataProviders for the three sidebar views
media/main.js              Webview UI (vanilla JS, no framework/build step)
media/style.css            Styling, built from VS Code's own theme variables

Known limitations (v1)

  • Form Data supports text fields only — no file picker yet.
  • Import brings in requests, headers, params, body, and Basic/Bearer auth; other auth types (OAuth2, API Key, AWS Sig v4, etc.) import as No Auth since they're not supported yet — you'll get a warning listing how many requests were affected.
  • Nested Postman folders are flattened on import (a request under folder "Users" becomes "Users / Get User"), since collections here are a single flat list.
  • No pre-request/test scripts.
  • No GraphQL/WebSocket/gRPC support — REST only.

These were left out to keep the initial version focused on the features people reach for most often. The code is structured (see storage.js / httpClient.js) to make adding them later straightforward.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft