Skip to content

Recipes

Recipes are ready-made requests that Prson writes and keeps up to date: what to ask for, and the message the person sees in 8 languages. Start a verification from one instead of choosing requirements yourself, or open one in the Prson app.

What a recipe is

  • Written by Prson only. Nobody else can create, change or store a recipe, through the API, MCP or the app. You only ever create verifications and challenges, optionally starting from one.
  • Fixed requirements in the same shape as POST /v1/verifications, checked like any other.
  • Typed settings for the few things you choose: a country, a region (ISO 3166-2), a domain or an age. Never free text: each value is checked like the fact it makes.
  • Words in en, pt, es, pl, fr, de, it, nl: a title, what it proves and doesn't, and the message shown to the person.
  • Prson may write a recipe for one business (it then says "Recipe for acme.com"); it is still written and kept by Prson.

The recipes

18 today, generated from the API's source. GET /v1/recipes returns the same list, with every language.

Prson recipe · age-18 · version 1

18 or older

Proves the person is at least 18, from the date of birth on the passport or ID card whose chip Prson checked. You learn only yes or no, never the date.

Asks for: 18 or older.

Message: “Please confirm with Prson that you're 18 or older.”

https://app.prson.net/r/age-18

Prson recipe · age-21 · version 1

21 or older

Proves the person is at least 21, from the date of birth on the passport or ID card whose chip Prson checked. You learn only yes or no, never the date.

Asks for: 21 or older.

Message: “Please confirm with Prson that you're 21 or older.”

https://app.prson.net/r/age-21

Prson recipe · minimum-age · version 1

At least a given age

Proves the person is at least the age you choose, from the date of birth on the passport or ID card whose chip Prson checked. You learn only yes or no, never the date.

Asks for: 18 or older (for example; you choose the age).

Settings:age (an age in whole years)

Message: “Please confirm with Prson that you're {age} or older.”

https://app.prson.net/r/minimum-age?age=18

Prson recipe · verified-human · version 1

Verified human

Proves Prson checked the chip of the person's passport or ID card (identity level 5 or more). You learn nothing about who they are: no name and no document details.

Asks for: Verified human (identity level 5 or higher).

Message: “Please confirm with Prson that you're a verified human.”

https://app.prson.net/r/verified-human

Prson recipe · real-person · version 1

Real person, live

A verified human (Prson checked their passport or ID card chip) who also takes a live selfie for you in the Prson camera. Uploads and screenshots are refused. You receive the selfie.

Asks for: Verified human (identity level 5 or higher); A live selfie.

Message: “Please confirm with Prson that you're a real person and take a live selfie.”

https://app.prson.net/r/real-person

Prson recipe · eu-citizen · version 1

EU citizen

Proves the person's nationality, as written in the passport or ID card whose chip Prson checked, is that of an EU country. You don't learn which one.

Asks for: EU citizen.

Message: “Please confirm with Prson that you're a citizen of an EU country.”

https://app.prson.net/r/eu-citizen

Prson recipe · citizen-of · version 1

Citizen of a country

Proves the person's nationality, as written in the passport or ID card whose chip Prson checked, is the country you choose. You learn only yes or no.

Asks for: Citizen of Portugal (for example; you choose the country).

Settings:country (a country, ISO 3166-1 alpha-3 (PRT))

Message: “Please confirm your nationality with Prson: {country}.”

https://app.prson.net/r/citizen-of?country=PRT

Prson recipe · eu-residence-permit · version 1

EU residence permit

Proves the person verified a residence permit issued by an EU country, read from the permit's chip. You don't learn which country.

Asks for: Residence permit from an EU country.

Message: “Please confirm with Prson that you hold a residence permit from an EU country.”

https://app.prson.net/r/eu-residence-permit

Prson recipe · verified-address · version 1

Verified postal address

Proves the person has a postal address verified with a code in a letter Prson posted to it. You don't learn the address.

Asks for: Postal address verified.

Message: “Please confirm with Prson that you have a verified postal address.”

https://app.prson.net/r/verified-address

Prson recipe · lives-in-country · version 1

Lives in a country

Proves the person's verified postal address (checked with a letter Prson posted to it) is in the country you choose. You learn only yes or no.

Asks for: Postal address in Portugal (for example; you choose the country).

Settings:country (a country, ISO 3166-1 alpha-2 (PT))

Message: “Please confirm with Prson the country you live in: {country}.”

https://app.prson.net/r/lives-in-country?country=PT

Prson recipe · lives-in-region · version 1

Lives in a region

Proves the person's verified postal address is in the region, state or province you choose. Only addresses verified with their region chosen from Prson's list can answer; others get no answer.

Asks for: Lives in the region PT-11, Portugal (for example; you choose the region).

Settings:region (a region, state or province, ISO 3166-2 (PT-11, US-CA))

Message: “Please confirm with Prson the region you live in: {region}.”

https://app.prson.net/r/lives-in-region?region=PT-11

Prson recipe · verified-phone · version 1

Verified phone number

Proves the person has a phone number they confirmed with a code sent by SMS. You don't learn the number.

Asks for: Phone number verified.

Message: “Please confirm with Prson that you have a verified phone number.”

https://app.prson.net/r/verified-phone

Prson recipe · verified-email · version 1

Verified email address

Proves the person has an email address they confirmed with a code. You don't learn the address.

Asks for: Email address verified.

Message: “Please confirm with Prson that you have a verified email address.”

https://app.prson.net/r/verified-email

Prson recipe · work-email · version 1

Work email address

Proves the person confirmed an email address on an organisation's own domain, not a free or throwaway provider. You don't learn the address or the domain, and it doesn't prove they still work there.

Asks for: Work email address (not a free or throwaway provider).

Message: “Please confirm with Prson that you have a work email address.”

https://app.prson.net/r/work-email

Prson recipe · email-at-domain · version 1

Email address at a domain

Proves the person confirmed an email address at exactly the domain you choose, such as your company's. You learn only yes or no, not the address, and it doesn't prove they still work there.

Asks for: Email address at example.com (for example; you choose the domain).

Settings:domain (a domain name (example.com))

Message: “Please confirm with Prson that you have an email address at {domain}.”

https://app.prson.net/r/email-at-domain?domain=example.com

Prson recipe · website-owner · version 1

Controls a website

Proves the person controls the domain you choose: they added a DNS record to it that Prson checked.

Asks for: Controls the website example.com (for example; you choose the domain).

Settings:domain (a domain name (example.com))

Message: “Please confirm with Prson that you control {domain}.”

https://app.prson.net/r/website-owner?domain=example.com

Prson recipe · marketplace-seller · version 1

Marketplace seller check

For buying from someone you don't know: proves they're a verified human (Prson checked their passport or ID card chip) with a verified phone number. You don't learn their name, number or document details.

Asks for: Verified human (identity level 5 or higher); Phone number verified.

Message: “Before we go ahead, please confirm with Prson that you're a verified human with a verified phone number.”

https://app.prson.net/r/marketplace-seller

Prson recipe · tenant-check · version 1

Tenant check

For landlords: the person's given names and family name as written in the passport or ID card whose chip Prson checked, that they're 18 or older, and that the document hasn't expired. You learn their name, not their date of birth or document number.

Asks for: Given names (the value); Family name (the value); 18 or older; Identity document not expired.

Message: “Please confirm your name and age with Prson for the rental.”

https://app.prson.net/r/tenant-check

Use one with the API

Send recipe (and recipe_settings) to POST /v1/verifications. The recipe's requirements come first; any requirements you add follow (10 in all). Without a title, the recipe's message in recipe_language (default en) is what the person sees. The response is the usual verification, priced and answered like any other. POST /v1/verifications/quote takes the same fields.

Errors: an unknown recipe is 404 recipe_not_found, a retired one 410 recipe_retired, a missing or wrong setting 400 invalid_recipe_settings (with setting). GET /v1/recipes/{slug}?country=PT shows a recipe with its settings filled in, as the verification would use it. Both GETs are public and cacheable.

cURLPOST /v1/verifications
curl https://api.prson.net/v1/verifications \
  -H "Authorization: Bearer $PRSON_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "recipe": "lives-in-country",
    "recipe_settings": { "country": "PT" },
    "title": "Confirm you live in Portugal to join the local offer",
    "requirements": [{ "type": "selfie", "optional": true }]
  }'
Nodecreate.mjs
// On your server: the API key never goes to the browser or an app.
const res = await fetch("https://api.prson.net/v1/verifications", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.PRSON_API_KEY}`, "Content-Type": "application/json" },
  body: JSON.stringify({
    recipe: "age-18",
    recipe_language: "pt", // without a title, the recipe's message in this language is the title
  }),
});
const { verification, share_url } = await res.json();
// Send share_url to the person yourself.
List themGET /v1/recipes
curl https://api.prson.net/v1/recipes
curl "https://api.prson.net/v1/recipes/lives-in-country?country=PT"

Or put the request together in Build your request, starting from a recipe.

Use one over MCP

On Prson Verify, list_recipes returns the list and create_verification (and quote_verification) take recipe and recipe_settings.

conversation
Agent → list_recipes
      ← { recipes: [{ slug: "age-18", … }, { slug: "lives-in-country", settings: [{ name: "country", kind: "country2" }], … }, …] }
Agent → create_verification { recipe: "lives-in-country", recipe_settings: { country: "PT" } }
      ← { share_url: "https://app.prson.net/challenge/…", verification: { title: "Please confirm with Prson the country you live in: Portugal.", … } }

Open one in the Prson app

Each recipe has a link, https://app.prson.net/r/<slug>, with its settings in the query (?country=PT). Opened on a phone with Prson, the app's challenge composer starts filled in: the person checks it, can change anything, and sends it themselves, from their own account. Elsewhere the page shows a QR code to scan with the phone. Put it behind a button or a QR code in your product for people who ask others from their own phone. The link carries only what to ask, nothing about anyone.

Versions and changes

A recipe's version goes up whenever what it asks or says changes. Links and recipe always use the current version. A recipe Prson retires answers 410 recipe_retired; its slug is never reused for something else. Prson looks at which combinations of requirements are asked for most (counts only, nothing about who) to decide which recipes to write next.