🚀 Endpoint
The REST Client that feels like home in VS Code
Test APIs without leaving your editor. Beautiful native GUI. Zero context switching.
✨ 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:
- Open a request's Settings tab
- Select a "Pre-Request" from the dropdown
- 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:
- Name your first request — Enter a name in the "Name" field (e.g.,
login)
- Send the request — The response is automatically stored in memory
- 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:
- 🔹 Request-level (
@baseUrl = ...)
- 🔹 Active environment
- 🔹 Collection-level variables
- 🔹
.env file (workspace root)
- 🔹 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:
- Right-click collection → Collection Settings
- Add default headers, auth, or collection-level variables
- 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:
- Right-click a collection → Store in Repository
- Collection is saved to
.endpoint/collections/ as JSON
- 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.
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
- Open Environments in the sidebar
- Click ➕ to create an environment
- Right-click → "Add Variable"
- 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