Version: 1.0.0
Platform: Windows, Linux
Website: olympstack.com/olympapi
- Getting Started
- Making HTTP Requests
- Collections
- Environments & Variables
- Workspaces
- Request Tabs
- Importing Collections
- Exporting (Pro)
- Pre-Request Scripts (Pro)
- Response Tests (Pro)
- Request Chaining (Pro)
- Git Sync
- Settings
- Keyboard Shortcuts
Windows: Download the installer (.exe) from the releases page and run it. OlympAPI installs to %LocalAppData%\OlympAPI.
Linux: Download the .AppImage or .deb package. For AppImage, make it executable: chmod +x OlympAPI.AppImage && ./OlympAPI.AppImage.
On first launch, OlympAPI creates a workspace called "My Workspace" and opens with an empty request tab.
OlympAPI is free to use with limits. To unlock Pro features:
- Open Settings (top-right gear icon or
Ctrl+,) - Tap Activation → enter your Invoice ID and Activation Token
- Tap Activate — the license is verified offline and stored securely
Free plan limits: 3 collections, 3 environments, 1 workspace, 1 Git Sync connection.
┌─────────────────────────────────────────────────────────────┐
│ OlympAPI [☀] [⚙] │ ← App Header
├──────────────────────────────────────────────────────────────┤
│ [GET] localhost/api/users ● ✕ [POST] /auth ✕ [+] [▾] │ ← Tab Bar
├──────────────┬───────────────────────────────────────────────┤
│ Workspace │ │
│ [Selector] │ URL Bar + Method Selector │ ← Request Panel
│ ────────── │ Headers / Body / Auth / Params │
│ Collections │ ───────────────────────────────── │
│ History │ Response (status, body, headers, timing) │ ← Response Panel
└──────────────┴───────────────────────────────────────────────┘
- Enter a URL in the URL bar (e.g.
https://api.example.com/users) - Select the HTTP method from the dropdown:
GET,POST,PUT,PATCH,DELETE,HEAD,OPTIONS - Press Send (
Ctrl+Enter)
Supports environment variables: {{BASE_URL}}/users/{{USER_ID}}
Click the Headers tab. Each header has:
- Enabled checkbox (uncheck to send without the header)
- Name and Value fields
Common headers are added automatically (e.g. Content-Type: application/json when using JSON body).
Click the Params tab. Parameters are appended to the URL automatically: ?key=value&page=1.
Each param has an Enabled checkbox to temporarily exclude it.
Click the Body tab and select a type:
| Type | Usage |
|---|---|
| None | GET, HEAD, DELETE |
| JSON | Raw JSON editor with syntax highlighting |
| Form Data | application/x-www-form-urlencoded key-value pairs |
| Multipart | multipart/form-data with file upload support |
| Raw | Plain text, XML, or custom content types |
| Binary | Upload a file directly as the body |
| GraphQL | GraphQL query + variables editor |
Click the Auth tab:
| Type | Fields |
|---|---|
| None | — |
| Bearer Token | Token value (added as Authorization: Bearer {token}) |
| Basic Auth | Username + Password (Base64-encoded automatically) |
| API Key | Key name, Key value, Send as Header or Query Param |
The response panel shows:
- Status code (color-coded: green = 2xx, orange = 3xx/4xx, red = 5xx)
- Response time in milliseconds
- Body with syntax highlighting (JSON, HTML, XML auto-detected)
- Headers tab — all response headers
- Tests tab — test results if response tests are configured (Pro)
Collections are named groups of saved requests, organized in folders.
- Click the + icon in the sidebar header, or
- Collections menu (⋮) → New Collection
Right-click a collection or folder → New Request. Give it a name.
The new request opens in a tab. Fill in URL, method, headers, body — then Save (Ctrl+S) to store it in the collection.
Right-click a collection → New Folder. Folders can be nested.
Left-click on a request: opens in the current tab (if the current tab has unsaved changes, a dialog asks whether to Replace or Open in New Tab).
Right-click on a request → Open in New Tab: always opens in a new tab.
Right-click any request or folder to access: Rename, Duplicate, Delete.
Drag requests and folders within a collection to reorder or move them into a different folder. The drag handle activates immediately (no long press needed).
Right-click a collection name or use the ⋮ menu:
- New Request — adds a request at the collection root
- New Folder — adds a folder at the collection root
- Rename — renames the collection
- Export (Postman) — exports as Postman Collection v2.1 (Pro)
- Export (OlympAPI) — exports in OlympAPI native format (Pro)
- Git Sync — opens Git Sync settings for this collection
- Delete — permanently deletes the collection and all its contents
Environments store key-value pairs that can be substituted into any part of a request.
- Click the environment selector (top of request panel)
- Manage Environments → New Environment
- Name it (e.g. "Local", "Staging", "Production")
- Add variables
Wrap any variable name in double curly braces in URLs, headers, body, or query params:
URL: {{BASE_URL}}/api/users
Header: Authorization: Bearer {{TOKEN}}
Body: { "email": "{{USER_EMAIL}}" }
Check the Sensitive checkbox for passwords, tokens, and secrets. Sensitive values:
- Are stored in the OS keychain (never in plain JSON files)
- Are never committed when using Git Sync (replaced with
{{SECRET - NOT COMMITTED}}) - Are displayed as
••••••••in the UI
Use the environment selector dropdown at the top of the request panel. Select None to disable variable substitution.
- Active environment variables
- Variables set by Pre-Request Scripts
- Variables extracted by Request Chaining rules
Workspaces let you organize collections into separate contexts (e.g. "Work", "Personal", "Client Project").
Click the workspace selector at the top of the sidebar → New Workspace (Pro: unlimited, Free: 1 workspace).
Click the workspace name in the sidebar → select from the list.
Each workspace maintains its own ordered list of collections. Switching workspaces shows only that workspace's collections.
In the workspace dialog, right-click or use the ⋮ icon next to a workspace name:
- Rename — change the workspace name
- Delete — removes the workspace (collections are not deleted, just unlinked)
OlympAPI supports multiple requests open simultaneously, like a browser.
- Ctrl+T — new empty tab
- Left-click on a collection request — loads into current tab
- Right-click → "Open in New Tab" — always opens a new tab
- History entry tap — opens in a new tab
Each tab independently tracks:
- URL, method, headers, body, auth, params
- Response (last received)
- Dirty state (modified but not saved to collection)
A dot (●) on a tab means unsaved changes.
Click any tab to switch to it. The previous tab's state is automatically preserved.
- Ctrl+W — close current tab (shows dialog if there are unsaved changes)
- Alt+Ctrl+W — force close without dialog
- Click the ✕ on a tab
If the last tab is closed, a new empty tab opens automatically.
Ctrl+Shift+A opens the tab overview panel showing all open tabs and recently closed tabs.
- Sidebar → Import icon
- Enter a URL (e.g.
https://api.example.com/openapi.json) and click Fetch, or choose a local.json/.yamlfile - Toggle "Categorize by path" to group requests into folders by URL path segments
- Preview shows request count → click Add to Collections
Supported: OpenAPI 3.x, Swagger 2.x, JSON or YAML format.
Categorize by path example:
GET /users and GET /users/{id} both land in a folder called users.
POST /auth/login lands in a folder called auth.
- Export your Postman collection as Collection v2.1 (
.json) - Sidebar → Import icon → Choose file
- OlympAPI auto-detects the Postman format → Preview → Import
Collections exported from OlympAPI can be re-imported:
- Sidebar → Import icon → Choose file (
.olympapi.json) - Auto-detected → Preview → Import
Auto Sync binds a live collection to an OpenAPI/Swagger spec URL. When the spec changes, OlympAPI detects new, modified, or removed endpoints and presents a change review dialog where each change can be applied or skipped individually.
Setup:
- Open a collection → ⋮ menu → Configure Auto Sync
- Enter the OpenAPI/Swagger spec URL
- Set polling interval (default: on-open)
- Click Enable Auto Sync
Reviewing Changes:
When changes are detected, a review dialog lists each endpoint change. Apply or skip each one individually.
Collection ⋮ menu → Export (OlympAPI) → choose save location.
The file includes all requests, folders, and metadata in OlympAPI's native format.
Collection ⋮ menu → Export (Postman) → choose save location.
Compatible with Postman Collection v2.1 format for import into Postman or other tools.
Right-click a request → Export as OlympAPI JSON → choose save location.
Pre-request scripts run JavaScript before each request is sent. They can read and modify environment variables and request headers.
In the request panel, click the Scripts tab → enter your script in the Pre-Request editor.
// Read a variable
const baseUrl = pm.variables.get("BASE_URL");
// Set a variable (in memory for this request)
pm.variables.set("TIMESTAMP", Date.now().toString());
// Read an environment variable
const token = pm.environment.get("TOKEN");
// Set an environment variable (persisted to the active environment)
pm.environment.set("TOKEN", "eyJ...");
// Add a request header
pm.request.headers.add({ key: "X-Request-ID", value: "abc-123" });
// Log to console (visible in script output)
console.log("Script running for: " + pm.variables.get("BASE_URL"));The script runs in a QuickJS sandbox. No filesystem access, no network calls. Execution time is limited to 5 seconds.
Response tests run automatically after each request and assert conditions on the response.
In the request panel, click the Tests tab → Add Test.
Each test has:
- Target: Status Code, Body Contains, Header Value, Response Time (ms)
- Operator: equals, not equals, contains, not contains, greater than, less than
- Expected value
| Target | Operator | Expected | Meaning |
|---|---|---|---|
| Status Code | equals | 200 | Expect 200 OK |
| Body Contains | contains | "success": true |
Response body contains this text |
| Header Value | equals | application/json |
Content-Type header |
| Response Time | less than | 500 | Must respond in under 500ms |
After sending, the Tests tab in the response panel shows:
- ✓ Pass (green)
- ✗ Fail (red) with actual vs. expected values
Request Chaining extracts values from a response and stores them in the active environment automatically.
Step 1: Configure a POST /auth/login request.
In the Chaining tab, add a rule:
- JSONPath:
$.data.token - Variable:
TOKEN
Step 2: After sending the login request, the extracted token is stored in the TOKEN environment variable.
Step 3: Any subsequent request using {{TOKEN}} (e.g. Authorization: Bearer {{TOKEN}}) automatically uses the extracted value.
| Expression | Extracts |
|---|---|
$.token |
Top-level token field |
$.data.user.id |
Nested id field |
$.items[0].id |
First array element's id |
$.users[*].name |
All user names (joined with comma) |
Git Sync connects a collection to a Git repository. Changes can be pushed and pulled using the provider's REST API — no git installation required.
Supported providers: GitHub, GitLab, Gitea, Forgejo (self-hosted)
- Open the collection ⋮ menu → Git Sync
- Select your provider (GitHub, GitLab, Gitea, or Forgejo)
- For Gitea/Forgejo: enter your server's Base URL (e.g.
https://git.myserver.com) - Enter the Repository URL (e.g.
https://github.com/user/my-api.git) - Enter your Personal Access Token (PAT)
- GitHub: github.com/settings/tokens — needs
reposcope - GitLab: Profile → Access Tokens — needs
apiscope - Gitea/Forgejo: User Settings → Applications → Generate Token
- GitHub: github.com/settings/tokens — needs
- Set Branch (default:
main) - Optionally set Commit Author Name and Email
- Click Test Connection → wait for green confirmation
- Click Initialize Sync → creates
collection.json,environments/, andREADME.mdin the repo
After modifying your collection:
- Open Git Sync → click Push
- (Pro) A diff view shows what changed compared to the remote
- Enter a commit message (pre-filled with a suggestion)
- Click Push → changes are uploaded
When a teammate has pushed changes:
- Open Git Sync → click Pull
- A preview dialog confirms the pull
- The local collection is updated with the remote version
The status badge in the sidebar shows:
- ☁✓ (green) — synced
- ☁↑ (blue) — you have unsaved local changes
- ☁↓ (orange) — remote has changes
- ⚠ (red) — conflict
A conflict occurs when both local and remote have changed since the last sync.
OlympAPI shows a Sync Conflict dialog with two options:
- Keep Local — your changes win; the remote SHA reference is updated
- Use Remote — the remote version replaces your local collection
There is no automatic merge. This is intentional — JSON collection files are not safely auto-mergeable.
Environment variables marked as Sensitive are never committed to the repository. Before every push, sensitive values are replaced with:
{{SECRET - NOT COMMITTED}}
The real values stay encrypted in your local OS keychain. When a teammate pulls the repository, they are prompted to fill in their own values for sensitive variables.
Enable Auto-Pull on Open in the Git Sync settings to automatically check for remote changes when the collection is expanded in the sidebar. A notification appears if remote changes are available.
Enable Auto-Commit on Save to automatically push after every collection save. Commits use the message: Update {CollectionName}.
Use this for solo projects or when you want continuous backup to Git.
Git Sync screen → Disconnect removes the local configuration. The remote repository is not deleted.
Use Restore from Git to revert a local collection to the last committed remote state.
After Initialize Sync, OlympAPI creates the collection structure in the repository automatically.
Before first sync (empty repository with optional README):
After first push (workspace synced):
Inside the collection folder:
Open via the ⚙ icon in the top-right corner, or Ctrl+,.
- Theme: Light, Dark, or follow System setting
- Accent Color: Choose primary and secondary accent colors; "Match OlympSSH Style" restores the default OlympStack colors
Shows your current plan (Free or Pro Lifetime). Enter invoice ID and activation token to activate Pro.
| Setting | Description | Default |
|---|---|---|
| SSL Verification (Pro) | Verify server SSL certificates | On |
| Proxy URL (Pro) | HTTP/HTTPS proxy (e.g. http://proxy:8080) |
None |
| HTTP Version | Force HTTP/1.x or allow HTTP/2 (ALPN negotiation) | HTTP/1.x |
| Request Timeout | Milliseconds before request times out; 0 = never | 30000 |
A read-only reference screen showing all keyboard shortcuts.
Shows platform information, app version, and install ID (useful for support requests).
| Action | Shortcut |
|---|---|
| New Tab / New Request | Ctrl+T |
| Close Tab | Ctrl+W |
| Force Close Tab (no dialog) | Alt+Ctrl+W |
| Send Request | Ctrl+Enter |
| Save Request to Collection | Ctrl+S |
| Open Tab List | Ctrl+Shift+A |
| Open Settings | Ctrl+, |
| Focus Sidebar Search | Ctrl+K |
- Drag to resize the sidebar and the request/response split by dragging the dividers
- History in the sidebar tab shows your 50 most recent requests — click any entry to reopen it
- Environment variables in headers work too:
Authorization: Bearer {{TOKEN}} - Tab middle-click is equivalent to Ctrl+W to close a tab
- Git Sync + Auto-Commit is great for solo projects as a continuous backup mechanism
- The response body can be copied by clicking anywhere in the body area and using
Ctrl+A/Ctrl+C
This manual covers OlympAPI v1.0.0. For the latest updates and bug reports, visit github.com/olympstack/olympapi-release.





































































