User Interface
Curlex is organised into five zones that stay in the same positions throughout the app. Once you know what each zone does, everything else falls into place quickly.

The Sidebar Rail
The thin strip of icons on the far left controls what appears in the sidebar panel next to it. Click any icon to switch the sidebar content.
| Icon | Panel | What it shows |
|---|---|---|
| Collections | Collections | All your saved requests, organised into collections and folders |
| Runner | Collection Runner | Run a full collection of requests automatically and see results |
| History | History | Every request you have sent, most recent first |
| Environments | Environments | Your variable sets — base URLs, API keys, and other config |
| Settings | Settings | App preferences, themes, certificates, Git Sync config, and more |
| Help | Help | Quick reference for keyboard shortcuts |
At the bottom of the rail, a + button opens a menu to create a new HTTP Request or a new GraphQL Request from anywhere in the app.
The Header Bar
The header bar spans the top of the window and contains:
- Workspace name (left side) — click to switch between workspaces or create a new one. Each workspace is a completely self-contained set of collections, environments, and history.
- Import button — import requests from a cURL command, an OpenAPI spec, or a Postman collection.
- Sync button — appears when Git Sync is enabled. Shows the last-synced time and lets you trigger a manual sync.
- Environment selector (right side) — a badge showing the active environment. Click it to switch environments. All open tabs immediately start using the new variable set.
The Tab Bar
Below the header, the tab bar works like browser tabs — each open request gets its own tab. You can have many tabs open simultaneously and switch between them freely.
- Click a tab to bring that request into focus.
- Click × on a tab to close it. If the request has unsaved changes, Curlex asks whether to save.
- Click the + button in the tab bar to open a new blank request.
- Tabs with unsaved changes show a small dot (●) on them.
The Request Panel
The request panel takes up the upper portion of the main area and is where you build the request you want to send.
The Request Bar
The most prominent part of the request panel — a row across the top containing:
| Element | Description |
|---|---|
| Method selector | A colour-coded dropdown for the HTTP method: GET (blue), POST (green), PUT (amber), PATCH (purple), DELETE (red), HEAD, OPTIONS. |
| URL bar | Where you type the request URL. You can embed {{variableName}} anywhere and Curlex fills in the value from your active environment. As you type, autocomplete suggestions appear for environment variables, collection variables, vault secrets, and dynamic variables. |
| Send button | Fires the request. Keyboard shortcut: Cmd/Ctrl Enter. While the request is in flight, this changes to a Cancel button — click it to abort. |
| More ▾ | A dropdown with extra actions: Save, Generate Code, and a Variables inspector that shows every variable currently in scope and its resolved value. |
Pasting a cURL command into the URL bar is also supported — Curlex detects it and offers to parse the entire command into a fully configured request.
Request Tabs
Below the request bar, six tabs control different parts of the request configuration:
| Tab | What it configures | Badge |
|---|---|---|
| Params | Query parameters. Add, enable/disable, or edit key-value pairs. The URL bar updates live as you type. | Shows the count of active params |
| Auth | Authentication scheme — None, Inherit, Basic, Bearer, API Key, OAuth 1.0, OAuth 2.0. | Shows a lock icon when configured |
| Headers | Custom HTTP headers. Curlex adds Content-Type and Authorization automatically from your body and auth settings — you only need to add extras here. | Shows the count of custom headers |
| Body | The request payload — JSON, form-data, URL-encoded, binary, GraphQL, or plain text. | Shows a dot when a body is set |
| Scripts | Pre-request and test scripts in JavaScript. | Shows a dot when scripts are written |
| Docs | A Markdown description for this endpoint — useful for documenting what a request does. | Shows a dot when content exists |
The Response Panel
The response panel sits below the request panel (or beside it, depending on your layout setting) and fills in after you click Send.
Before Sending
The response panel shows a prompt:
Send a request to see the response here.
Along with the keyboard shortcut hint. Nothing is shown until the first request is sent.
While a Request is In Progress
A loading state replaces the empty prompt:
Waiting for response from the server.
The Send button in the request bar becomes a Cancel button during this time.
After a Response Arrives
A summary bar appears across the top of the response panel showing three numbers at a glance:
| Indicator | What it tells you |
|---|---|
| Status code | The HTTP response code — 200 OK shows in green, 4xx client errors in amber, 5xx server errors in red |
| Time | Total round-trip time in milliseconds — from when the request was sent to when the full response was received |
| Size | The size of the response body |
Below the summary bar, up to five tabs appear depending on what the response contains:
| Tab | When it appears | What it shows |
|---|---|---|
| Body | Always | The response payload — JSON (formatted), XML, HTML, images, PDFs, audio/video, or binary |
| Headers | Always | All response headers as a searchable table |
| Cookies | When Set-Cookie headers are present | Cookies parsed into a table with Name, Value, Domain, Path, Expires, HttpOnly, Secure |
| Timeline | When redirects occurred | The full redirect chain with per-hop timing waterfall (DNS, TCP, TLS, Waiting, Download) |
| Test Results | When a test script exists or has run | Pass/fail results for every assertion, with error messages for failures |
The Body Tab in Detail
Curlex detects the content type and renders it appropriately:
| Response type | What you see |
|---|---|
| JSON | Formatted and syntax-highlighted tree. Click sections to expand/collapse. JSONPath filter available. |
| XML or HTML | Syntax-highlighted code view |
| Image (PNG, JPEG, GIF, SVG, WebP) | Rendered inline |
| Embedded PDF viewer | |
| Audio or video | Media player with controls |
| Binary or unrecognised | Hex and raw inspection view |
Controls visible in the Body tab:
- Format / Raw toggle — switch between the formatted view and the plain text response
- Wrap — toggle word-wrap for long lines
- Search (
Cmd/Ctrl F) — highlights matching text in the response body - JSONPath filter — type an expression like
$.users[*].emailto extract and display only the matching values - Copy — copies the full response body to your clipboard
When a Request Fails
If the request could not be sent at all — connection refused, DNS failure, timeout, SSL error — the response panel shows an error state:
Could not get response
The error message appears in red, describing what went wrong (e.g. Connection refused, SSL certificate verify failed, Timed out).
The Status Bar
The slim bar at the bottom of the window provides quick access to several global features:
| Item | What it does |
|---|---|
| Sidebar toggle | Collapse or expand the entire sidebar (rail + panel) to give the request area more space |
| Environment | Shows the currently active environment by name. Click to open the environment switcher. |
| Vault | Opens the Vault panel — your encrypted secret store. Shows a locked/unlocked padlock to indicate the Vault's current state. |
| Cookies | Opens the Cookie Manager — view, edit, or delete any cookie stored by the cookie jar |
| Console | Toggles the Console log panel. Keyboard shortcut: `Cmd/Ctrl + ``. Shows a badge when new log entries have arrived. |
| Git Sync | Shows the last-synced time when Git Sync is enabled. Click for sync status. |
Adjusting the Layout
Two-Pane Direction
By default the request panel sits above the response panel (horizontal split). If you prefer them side by side, go to Settings → General and change Layout to Vertical. This is particularly useful on wide monitors.
Resizing Panels
Drag the divider between the request and response panels to give more space to whichever you use more. The panels have minimum sizes to keep them usable.
Collapsing the Sidebar
Click the sidebar toggle in the status bar (or drag the sidebar edge all the way left) to collapse the sidebar entirely. This is useful when reviewing a response that needs the full screen width.
Keyboard Navigation
Most actions in Curlex have keyboard shortcuts. Here are the most useful ones for navigating the interface:
| Action | macOS | Windows / Linux |
|---|---|---|
| Send request | ⌘ Enter | Ctrl Enter |
| Save request | ⌘ S | Ctrl S |
| Close tab | ⌘ W | Ctrl W |
| Close all tabs | ⌘ ⇧ W | Ctrl Shift W |
| Global search | ⌘ K | Ctrl K |
| Open in new tab | ⌘ ⇧ Enter | Ctrl Shift Enter |
| Manage Environments | ⌘ E | Ctrl E |
| Open Settings | ⌘ , | Ctrl , |
| Toggle Console | `⌘ `` | `Ctrl `` |
| Find in response | ⌘ F | Ctrl F |
| Import | ⌘ O | Ctrl O |
A full shortcuts reference is available in Settings → Shortcuts and in the Help panel in the sidebar.