Postman & friends
Postman / Bruno / Insomnia / Hoppscotch — all import OpenAPI in one click.
Because the OpenAPI spec is auto-generated, importing into any HTTP client is a single click — no codegen, no manual export.
Postman — live import
- Open Postman → Import → paste the URL:
http://localhost:3001/openapi.json - Click Generate collection.
Postman builds a collection with every endpoint, request body, and example. Re-import any time the API changes — Postman supports updating an existing collection.
Postman — environment
Set up an environment with two variables so you don't paste the bearer token everywhere:
| Variable | Initial value |
|---|---|
base_url | http://localhost:3001 |
api_key | sk_dev_local_change_me |
In each request's Authorization tab: Bearer Token → {{api_key}}.
Offline import (snapshot)
If you want to share a static snapshot (CI artefact, give to a non-developer who can't run the server):
npm run dev # one terminal
npm run openapi:export # another terminal
# Writes apps/api/docs/openapi.jsonNow you can email or commit docs/openapi.json and import the file:
- Postman: Import → File → select openapi.json
- Bruno: same
- Insomnia: same
Bruno
Bruno is an open-source Postman alternative that stores collections as files in your repo (great for version control).
# Import via the UI: Settings → Import collection → OpenAPI v3 spec
# Or git-track the imported folder for team-shared collectionsBruno's .bru format diffs cleanly in PRs — useful if you want collection changes reviewed.
Insomnia
Same flow: Import → URL → http://localhost:3001/openapi.json.
Insomnia also supports environment variables for base_url / api_key — set them at the workspace level.
Hoppscotch
Browser-based. Settings → Workspaces → Import → paste OpenAPI URL. Convenient for quick checks without installing anything.
SSE testing
Postman supports SSE responses since v10.18:
- Make a
POSTrequest to/v1/sessions/demo/messageswithstream: truein the body. - Postman opens an SSE viewer that shows events as they arrive.
For Bruno / Insomnia (no native SSE), use curl -N from the terminal:
curl -N -X POST http://localhost:3001/v1/sessions/demo/messages \
-H "authorization: Bearer $DEV_API_KEY" \
-H "content-type: application/json" \
-d '{"prompt":"hi","skills":["financial-advisor"],"stream":true}'Auto-update
Because the spec is generated at request time:
- Add a route in
apps/api/src/routes/→ it appears in/openapi.jsonimmediately - Update Zod schemas → request/response shapes update in the spec
- Re-import in Postman → collection refreshes
This eliminates the "API changed but the Postman collection is stale" problem that plagues hand-maintained collections.
What about the in-app docs UI?
You also get a Scalar UI at http://localhost:3001/docs — interactive, browseable, and rendered directly from the same OpenAPI spec. Use it to explore; use Postman / Bruno when you want to save and share request collections.

