HTTP requests

Methods, query params, headers, request bodies, and reading the response.

The request editor is where you build and send HTTP requests. Each request is saved as a single YAML file in your workspace.

Method and URL

Pick the method — GET, POST, PUT, PATCH, DELETE, HEAD, or OPTIONS — and enter the URL. URLs (and almost every other field) support {{variable}} substitution, so you can write {{baseUrl}}/users/{{userId}} and resolve it per environment.

Press L to jump focus to the URL bar, and ⌘/Ctrl + Enter to send.

Query parameters and headers

The Params and Headers tabs are key/value editors. Rows can be toggled on and off individually, so you can keep optional parameters around without deleting them. Query parameters stay in sync with the URL.

Request body

The Body tab supports several content types:

  • Raw — free-form text (JSON, XML, plain text). JSON can be beautified.
  • Form URL-encodedapplication/x-www-form-urlencoded key/value pairs.
  • Multipartmultipart/form-data with a mix of text fields and file parts.
  • GraphQL — a query (and variables) sent as a JSON body.

Reading the response

The response pane shows:

  • Status, time, and size at a glance, with colour-coded status.
  • Body, pretty-printed for JSON and rendered safely for other types. Binary responses are detected (and base64-decoded under the hood) and can be saved to a file.
  • Headers returned by the server.

History and re-running

Every send is recorded to an append-only history log in the workspace’s local-only .impostor/ directory (not committed to git). Open the History section in the sidebar to load a past request back into the editor and re-run it. Recording can be paused, and history cleared, from the section’s menu.

Tabs

The editor is tabbed — open multiple requests at once, each with its own state and a dirty indicator when unsaved. A blank + tab acts as a scratchpad. Close a tab with W.