# Sending a fax from the command line

This guide was split in two, because it was really two guides wearing one name.

| You want | Go to |
|---|---|
| `curl` and `jq`, no dependencies, no runtime -- the reference implementation of the protocol | **[curl.md](/guides/curl.md)** |
| Node, Bun, or Deno with the `sendfax` SDK, a `PaymentHandler` wired to a local key, exit codes | **[typescript.md](/guides/typescript.md)** |

Both cover the same flow end to end: submit, read the 402, pay, retry to `202`,
poll to `delivered`. They differ only in what runs it.

If you are not sure, start with [curl.md](/guides/curl.md). It is the shortest complete
description of the system, and it is worth reading even if you will ship the SDK.

---

## The rest of the set

- [README.md](/guides/index.md) -- the chooser and the full decision matrix
- [http.md](/guides/http.md) -- the wire format, language-agnostic
- [usdc.md](/guides/usdc.md) -- paying with USDC, in depth
- [mpp.md](/guides/mpp.md) -- the MPP dialect specifically
- [cloudflare-workers.md](/guides/cloudflare-workers.md) -- the same flow on workerd
- <https://sendfax.sh/quickstart.md> | <https://sendfax.sh/openapi.json>
