One POST request.One letter in the post.

REST, JSON, idempotency keys and HMAC-signed webhooks.

v1 · stable
Query methods

Three ways to ask a question of the register. All three take JSON, return JSON, and are billed per query.

Identity Check

Ask whether a Postal ID belongs to a completed postal verification, and what it concluded. The answer is a verdict, not a copy of the subject’s file.

POST /api/v1/postal-id/verify
You sendA Postal ID code
You get backA verdict
Posts a letterNo
Address Match

Compare an address you hold against the one a subject confirmed by letter. Useful at onboarding, before you spend a stamp.

POST /api/v1/postal-id/lookup-address
You sendEmail and address pairs
You get backMatch, partial or no match
Posts a letterNo
Hash Verification

Check a pack hash against the packs we issued. Confirms the file is ours and unaltered; discloses nothing about the subject.

POST /api/v1/evidence/verify-public
You sendA pack hash
You get backIssued or no match
Posts a letterNo

All three need an API key and a recorded lawful basis for the lookup.

Create a case

Send an address.
Get a case id.

Pick the assurance bundle at creation time. We handle routing, printing, postage and delivery tracking, then push you the sealed pack.

Idempotent creates
Sandbox keys
HMAC-signed webhooks
POST /api/v1/casesapi.postal.id
{
  "subject": { "name": "J. Sinclair" },
  "address": {
    "line1": "10 Downing Street",
    "city": "London",
    "postalCode": "SW1A 2AA",
    "countryCode": "GB"
  },
  "bundleId": "email-sms-postal",
  "reference": "MATTER-4471"
}
201 created
{ "id": "case_9fK2m", "status": "POSTAL_DISPATCHED" }
Webhooks

Every state change,
signed.

Each delivery carries an HMAC-SHA256 signature over the raw body. Retries run with exponential backoff for 24 hours.

case.postal_dispatchedletter printed and posted
case.postal_in_transitcarrier scanned it in transit
case.postal_verifiedpasscode entered by subject
evidence.generatedpack hashed and available
Getting started

Sandbox first. Nothing is printed or posted until you switch to a live key.

Three steps to
your first query.

01
Create an account

Open a business workspace. You can do it yourself; there is no call to sit through first.

Open an account
02
Get API keys

A sandbox key is issued immediately. Live keys are enabled once your workspace is verified and billing is in place.

Request keys
03
Make your first query

Point a sandbox key at a query method or create a case. Sandbox never prints and never posts, so you can run it as often as you like.

See the methods
Pricing

Per query, in the currency of your billing account. Postal cases are priced separately from register queries, because one of them buys a stamp.

You pay per query.
Sandbox is free.

Sandbox

Every method, every webhook, no letters. Unmetered.

Free
Identity Check

Per query. Billed on a returned verdict, not on a lookup that finds nothing.

To be confirmed
Address Match

Per query.

To be confirmed
Postal case

Per case: print, postage, passcode, evidence pack. Varies by destination country.

To be confirmed

The blanks are deliberate: this project does not publish numbers that have not been agreed. Drop the rate card into those rows before the page is published — the layout takes a real figure without changing.