Skip to main content

Mail a letter from any webhook

No native app for your tool yet? paperplane’s REST API has no API-key gate — POST an order directly from a generic webhook (Webhooks by Zapier, Make’s HTTP module, or your own code) and it prints and mails from $1.99.

The universal fallback — works with anything that can POST JSON

Instead of waiting for a native app

There is no separate webhook mode to wait for: the native apps are wrappers over the same POST /v1/orders. If your tool can send JSON over HTTPS, the integration exists today.

How to set it up

  1. 1Point whatever fires the event (a form on your own site, a CRM without a native trigger, an internal system) at a webhook step — Webhooks by Zapier, Make’s HTTP module, n8n’s HTTP Request node, or a direct server-to-server call.
  2. 2POST the payload straight to POST /v1/orders, or map it into fields first if the source data needs reshaping.
  3. 3Set "sandbox": true while testing — the whole pipeline runs free and instantly, and nothing is mailed.
  4. 4Flip sandbox off to go live; pay from a prepaid credit balance, or handle the returned payment_url for a human to approve.

Direct POST from anywhere

{
  "mail_class": "first_class",
  "sandbox": true,
  "text": "Dear Ms. Alvarez, ...",
  "to":   { "name": "Maria Alvarez", "line1": "1 Main St",
            "city": "Richmond", "state": "VA", "zip": "23220" },
  "from": { "name": "Alex Rivera", "line1": "12 Grove Ave",
            "city": "Richmond", "state": "VA", "zip": "23221" },
  "email": "alex@example.com"
}

Same call as curl

curl -X POST https://sendpaperplane.com/v1/orders \
  -H 'Content-Type: application/json' \
  -d '{
    "mail_class": "first_class",
    "sandbox": true,
    "text": "Dear Ms. Alvarez, ...",
    "to":   { "name": "Maria Alvarez", "line1": "1 Main St",
              "city": "Richmond", "state": "VA", "zip": "23220" },
    "from": { "name": "Alex Rivera", "line1": "12 Grove Ave",
              "city": "Richmond", "state": "VA", "zip": "23221" },
    "email": "alex@example.com"
  }'

Under the hood

This is the same public REST API every native app and automation platform on this directory calls underneath — there’s no separate "webhook mode." If a system can send an HTTP POST with JSON, it can mail a letter, with the same USPS address verification and free sandbox as every other path.

Supported action fields

Every integration maps into the same fixed set of fields, the ones the REST API and MCP tools take directly.

FieldWhat it does
mail_classfirst_class, certified, certified_return_receipt, or priority
text or pdf_urlthe letter body as plain text, or a fetchable PDF to print as-is
torecipient name + street/city/state/zip, verified against USPS data
fromreturn address, printed on the envelope and used for undeliverable mail
emailwhere the receipt and status updates go — no account required

Popular Webhook (generic) workflows

Or skip the automation tool: ask Claude or ChatGPT

Every integration here sits on the same MCP endpoint agents use directly. Instead of wiring a trigger to an action, ask Claude or ChatGPT to draft and mail the letter. Same three tools (quote_letter, send_letter, get_letter_status), same price, same free sandbox.

Send mail from ClaudeSend mail from ChatGPT

Related integrations

Send your first letter from Webhook (generic).

Sandbox runs the whole pipeline for free and mails nothing. Live sends start at $1.99, one all-in price.

curl -X POST https://sendpaperplane.com/v1/orders \
  -H 'Content-Type: application/json' \
  -d '{
    "mail_class": "first_class",
    "sandbox": true,
    "text": "Dear Ms. Alvarez, ...",
    "to":   { "name": "Maria Alvarez", "line1": "1 Main St",
              "city": "Richmond", "state": "VA", "zip": "23220" },
    "from": { "name": "Alex Rivera", "line1": "12 Grove Ave",
              "city": "Richmond", "state": "VA", "zip": "23221" },
    "email": "alex@example.com"
  }'

All integrations · API docs

Common questions

Do I need an API key to POST to /v1/orders?

No — the endpoint is open. Each order carries its own payment (a prepaid credit code for hands-off automation, or a Stripe payment_url a human approves). Sandbox orders need nothing.

What if my tool doesn’t have a native Zapier/Make/n8n trigger either?

A raw webhook or a scheduled script polling your own system both work the same way — anything that can construct the JSON body and make an HTTPS POST is a complete integration.

Is this less reliable than a native app?

No — native apps on this directory are thin wrappers over this exact same API. A direct POST just skips the wrapper.