Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>EndpointNew to Visual Studio Code? Get it now.
Endpoint

Endpoint

Preview

Tim Heuer

timheuer.com
|
10 installs
| (0) | Free
REST Client with UI
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

🚀 Endpoint

The REST Client that feels like home in VS Code

Test APIs without leaving your editor. Beautiful native GUI. Zero context switching.

vscode-endpoint

✨ Why Endpoint?

🎨 Native Look & Feel Built with VS Code's design language — no jarring external windows
📁 Portable .http Files Your requests are just text files. Version control them, share them, import them anywhere
🔗 Request Chaining Use one response in the next request — perfect for OAuth and multi-step flows
🌍 Environment Variables Switch between dev, staging, and prod with a single click
📦 Collections Organize requests with shared defaults for headers and auth
⏱️ History Never lose a request — automatic tracking of everything you send

🎯 Features

🛠️ Full-Featured Request Builder

Build any HTTP request with an intuitive tabbed interface:

  • Methods: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS
  • Query Params: Visual key-value editor
  • Headers: Add, remove, enable/disable with toggles
  • Auth: None, Basic, Bearer Token, API Key (header or query param)
  • Body: JSON, Form Data, Raw Text, XML
  • Resizable Split Pane: Drag the divider between request and response to customize your view
  • Response Compression: Automatic gzip/deflate decompression
  • Syntax Highlighting: Beautiful code highlighting for JSON, XML, HTML responses

⚡ Pre-Request Execution (chaining)

Run another request automatically before your main request — perfect for auth token refresh:

  1. Open a request's Settings tab
  2. Select a "Pre-Request" from the dropdown
  3. The pre-request runs first, storing its response for chaining

Cycle detection prevents infinite loops (A→B→A chains are blocked).

🔗 Request Chaining

Chain requests together — grab a token from one response and use it in the next.

How to use:

  1. Name your first request — Enter a name in the "Name" field (e.g., login)
  2. Send the request — The response is automatically stored in memory
  3. Reference in the next request — Use {{requestName.response.body.path}} in URL, headers, or body
### Login
# Name: "login"
POST {{baseUrl}}/auth/login
Content-Type: application/json

{"username": "admin", "password": "secret"}

### Use the token
GET {{baseUrl}}/protected/resource
Authorization: Bearer {{login.response.body.token}}
Reference Returns
{{name.response.body}} Entire response body
{{name.response.body.token}} JSON property
{{name.response.body.data[0].id}} Array access
{{name.response.headers.X-Custom}} Header value
{{name.response.status}} Status code

Note: Responses are session-scoped and cleared when VS Code restarts.

📋 Copy as Code

Generate code snippets in 6 languages — right-click any request or use the Command Palette:

Language Library
cURL Command line
JavaScript fetch API
Python requests
C# HttpClient
Go net/http
PHP curl

Variable handling: Choose to resolve variables with current values or keep {{placeholders}} — placeholders convert to language-specific environment variable syntax (e.g., process.env.VAR for JavaScript).

🌍 Smart Variables

Variables resolve automatically with intelligent precedence:

  1. 🔹 Request-level (@baseUrl = ...)
  2. 🔹 Active environment
  3. 🔹 Collection-level variables
  4. 🔹 .env file (workspace root)
  5. 🔹 Built-in dynamic values

.env file support: Place a .env file in your workspace root and variables are automatically available:

# .env
BASE_URL=https://api.example.com
API_KEY=your-secret-key

Built-in variables:

Variable What it does
{{$timestamp}} ISO 8601 timestamp
{{$guid}} Fresh UUID v4
{{$randomint}} Random integer
{{$env:VAR_NAME}} System env variable

📦 Collection Defaults

Set default headers, auth, and variables for an entire collection — individual requests can override:

  1. Right-click collection → Collection Settings
  2. Add default headers, auth, or collection-level variables
  3. All requests inherit these automatically

Inheritance controls:

  • Requests can disable individual inherited headers
  • Auth can be set to "Inherit from Collection" or overridden per-request

📂 Repo-Based Collections

Share collections with your team via version control:

  1. Right-click a collection → Store in Repository
  2. Collection is saved to .endpoint/collections/ as JSON
  3. Commit and push — team members get the collection automatically

What gets shared:

  • ✅ Requests (URL, method, headers, body)
  • ✅ Collection structure and metadata
  • ✅ Non-sensitive configuration

What stays local:

  • 🔒 Passwords, tokens, API keys (stored in VS Code's secure storage)
  • Team members configure their own credentials

.gitignore recommendations:

By default, .endpoint/collections/*.json files are safe to commit. If you need to exclude specific collections:

# Exclude specific collections
.endpoint/collections/my-local-only.json

# Or exclude all (not recommended)
.endpoint/collections/

📜 History Management

Every request you send is automatically tracked:

  • Replay: Click any history item to reopen and resend
  • Save to Collection: Right-click → Save to preserve a useful request
  • Delete: Remove individual items or clear all history
  • Configurable Limit: Control how many items to retain in settings

📥 Smart Import

Import .http and .rest files with intelligent processing:

  • Auth Detection: Authorization: Bearer and Authorization: Basic headers are automatically converted to proper auth configuration
  • Variable Extraction: File-level variables are detected and can create a new environment
  • Import Summary: Detailed report showing what was imported and recommended next steps
  • REST Client Compatibility: {{$dotenv VAR}} syntax is automatically converted to {{VAR}}

🔄 Settings Sync

Your collections and environment metadata sync across machines via VS Code's built-in Settings Sync:

  • ✅ Collections (all requests, headers, structure)
  • ✅ Environment names and variable names
  • ❌ Environment variable values stay local (stored in OS secure storage)
  • ❌ History (machine-specific)

⚡ Quick Start

Action Mac Windows/Linux
➕ New Request Cmd+Shift+R Ctrl+Shift+R
📥 Import .http Cmd+Shift+I Ctrl+Shift+I
📤 Export Collection Cmd+Shift+E Ctrl+Shift+E

Context menus: Right-click on collections, requests, environments, and history items for all available actions including Copy as Code, Save to Collection, Duplicate, and more.

Or use the Collections sidebar — click ➕ to create, right-click to export.


📄 File Format

Standard .http format — works with other tools too:

@baseUrl = https://api.example.com
@token = my-secret-token

### Get all users
GET {{baseUrl}}/users
Authorization: Bearer {{token}}
Accept: application/json

### Create user
POST {{baseUrl}}/users
Content-Type: application/json

{
    "name": "John Doe",
    "email": "john@example.com"
}

⚙️ Configuration

Setting Default Description
endpoint.logLevel info Logging: off, error, warn, info, debug, trace
endpoint.timeout 30000 Request timeout in milliseconds (0 for no timeout)
endpoint.followRedirects true Follow HTTP redirects
endpoint.maxRedirects 10 Maximum number of redirects to follow (0-50)
endpoint.rejectUnauthorized true Reject unauthorized SSL certificates
endpoint.historyLimit 20 Maximum number of history items to retain (0-1000)
endpoint.defaultContentType json Default body type: json, form, xml, text, none

📚 Full Variable Reference

Variable Syntax

Use {{variableName}} anywhere — URLs, headers, body.

Built-in Variables

Variable Alias Description
{{$timestamp}} {{$datetime}} ISO 8601 timestamp
{{$timestamp_unix}} {{$unix}} Unix timestamp (seconds)
{{$date}} Date only (YYYY-MM-DD)
{{$time}} Time only (HH:MM:SS)
{{$guid}} {{$uuid}} UUID v4
{{$randomint}} Random integer (0-999999)
{{$env:VAR_NAME}} System environment variable

Setting Up Environments

  1. Open Environments in the sidebar
  2. Click ➕ to create an environment
  3. Right-click → "Add Variable"
  4. Right-click → "Set as Active"
🔧 Development
npm install
npm run watch

Press F5 to launch the extension development host.

Commands

Command Description
npm run compile Full build
npm run watch Watch mode
npm run check-types Type check
npm run lint Lint
npm run test Run tests

Project Structure

src/
├── codegen/          # Code generation (6 languages)
├── commands/         # Import/Export/Copy as Code
├── http/             # HTTP client & syntax highlighting
├── models/           # Data interfaces
├── parser/           # .http parser & variable resolver
├── providers/        # Sidebar views & decorations
├── storage/          # Persistence & .env support
└── webview/          # Request panel UI

📝 License

MIT

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