The account completed a single-use credential delivered to the submitted mailing address, optionally bound to a second account channel.
Mailbox possession API
Good things take5–7 business days.
POST Request mails a single-use credential to a U.S. address. When your user returns it, a signed webhook confirms that the account completed a credential delivered there.
- Rates from
- $0.75 / attempt
- Standard schedule
- 5–7 days
- Recipient names
- Never collected
Legal identity, one-human uniqueness, permanent residence, or continued control of the address after verification.
The delivery loop
One request. One physical proof.
A delivered card gives your risk system another fact to work with, one rooted in a physical place and completed on a postal schedule.
- 01
Submit an address
Your server sends a domestic mailing address. We validate it, debit your postage balance, and create a single-use credential. Recipient names are not accepted.
POST /v1/verifications - 02
We print and mail
The credential leaves on the selected service schedule. The mailpiece carries no platform name, account hint, email address, or useful information for an interceptor.
PRINTED -> IN TRANSIT - 03
Your user closes the loop
They scan the card and confirm receipt, optionally with an email code. We sign a webhook when the loop closes.
verification.verified
Threat model
A stolen card tells you nothing.
No name. No platform. No account hint. The card is useful only to the account that requested it.
Cardstock is the display surface
The QR is a single-use bearer credential, protected by physical possession and an expiration date.
Two channels, one claim
Optional email binding makes the card useless without the account, and the email code useless without the card.
Farms leave sorting patterns
Commercial mail drops, address velocity, and scan geography are extracted as risk signals at ingest.
Records schedule
Mail the credential. Destroy the address.
The Postal Service does not keep a copy of your mail. Neither do we. Fraud detection runs on keyed fingerprints; plaintext addresses are removed on schedule.
Read the data lifecycle| Record | Plaintext window | After purge |
|---|---|---|
| Mailing address | Terminal state + 90 days | Destroyed |
| Account-address link | Terminal state + 90 days | Destroyed |
| Delinked fraud signals | 18 months | Week-level dates |
| Recipient name | Never collected | None |
| Email binding | During verification | Hash + mask only |
| QR credential | During verification | Hash only |
Integration
A request now. Proof later.
Test mode completes the same loop without buying postage. Move to a live key when the webhook is wired.
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"
}'{
"type": "verification.verified",
"id": "01JZ3NVJ4M8Q",
"external_id": "user_8123",
"status": "verified",
"verified_at": "2026-07-17T15:02:11Z",
"binding": "email_otp"
}Domestic rates / July 2026
Postage, not seats.
Prepay a dollar balance. Each mailpiece debits its rate. Credits do not expire.
| Class | Format and schedule | Rate |
|---|---|---|
| Bulk | Postcard / batched weekly / 2–3 weeks | $0.75 |
| Standard Default | Postcard / mailed next day / 5–7 days | $1.25 |
| Certified | Sealed letter / mailed next day / 5–7 days | $3.00 |
Test mode uses simulated mail