A personhood check by U.S. mailDomestic addresses only
POST RequestForm PR-01

A personhood check by U.S. mail

We mail POST cardsto verify your users.

POST Request mails a single-use QR code to a U.S. address. When your user scans it and confirms, a signed webhook tells you they (probably) aren’t an AI (for now).

Rates from
$1.00 / attempt
Standard schedule
5–7 business days
Completion
Signed webhook
One last step
Scan to continueCARD …7F3A
POST RequestForm PR-01
Your card has arrived

GOOD THINGS COME TO THOSE WHO WAIT 5–7 BUSINESS DAYS.

What your user receives

A better reason to check the mail.

The card carries a private, one-time route back to your verification flow. It expires after use.

  1. 01 / Delivery

    A POST card arrives

    It carries a private, single-use QR code on the message side.

  2. 02 / Verification

    They scan and confirm

    The QR code opens a short verification page. With email binding enabled, they also enter a code sent to their email as a second factor.

  3. 03 / Return

    Signed and returned

    They see the green VERIFIED postmark. Your server receives the signed webhook.

POST RequestReturn receipt
FORM PR-01 / COPY B
  1. Card delivered
  2. Credential opened
  3. Verification completed
Card
...7F3A
Binding
Email OTP
Event
verification.verified
VERIFICATION DIVISIONPOST REQUESTVERIFIED
COMPLETE / SIGNED EVENT RETURNED
A completed card fires verification.verified

The delivery loop

One request. One physical checkpoint.

One API call sends the card. One webhook tells you it was received and confirmed.

  1. 01

    Submit an address

    Your server sends a domestic mailing address. We validate it, debit your postage balance, and create a single-use credential.

    POST /v1/verifications
  2. 02

    We print and mail

    We print the card and send it by U.S. mail.

    PRINTED -> IN TRANSIT
  3. 03

    Your user closes the loop

    They scan the card and confirm receipt. Email-bound cards also require the account code. We sign a webhook when complete.

    verification.verified

Fraud resistance

Make fake accounts expensive.

Every attempt now needs a deliverable address, postage, and several days.

01 / Delivery

A physical step for every attempt

Each verification requires a card sent through the U.S. mail.

02 / Optional binding

Pair the card with email

If you enable email binding, your user confirms with the card and a code sent to their account.

03 / Single use

One card, one completion

The route expires when verification is complete, reserving each card for a single account.

Domestic rates / July 2026

Postage, not seats.

Prepay a dollar balance. Each mailpiece debits its rate. Credits do not expire.

ClassFormat and scheduleRate
BulkPostcard / batched weekly / 2–3 weeksThe lowest rate, for communities that gate on personhood and can trade speed for cost. Batched into weekly presorted drops.$1.00
Standard DefaultPostcard / mailed next day / 5–7 business daysThe default. A postcard dispatched the next business day — the everyday checkpoint for most integrations.$1.50
SealedSealed letter / mailed next day / 5–7 business daysA letter in an unbranded, security-tinted envelope. Tamper-evident, immune to in-transit observation, and — because nothing meaningful shows on the exterior — the strongest privacy for the recipient. The tier for compliance teams and for users with roommates.$4.00
Credits never expire — buy postage now, spend it whenever.Postage is non-refundable after print; an undeliverable Sealed piece is credited 50%.Bulk is for communities worth waiting for.
SEALEDNO. PR-0001-C2E9
Sealed class uses an unbranded, security-tinted envelope. Nothing on the exterior reveals the account, the platform, or the contents — no account information is visible in transit.

Integration

A request now. Proof later.

1 / Create verificationHTTP
curl https://postrequest.dev/api/v1/verifications \
  -H "Authorization: Bearer pr_live_..." \
  -d '{
    "address": {
      "line1": "1600 EXAMPLE ST",
      "city": "SEATTLE",
      "state": "WA",
      "zip": "98101"
    },
    "class": "standard",
    "external_id": "user_8123"
  }'
2 / Receive proofWEBHOOK
{
  "type": "verification.verified",
  "id": "01JZ3NVJ4M8Q",
  "external_id": "user_8123",
  "status": "verified",
  "verified_at": "2026-07-17T15:02:11Z",
  "binding": "email_otp"
}

Start the clock

Send the first card.