WatchAPI - API Client for Next.js, NestJS & tRPC
Make code as source of truth. WatchAPI reads your backend code and builds the request collection for you — automatically synced, always up to date.

What Makes WatchAPI Different
Every other API client (Postman, Thunder Client, Insomnia) makes you write endpoints manually. When you rename a route or add a query param, you have to update your client too. WatchAPI eliminates that entirely.
- Auto-imports endpoints from Next.js, NestJS, tRPC, and PayloadCMS
- Auto-syncs on save — change a route file, your collection updates instantly
- Lives in VS Code — no browser tabs, no context switching, no separate app
- Local-first — all data stays on your machine, no account required to start
- Open source — MIT licensed, self-hostable
Quick Start
- Install from Marketplace or Open VSX
- Click the WatchAPI icon in the activity bar
- Click Sync from Code — your endpoints appear automatically
No config files. No manual setup. Works offline out of the box. Sign in only if you want team collaboration features.

Supported Frameworks
| Framework |
Support |
| Next.js (App Router) |
Full |
| NestJS |
Full |
| tRPC |
Full |
| PayloadCMS |
Full |
| Next.js (Pages Router) |
Partial |
WatchAPI vs the Alternatives
| Feature |
WatchAPI |
Postman |
Thunder Client |
REST Client |
| Auto-import from code |
✓ |
✗ |
✗ |
✗ |
| Auto-sync on file save |
✓ |
✗ |
✗ |
✗ |
| Native VS Code extension |
✓ |
✗ |
✓ |
✓ |
| Team collaboration |
✓ |
✓ |
Paid only |
✗ |
| Production monitoring |
✓ |
✓ |
✗ |
✗ |
| Free tier |
✓ |
Limited |
✓ |
✓ |
| Works offline |
✓ |
Limited |
✓ |
✓ |
| Open source |
✓ |
✗ |
✗ |
✓ |
HTTP File Syntax
WatchAPI uses .http files fully compatible with REST Client syntax.
Basic Request
GET https://api.example.com/users
Authorization: Bearer {{token}}
Request with Body
POST https://api.example.com/users
Content-Type: application/json
{
"name": "John",
"email": "john@example.com"
}
Variables
Define variables at the top of your .http file:
@baseUrl = https://api.example.com
@token = my-secret-token
GET {{baseUrl}}/users
Authorization: Bearer {{token}}
Environment Variables
Create rest-client.env.json in your workspace root:
{
"local": {
"baseUrl": "http://localhost:3000",
"token": "dev-token"
},
"production": {
"baseUrl": "https://api.example.com",
"token": "prod-token"
}
}
System Variables
| Variable |
Description |
Example |
{{$timestamp}} |
Unix timestamp (seconds) |
1737550800 |
{{$guid}} |
Random UUID v4 |
f47ac10b-58cc... |
{{$randomInt min max}} |
Random integer |
{{$randomInt 1 100}} |
{{$processEnv VAR}} |
Process env variable |
{{$processEnv API_KEY}} |
Privacy & Data
Local-first & open source:
- All collections stored on your machine by default
- No telemetry or usage tracking
- Optional cloud sync (only when signed in)
Privacy Policy
Contributing
See SECURITY.md for security vulnerability reporting.
Support
License
MIT License