Skip to content
API clientNew

FigyMan, the API client

A REST client in the terminal, with your existing collections imported and exported unharmed.

⌘ ⇧ HCtrl ⇧ HAll three platformsRuns locally
FigyTerm — API client
  • Sent 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.
FigyTerm — API client

Collections, 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.

FigyTerm — Collections

History, 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.

FigyTerm — Request history

Optional 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