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 and postage, 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 is signed with HMAC-SHA256 over the timestamp and the raw body. A failed delivery is retried up to five times with exponential backoff, and you can replay any delivery by hand from the dashboard.

case.postal_dispatchedletter printed and posted
case.postal_verifiedpasscode from the letter entered by the subject
case.manual_reviewthe case needs a person at your firm to look at it
case.completefinished, carrying its assurance level
case.failedended without the address being proved
postal.returnedthe letter came back undelivered
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.