# Send a fax from Pi

> Pi, the coding agent, can send and read faxes for you through the Fax for Agents package on npm. You describe the fax in plain words.

Page: https://faxforagents.com/docs/guides/pi/
Last changed: 2026-11-07

Updated Nov 7, 2026

Pi, the coding agent, can send and read faxes for you through the Fax for Agents package on npm. You describe the fax in plain words. Pi prepares the page, gets a quote, sends it and checks the delivery state in one turn. By default it sends inside the limits your organization set, with no approval per fax. This guide was recorded in Sandbox mode, so nothing reached a real fax line.

Screenshots taken on Nov 6, 2026.

## Before you start

- A Fax for Agents account and an API key. Create the key in the dashboard at app.faxforagents.com. Use an `ffa_test_` key for the free sandbox.
- Pi with the package installed. Run `pi install npm:@faxforagents/fax-for-agents`. Export `FAXFORAGENTS_API_KEY` in the shell that starts Pi. Pi's bash tool inherits it.
- A model provider signed in to Pi, for example `OPENAI_API_KEY` in the same shell or `/login` inside Pi. The guide used gpt-5-mini.
- An `AGENTS.md` in the project folder with two lines. The key is set in `FAXFORAGENTS_API_KEY` and must never be printed. Every id comes from an API response. Pi reads the file on start and lists it under [Context].
- The Connected apps switch in Settings is on by default. The default limits are $5.00 per fax and 20 faxes a day.

## 1.Check the package

Open a terminal and list the installed packages.

Run pi list. The package npm:@faxforagents/fax-for-agents@1.0.0 is listed under User packages.

## 2.Open Pi

Start Pi in any project folder.

Run pi. The startup card lists AGENTS.md under [Context] and fax-for-agents under [Skills], and the prompt waits for your message.

## 3.Describe the fax

Type what the fax should say and where it goes. Name Fax for Agents so the skill is used.

Type what the fax should say and where it goes, then press Enter.

## 4.Send it

Pi does the whole routine itself with the REST calls from the skill. The bash rows show each curl call.

Pi prepares the page, quotes it, sends it and polls the state. It reports delivered with the fax id.

## 5.Check the evidence

Ask for the delivery evidence when you want the full record.

Ask for the delivery evidence. Pi lists the pages sent, the attempt, the remote station SBX-OK and the completion time.

## 6.Read the inbox

Received faxes work the same way. Ask for your inbox.

Ask for your inbox. Pi lists the received faxes and reads the newest one as text.

## What the limits mean

Open Settings in the dashboard. The Connected apps card holds the switch "Let connected apps send without asking". Under it are two fields, "Amount per fax, at most" ($5.00) and "Faxes per day" (20). Apps like Pi send inside these limits with no approval per fax. Turn the switch off and every send waits for a person. Finer limits, such as destinations or one app only, live under Policies. See the guide [Your assistant sends within limits by default](https://faxforagents.com/docs/guides/auto-send-switch/).

## Approve every fax instead

1. In Settings, turn off "Let connected apps send without asking" and choose Save.
2. Ask Pi to quote the fax. The quote says approval is required.
3. Say "Ask a person to approve it." A person approves in the dashboard or with the `ffa` command line, then you tell Pi to send.

The routine is the same as in [Approve every fax from Claude Code](https://faxforagents.com/docs/guides/claude-code-approval/).

## Troubleshooting

- Pi prints the value of `FAXFORAGENTS_API_KEY` while it checks the environment. Add the `AGENTS.md` line from "Before you start" and rotate the key in the dashboard.
- Pi reports a fax id that does not exist, such as `fax_01H7K2Z1`, without a bash row above it. The model wrote a summary instead of running the calls. Say "Run the REST calls from the skill now and report the fax id and its state." Keep the `AGENTS.md` rule against invented ids.
- Pi prints "No models available. Use /login to log into a provider". No provider key is set. Export one, for example `OPENAI_API_KEY`, or run `/login` inside Pi.
- Pi prints the curl commands and asks "sandbox or live" instead of running them. Say that the key is already configured, or answer "sandbox". The skill then runs the calls.
- Pi writes a draft file in the project instead of sending. A small model skipped the skill. Name Fax for Agents in the prompt and use a model such as gpt-5-mini or larger.
- Pi says the quote requires approval although you expect a plain send. An owner turned the Connected apps switch off, or the fax is above a limit. Check Settings, Connected apps for your environment.

## Next

- [Quickstart](https://faxforagents.com/docs/quickstart/)
- [Dashboard](https://app.faxforagents.com/)
- [Pricing](https://faxforagents.com/pricing/)
