Telegraph REST API Client
A fast, fully offline REST API client for VS Code. Test HTTP APIs without leaving your editor — no account, no sign-in, no API key, no premium tier. Every feature works locally, and your data never leaves your machine.
A free and open-source alternative to Postman and Thunder Client, built as a lightweight VS Code extension.

Why Telegraph
- Genuinely free — no paid plans, no request limits, no locked features
- Fully offline — no telemetry, no cloud sync, no account required
- Tiny — a ~75 KB download with zero runtime dependencies
- Native feel — follows your VS Code theme, light or dark
- Your data is yours — collections are plain, readable JSON you can commit to git
Features
Requests
- All standard methods:
GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS
- Query parameters and headers with per-row enable/disable and drag-to-reorder
- Body types: JSON, XML, Text, GraphQL, Form Data (with file upload), Form URL Encoded, and Binary
- Auth: Basic and Bearer, with
{{variable}} support
- Cookies tab for sending cookies — including
HttpOnly, since requests bypass the browser cookie jar
- Syntax highlighting for JSON, XML, and GraphQL, with familiar editor shortcuts
- Paste a JavaScript object and it converts to JSON automatically
// comments allowed in JSON bodies, stripped before sending

Bearer and Basic auth accept {{variables}} like anything else:

Cookies are sent as a single Cookie header, so HttpOnly values work here:

GraphQL gets its own query and variables editors, both with folding and
formatting:

Form URL Encoded, with the response highlighted by content type:

Form Data fields take a file path, and uploads report real progress:

Responses
- Status, timing, and response size
- Syntax-highlighted body: JSON, XML, HTML, CSS, JavaScript
- Collapse and expand regions in JSON, XML, HTML, and GraphQL
- Find in response, with match case, whole word, and regex
- Response headers with one-click copy-all
- Cookies tab showing every
Set-Cookie with its attributes

Every Set-Cookie is broken out with its attributes, and any of them can be sent back with the next request:

Streaming responses
Server-sent events and NDJSON render as they arrive instead of waiting for the
stream to close. The newest chunk is highlighted as it lands, with a live event
count and byte total, and Cancel request stops an endless stream at any time.

Redirects
Turn on Follow Redirects and every hop is listed with its status, method,
timing, and any Set-Cookie it sent — including where a POST was downgraded
to a GET. The Activity list keeps a run count for requests you send repeatedly.

Raw request view
The Raw tab shows the exact bytes Telegraph will put on the wire — the real
multipart boundary, the computed Content-Length, and a hex dump of binary
parts. Edit it and choose Apply to request to push changes back into the
other tabs.

Collections
- Nested folders, saved as human-readable JSON
- Drag to reorder or move between collections; hold Ctrl/Cmd while dragging to copy
- Duplicate any request, folder, or collection
- Search across request names and URLs

Environments
- Standalone environments shared across collections
- Or embed an environment directly inside a collection — it travels with the collection when exported
- Import variables from a
.env file, and reload them from disk on demand
{{variable}} works everywhere: URL, query, headers, body, and auth
- Variables that resolve show green with their value on hover; undefined ones show red
- Ctrl/Cmd + click a variable to jump straight to where it is defined

A collection can use no environment, embed its own, or link shared ones:

Import and export
| Format |
Import |
Export |
| Telegraph (collection and environments in one file) |
✅ |
✅ |
| Postman v2.1 collection |
✅ |
✅ |
| Postman environment |
✅ |
✅ |
| OpenAPI 3 / Swagger 2 (JSON) |
✅ |
— |
| cURL |
✅ |
✅ |
.env file |
✅ |
✅ |

Migrating from Postman or Thunder Client? Export from there and import the file directly — folder structure, headers, auth, and bodies are all preserved.
Activity
Ad-hoc requests are tracked automatically with status and timing. Re-running a request updates its existing entry rather than filling the list with duplicates.
Getting started
- Install the extension
- Click the Telegraph icon in the Activity Bar
- Hit New Request, enter a URL, and press Send
Paste a cURL command into the URL bar and Telegraph fills in the method, headers, query, body, and auth for you.
Keyboard shortcuts
| Action |
Shortcut |
| Send request |
Ctrl/Cmd + Enter |
| Save request |
Ctrl/Cmd + S |
| New request |
Ctrl/Cmd + Alt + N |
| Toggle comment (body editor) |
Ctrl/Cmd + / |
| Indent / outdent |
Ctrl/Cmd + ] / [ |
| Duplicate line |
Ctrl/Cmd + Shift + D |
| Delete line |
Ctrl/Cmd + Shift + K |
| Move line up / down |
Alt + ↑ / ↓ |
Settings
| Setting |
Default |
Description |
telegraph.requestTimeout |
0 |
Request timeout in milliseconds. 0 means no timeout |
telegraph.followRedirects |
true |
Follow HTTP redirects (up to 1000 hops) |
telegraph.responseLimit |
2 |
Maximum response size to render, in MB |
telegraph.indentSize |
2 |
Indentation used when formatting JSON |
Where your data lives
Collections, environments, and activity are stored as plain JSON in VS Code's global storage:
collections/ one file per collection
environments/ one file per environment
history.json recent activity
Every file is human-readable and safe to keep in version control. Nothing is ever uploaded anywhere.
A note on secrets: environments often hold tokens and passwords. If you commit them to a repository, treat that repository as sensitive.
Privacy
Telegraph collects no telemetry and makes no network requests of its own. The only requests it sends are the ones you ask it to.
License
MIT — see LICENSE.txt.