API Client
A Postman-compatible API client built into Jasper. Available in the Revio Desktop app and on the web, with real-time team collaboration.
Open the web client in Jasper
Sign in to access the live API Client at /api-tester — collections, environments, monitors, and the mock server are all there waiting.
Introduction
Jasper's API Client is a Postman-compatible tool for testing APIs that lives inside your team workspace. It runs in two surfaces — the web app at /api-tester for quick access from anywhere, and the Revio Desktop app for offline-friendly use and CORS bypass — and both stay in sync via the same backend.
Coming from Postman? Jump straight to the Import Postman Collections section, or read the Jasper vs Postman comparison for a side-by-side feature and pricing breakdown. For the high-level pitch, see the product page.
Related guides
The API Client is one piece of Jasper's developer-tools surface. Related guides:
- Revio Desktop app — install the desktop client for offline-first testing, CORS bypass, and large file uploads.
- CLI tool — Jasper's command-line companion for scripting and CI.
- GitHub Actions — wire collection runs into your CI pipeline.
- API tokens — for programmatic access to Jasper's own API.
- Public gallery — browse and fork shareable collections.
What's new in May 2026
The 16-PR rollout (see changelog) brought the full Postman-clone surface to the web. Highlights:
- Collections + folders with drag-and-drop, Postman v2.0 / v2.1 import, and OpenAPI / Swagger spec import.
- Request editor with all HTTP methods, Headers / Params / Body / Auth tabs, and a one-click Send button (see Request Builder).
- Environments with
{{varName}}substitution across URLs, headers, params, body, and auth (see Environment Variables). - Runs history — every request saved with full payload, response, status, time, and size.
- Monitors with cadence and custom cron, plus email + in-app alerts on assertion failure or latency spikes.
- Mock server backed by saved examples, with a public mock URL in two clicks.
- AI helpers — describe a request in plain English, analyse a response, or generate Markdown docs from a collection.
- Version history with side-by-side diff and per-revision rollback.
- Collaborator roles (Viewer / Editor / Admin) per collection, plus workspace-wide access controls.
- Public gallery for sharing collections via a public URL with one-click forking.
- SDK + Postman export — one-click export to Postman v2.1, OpenAPI 3.0, or generated TypeScript / Python / PHP SDKs.
Key Features
- Collections & Folders — Organize requests in hierarchical collections
- Environment Variables — Switch between dev, staging, and production
- Request Builder — Support for all HTTP methods
- Response Viewer — Syntax highlighting for JSON, XML, and more
- Team Collaboration — Share collections with your team
- Request History — Track all requests with versioning
Note: The API Client is available in the Revio Desktop application. Learn more about the Desktop App.
Getting Started
Opening the API Client
- Open the Revio Desktop application
- Click API Client in the sidebar
- You'll see your workspace with collections on the left
Creating Your First Request
- Click the + button to create a new tab
- Select the HTTP method (GET, POST, PUT, etc.)
- Enter the URL you want to test
- Add any headers, query params, or body as needed
- Click Send
Collections & Folders
Organize your API requests into collections and folders for easy access and sharing.
Creating a Collection
- Click New Collection in the sidebar
- Enter a name and optional description
- Choose the visibility (personal or team)
- Click Create
Organizing with Folders
Collections can contain nested folders to organize requests by endpoint, feature, or any structure you prefer.
- Right-click a collection to add a folder
- Drag and drop requests between folders
- Folders can be nested up to 5 levels deep
Saving Requests
- Configure your request in the main panel
- Press Cmd+S (Mac) or Ctrl+S (Windows)
- Select the collection and folder to save to
- Enter a descriptive name
- Click Save
Request Builder
HTTP Methods
All standard HTTP methods are supported:
| Method | Use Case |
|---|---|
GET |
Retrieve data |
POST |
Create new resources |
PUT |
Update/replace resources |
PATCH |
Partial updates |
DELETE |
Remove resources |
HEAD |
Get headers only |
OPTIONS |
CORS preflight |
Headers
Add custom headers to your requests:
- Click the Headers tab
- Enter key-value pairs
- Toggle headers on/off without deleting them
- Common headers like
Content-Typeare auto-suggested
Query Parameters
Add query string parameters:
- Click the Params tab
- Enter key-value pairs
- Parameters are automatically URL-encoded
- The URL updates in real-time as you add params
Request Body
For POST, PUT, and PATCH requests, configure the request body:
| Type | Description |
|---|---|
| JSON | Raw JSON with syntax highlighting and validation |
| XML | Raw XML content |
| Text | Plain text body |
| Form Data | multipart/form-data for file uploads |
| URL Encoded | application/x-www-form-urlencoded |
Authentication
Configure authentication for your API requests:
Supported Auth Types
| Type | Description |
|---|---|
| No Auth | No authentication required |
| API Key | Send key as header or query param |
| Bearer Token | JWT or OAuth access tokens |
| Basic Auth | Username and password |
Setting Authentication
- Click the Auth tab in the request builder
- Select the authentication type
- Enter the required credentials
- Auth headers are automatically added to requests
Security Tip: Store sensitive credentials in environment variables rather than hardcoding them in requests.
Environment Variables
Use environment variables to switch between different configurations.
Creating Environments
- Click the environment dropdown in the top bar
- Select Manage Environments
- Click Add Environment
- Enter a name (e.g., "Development", "Staging", "Production")
- Add key-value pairs for your variables
Using Variables
Reference variables in your requests using double curly braces:
{{base_url}}/api/users/{{user_id}}
Variables can be used in:
- URLs
- Headers
- Query parameters
- Request body
- Authentication fields
Variable Scope
- Environment Variables — Tied to the selected environment
- Collection Variables — Shared across the collection
- Global Variables — Available in all requests
Response Viewer
After sending a request, view the response with full details:
Response Body
- Syntax highlighting for JSON and XML
- Collapsible/expandable JSON tree view
- Raw view for plain text
- Search within response
- Copy response to clipboard
Response Details
- Status — HTTP status code and message
- Time — Request duration in milliseconds
- Size — Response body size
- Headers — All response headers
- Cookies — Set-Cookie headers
Request Tabs
Work on multiple requests simultaneously with tabbed interface:
- Open multiple tabs for different requests
- Tabs show unsaved changes indicator
- Reorder tabs by dragging
- Middle-click to close tabs
- Right-click for tab options
Request History
All requests are automatically logged in history:
- View recent requests in the History panel
- Search history by URL or method
- Click any history item to load it
- History is synced across devices
Import Postman Collections
Easily migrate from Postman by importing your existing collections:
- Export your collection from Postman (v2.0 or v2.1 format)
- In the API Client, click Import
- Select the exported JSON file
- Review the import preview
- Click Import
Supported imports include:
- Collections with folders
- Requests with all settings
- Environment variables
- Collection variables
Team Collaboration
Share collections with your team for consistent API testing:
Sharing Collections
- Right-click a collection
- Select Share with Team
- The collection becomes visible to all organization members
Real-time Sync
Changes to shared collections are synced in real-time via WebSockets:
- See when teammates edit collections
- Automatic conflict resolution
- Offline support with sync on reconnect
Desktop & Web Sync
The desktop app and the web app are two views into the same data. Anything you create or change on one surface shows up on the other. There's no “export and re-import” step.
How sync works
- Same backend — both surfaces talk to the Laravel
api-tester/*endpoints, so collections, environments, history, and team membership are identical regardless of where you opened them. - Real-time updates — the desktop and web clients each subscribe to your organisation's WebSocket channel, so an edit on one device propagates within a second to every other open client.
- Active-editing protection — if you have a request focused and a teammate updates it, your in-progress edit is preserved. The remote update queues and applies once you stop typing (500ms debounce).
- Conflict resolution — if both you and a teammate have unsaved changes to the same item, you'll see a side-by-side picker on save: Keep mine, Use theirs, or merge by hand.
- Offline behaviour — the desktop app keeps working offline. Pending changes queue locally and sync the moment the connection comes back. Sync status lives in the bottom-right corner of the app: Synced, Pending, or Offline.
When to use which surface
| Use case | Recommended surface |
|---|---|
| Hitting a localhost API on your machine | Desktop (no browser CORS, full network access) |
| File uploads > 10MB | Desktop (browser upload limits don't apply) |
| Quick check from a teammate's laptop or a kiosk | Web (no install required) |
| Mobile or tablet on the go | Web (responsive on smaller screens) |
Keyboard Shortcuts
| Action | Mac | Windows |
|---|---|---|
| Send Request | Cmd+Enter | Ctrl+Enter |
| Save Request | Cmd+S | Ctrl+S |
| New Tab | Cmd+T | Ctrl+T |
| Close Tab | Cmd+W | Ctrl+W |
| Search Requests | Cmd+P | Ctrl+P |
| Toggle Sidebar | Cmd+B | Ctrl+B |
Troubleshooting
The variable I referenced is showing up as literal {{name}} in the URL or response
Three things to check:
- Environment selected? — the environment dropdown in the top bar should show the environment that defines this variable. If it shows No environment, pick one.
- Variable name typo? — variables are case-sensitive.
{{baseUrl}}won't pick up a variable defined asbaseurl. - Scope conflict? — environment variables override collection variables, which override globals. Open Manage environments and check which scope is winning.
Request fails with a CORS error
CORS is a browser-only restriction. The desktop app uses Electron's net module, which bypasses CORS entirely — if the same request fails in the web app but works on desktop, that's the cause. For day-to-day testing of your own backend, switch to the desktop app, or configure your server to send the appropriate Access-Control-Allow-Origin header.
Collection isn't syncing across devices
- Check the sync status indicator (bottom-right of the desktop app, or the connection dot in the web sidebar). If it shows Offline, you've lost your WebSocket connection — refresh the page or restart the app.
- Confirm both surfaces are signed in to the same organisation. The dropdown is at the top-left of the workspace.
- Check that the collection is shared with the team, not marked personal. Right-click the collection → Visibility.
- If you're behind a corporate firewall or VPN, WebSocket traffic on port 443 to
ws.heyjasper.aineeds to be allowed.
The Authorization header isn't being sent
Open the Auth tab. If it's set to Inherit from parent but no parent (collection or folder) defines an auth strategy, no header is added. Either set an explicit auth type on the request, or configure auth on the collection.
File upload fails with “Request entity too large”
The hard limit on a single uploaded file is 100MB. Above that you'll need to chunk the upload, use a presigned URL flow, or temporarily target your server's raw upload endpoint outside the API client.
“Server unreachable” or 5xx on every request
First check the status page. If everything's green, copy the Request ID from the response viewer's Detailed tab and send it to support — we can trace the request server-side from that ID.
Postman import skipped some requests
We support Postman Collection v2.0 and v2.1. v1 collections must be converted in Postman first (right-click the collection → Edit → toggle to v2). Auth strategies that depend on Postman scripts (e.g. dynamic OAuth) can import the request shell but the script itself doesn't carry over — pre-request and test scripts are on the roadmap.
Future Features
Planned features for upcoming releases:
- OAuth 2.0 — Full OAuth authentication flows
- Pre-request Scripts — JavaScript scripts to run before requests
- Test Scripts — Assertions and automated testing
- GraphQL Support — GraphQL query builder and explorer
- WebSocket Testing — Test WebSocket connections
- Code Generation — Generate curl, axios, fetch code
- Mock Servers — Create mock API endpoints
Need help? Check the Troubleshooting section, the Desktop App documentation, or contact support.