Skip to content

Send your first request

Open an endpoint from the navigator and press ⌘↵.

The request goes out from the Rust engine inside the app, so localhost targets, self-signed development certificates, and CORS-restricted APIs all behave normally.

The response dock fills in: status, duration, size, headers, and the body. JSON bodies are folded and syntax-highlighted — every { and [ has a fold caret with a … n items summary, and you can collapse or expand the whole tree. Click any value to copy it.

Hardcoding http://localhost:8080 into every request is how collections rot. An environment is a named set of variables that requests reference with {{name}}:

environments:
- name: local
variables:
baseUrl: http://localhost:8080
id: "1"
- name: staging
variables:
baseUrl: https://api.staging.example.com
id: "42"

Write {{baseUrl}}/users/{{id}} in a URL and it resolves against whichever environment is active. Switch environments from the picker in the header or through the command palette; the same request now hits a different deployment.

Environment variables are for configuration, not credentials. Secrets belong in the keychain — see Auth provider.

A spec-derived endpoint is generated from the document and does not need saving. When you want a request of your own — a specific reproduction case, an edge case worth keeping — save it into a collection, a YAML file at the root of your project folder.

Saved YAML is written back minimally: only the fields you actually set, in a stable order, so that a one-header change is a one-line diff. The format is documented in Collection file format.

The Form view’s Tests tab turns “I looked at it and it seemed fine” into an assertion that runs on every send:

tests:
- source: status
op: eq
expected: "201"
- source: body
path: id
op: exists
- source: header
path: content-type
op: contains
expected: application/json

Results appear as a pass/fail strip above the response and are stored in run history. See Test a response for the full vocabulary.