FigyMan, the API client
A REST client in the terminal, with your existing collections imported and exported unharmed.
API client
The FigyMan API client in FigyTerm with a request composed and its response body displayed
public/screenshots/api-client.pngSent from Rust
`fetch` cannot set Host, Origin or Content-Length, cannot see a redirect chain, and CORS would fail most real calls. So requests go out from the backend instead.
Your collections come in and go back out
Collection Format v2.1 in and out, v2.0 in. Import is lossless — the original document is kept beside the normalised model so export round-trips.
Works unplugged
SQLite on your machine is the source of truth. Everything works with the network down, and what changed meanwhile is pushed when it comes back.
Why the backend sends
An API client built on the webview's `fetch` is an API client that cannot do the job. `fetch` refuses to set `Host`, `Origin`, `Referer`, `Connection` or `Content-Length`; it cannot show you the redirect chain it followed; and CORS would reject most calls worth making. FigyMan sends from Rust, which means the request on the wire is the request you wrote.
- Real headers
- Including the ones the browser reserves for itself.
- Redirects by hand
- Followed explicitly and shown to you, with credentials stripped on a cross-origin hop.
- Timings
- Wait, download and total, measured where the bytes actually move.
- Classified errors
- `timeout`, `tls`, `connect`, `body`, `cancelled` — not one stringified blob, so the UI can offer the remedy.
- Cancellable
- Any request, at any point, without exhausting memory on a body that will not stop.
API client
The FigyMan API client in FigyTerm with a request composed and its response body displayed
public/screenshots/api-client.pngCollections, variables and auth
Requests live in collections and folders, with variables and authentication resolved at send time. The interchange format is the one the rest of the industry already writes, so moving in does not mean re-entering your work, and moving out later does not mean losing it.
Collections
The FigyMan collections sidebar in FigyTerm showing saved requests grouped in folders
public/screenshots/api-collections.pngHistory, kept
Every request you send is recorded with its status, timing and size, so the call that worked twenty minutes ago is still there to look at. History and collections share the same SQLite database, which is a file on your disk that you can copy, back up or delete.
Request history
The FigyMan history tab in FigyTerm listing past requests with status codes and response times
public/screenshots/api-history.pngOptional Postgres sync
If you want the same collections on two machines, FigyMan can mirror to any Postgres server you can reach — hosted or self-hosted, over TLS. Local stays the source of truth: writes go to a durable outbox and are pushed when the connection allows. Sync is last-writer-wins per row with server-assigned timestamps, and a conflict is never silently dropped — the loser is kept as a conflicted copy beside the winner.
- Offline first
- Everything works with the network unplugged. Nothing is blocked on a server.
- Your server
- A Postgres connection string, not a vendor's REST layer and not an account with us.
- Honest status
- Sync is built and reviewable, but has not yet been run against a production server at scale. Treat it as the newest part of the feature.
FAQ
API client, in short
Can I import my existing collections?
Yes. Collection Format v2.1.0 imports and exports, v2.0.0 imports. Import is lossless — the original document is kept alongside the normalised model, so an export round-trips back to what you brought in.
Does my API data go to a server?
Only to the API you are calling. Collections, history and variables live in SQLite on your machine. Postgres sync is opt-in and points at a server you choose.
Is this meant to replace a full API platform?
No. v1 is REST over HTTP and HTTPS, aimed at the request you want to fire without leaving the terminal. There is no mock server, no monitor and no team workspace.
Give your terminal its whole workbench
Free, MIT licensed, and entirely local. On macOS one command does it; Linux and Windows are one download away.
curl -fsSL https://raw.githubusercontent.com/code4mk/figyterm/main/install.sh | sh