Every letter moves through the same four phases — compose, proof, dispatch, track. What happens in each, and where to go deeper.
Whatever surface you send from — API, MCP, the web composer, an embed widget, a CSV bulk import, or a forwarded email — every letter moves through the same four phases. This page is the map. Each phase links to the guide that covers it in depth; nothing below duplicates that detail.
Assemble a recipient and content into something ready to price. There’s no order yet — nothing here costs anything or touches USPS.Content can come from raw text or a pdf_url on the API, the composer at /send, a template pre-filled from the gallery, an embedded widget on someone else’s site, a row from a CSV import, a forwarded email, or a text (SMS) conversation.
Endpoint — none required yet; GET /v1/address/autocomplete helps fill in the recipient as they type (see Addresses).
UI surfaces — the /send composer, template-embed.js / paperplane.js, the CSV mapper (POST /v1/csv-map).
Confirm what will actually print and what it will cost — before any money moves. Two things happen here, together:
See the exact PDF. The composer’s “See the exact PDF before you pay” link renders the letter through the same renderTextToPdf the order path uses, so preview can never diverge from what mails.
Price it and mint a confirmation_token.POST /v1/quotes returns the all-in price plus a single-use, 30-minute token bound to the exact recipient, content, class, and price. On the agent surface, POST /v1/orders requires that token — a send can never be the first call.
Endpoint — GET /api/preview, POST /v1/quotes (or the quote_letter MCP tool).
Once it’s mailed, watch it move and step in if you still can.
PollGET /v1/orders/{id}, or pass webhook_url at order creation to get pushed on every transition instead.
Share the public timeline at /track/{trackingNumber} — no login, safe to hand to the recipient or a lawyer.
Cancel with DELETE /v1/orders/{id} and the order’s cancel_token, while it’s still pending_payment, screening, or held_for_review. Once submitted, it’s in the pipe.
Review with POST /v1/reviews and the review_token, once delivered.
Endpoint — GET /v1/orders/{id}, DELETE /v1/orders/{id}, POST /v1/reviews.
UI surface — the order page (private) and /track/{trackingNumber} (public).