# PostalForm MPP Orders

> PostalForm MPP Orders is a paid API for AI agents from PostalForm at postalform.com, paid per call via MPP, $3.4/call (dynamic — varies by input), status unknown (last checked 2026-10-11).

Create or reuse an MPP machine order to print and mail a physical letter, postcard, or form to a recipient via postal service.

## Facts

- Endpoint: POST https://postalform.com/api/machine/mpp/orders?utm_source=zero.xyz
- Price: $3.4/call (dynamic — varies by input)
- Payment: MPP
- Status: unknown
- Last checked: 2026-10-11
- Activations on Zero: 0
- Provider: PostalForm
- Docs: https://postalform.com/agents
- Website: https://postalform.com
- Tags: mail, print, letters, physical, postal, web
- Canonical page: https://www.zero.xyz/c/postalform-orders-db85ec47
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_zAIfTfY-yHd8v2DCy9SoX

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability postalform-orders-db85ec47 -d '<json body>'
```

Example prompt: Use PostalForm to mail a physical letter to John Smith at 123 Main St, Springfield IL 62701 — the sender is Acme Corp at 456 Oak Ave, Chicago IL 60601 — and use this PDF I have for the content.

## When to prefer this

Use this endpoint when an AI agent needs to physically mail a document, letter, postcard, or form to a real postal address — especially for single-recipient or bulk campaigns using PDF, text, or HTML templates. Prefer over alternatives when payment is handled via x402/MPP crypto payment protocols and physical delivery is required rather than digital communication.

## Known failure modes

- 402 Payment Required on unauthenticated call — must retry with Authorization: Payment header after settlement
- Invalid or missing required fields (recipient_name, sender/recipient address, content) returns 422 validation error
- PDF or HTML content malformed or too large returns content error
- Conflicting oneOf schema branches (e.g. both bulk and single-recipient fields) causes schema validation failure
- Address ID not found in account returns 404 or validation error
- Bulk template mode mismatch (text mode but no template_text provided) returns validation error

## How this service works

Unauthenticated calls return 402 Payment Required with WWW-Authenticate: Payment challenges. Retry the exact same body with Authorization: Payment after settlement.

## Output

Returns a UUID order_id, payment status (is_paid, payment_status), mailpiece type (letter or postcard), postcard size if applicable, current fulfillment step, price in USD, machine payment details including protocol (x402/mpp), network, recipient wallet, and settlement reference, plus a campaign_url for bulk orders.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "allOf": [
  {
   "if": {
    "required": [
     "bulk"
    ],
    "properties": {
     "bulk": {
      "type": "object",
      "required": [
       "content_mode"
      ],
      "properties": {
       "content_mode": {
        "const": "pdf"
       }
      }
     }
    }
   },
   "then": {
    "required": [
     "pdf"
    ],
    "properties": {
     "pdf": {
      "oneOf": [
       {
        "type": "string",
        "minLength": 1,
        "description": "A data:application/pdf;base64,... URL or a public HTTPS download URL. The canonical format is the upload_token object variant."
       },
       {
        "type": "object",
        "required": [
         "upload_token"
        ],
        "properties": {
         "upload_token": {
          "type": "string",
          "minLength": 1,
          "description": "Preferred canonical PDF reference. Get this from PostalForm PDF upload tooling."
         }
        },
        "additionalProperties": false
       },
       {
        "type": "object",
        "required": [
         "download_url",
         "file_id"
        ],
        "properties": {
         "file_id": {
          "type": "string",
          "minLength": 1,
          "description": "Stable file identifier paired with download_url."
         },
         "download_url": {
          "type": "string",
          "format": "uri",
          "description": "HTTPS URL to a PDF file."
         }
        },
        "additionalProperties": true
       }
      ]
     }
    }
   }
  }
 ],
 "oneOf": [
  {
   "not": {
    "required": [
     "bulk"
    ],
    "properties": {
     "bulk": {
      "type": "object",
      "allOf": [
       {
        "oneOf": [
         {
          "required": [
           "csv_content"
          ]
         },
         {
          "required": [
           "recipients"
          ]
         }
        ]
       }
      ],
      "oneOf": [
       {
        "type": "object",
        "required": [
         "content_mode",
         "template_text"
        ],
        "properties": {
         "content_mode": {
          "const": "text"
         },
         "template_text": {
          "type": "string",
          "minLength": 1,
          "description": "Required when bulk.content_mode is text. Use {{field_name}} merge tags from CSV headers or JSON recipient merge_fields and address fields. Plain text only: HTML tags are rejected because text mode would print them literally."
         }
        }
       },
       {
       
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "order_id",
  "status",
  "payment_status",
  "is_paid",
  "current_step",
  "payment_intent_id",
  "payment_channel",
  "price_usd",
  "currency",
  "mailpiece_type",
  "postcard_size",
  "postcard_guidelines_url",
  "machine_payment"
 ],
 "properties": {
  "x402": {
   "type": "object",
   "required": [
    "network",
    "pay_to",
    "settlement_tx",
    "settled_at"
   ],
   "properties": {
    "pay_to": {
     "anyOf": [
      {
       "type": "string"
      },
      {
       "type": "null"
      }
     ]
    },
    "network": {
     "anyOf": [
      {
       "type": "string"
      },
      {
       "type": "null"
      }
     ]
    },
    "settled_at": {
     "anyOf": [
      {
       "type": "string",
       "format": "date-time"
      },
      {
       "type": "null"
      }
     ]
    },
    "settlement_tx": {
     "anyOf": [
      {
       "type": "string"
      },
      {
       "type": "null"
      }
     ]
    }
   },
   "additionalProperties": false
  },
  "status": {
   "type": "string"
  },
  "is_paid": {
   "type": "boolean"
  },
  "currency": {
   "anyOf": [
    {
     "type": "string"
    },
    {
     "type": "null"
    }
   ]
  },
  "order_id": {
   "type": "string",
   "format": "uuid",
   "description": "Canonical server order id. This may differ from request_id when PostalForm reuses an existing unpaid draft."
  },
  "certified": {
   "type": "boolean"
  },
  "err_email": {
   "anyOf": [
    {
     "type": "string",
     "format": "email"
    },
    {
     "type": "null"
    }
   ]
  },
  "price_usd": {
   "anyOf": [
    {
     "type": "number"
    },
    {
     "type": "string"
    },
    {
     "type": "null"
    }
   ]
  },
  "err_status": {
   "enum": [
    "manual",
    "pending",
    "sent",
    "failed"
   ],
   "type": "string"
  },
  "page_count": {
   "anyOf": [
    {
     "type": "number"
    },
    {
     "type": "null"
    }
   ]
  },
  "status_url": {
   "type": "string",
   "format": "uri",
   "description": "Poll this same order after either payment path."
  },
  "next_action": {
   "enum": [
    "choose_payment_method",
    "open_checkout",
    "poll_status"
   ],
   "type": "string"
  },
  "campaign_url": {
   "anyOf": [
    {
     "type": "string"
    },
    {
     "type": "null"
    }
   ],
   "description": "Bulk campaign dashboard route for mailing_campaign orders. Null for single-recipient orders."
  },
  "checkout_url": {
   "anyOf": [
    {
     "type": "string",
     "
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/postalform-orders-db85ec47/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from postalform.com](https://www.zero.xyz/host/postalform.com/llms.txt)
