For developers
The age verification API for developers
One REST call starts a check, and a signed result lands on your webhook after the user proves they're over 18 with the EU age verification app (the EU Digital Identity Wallet follows once our access certificate is issued). There is no SDK to install and no document or date of birth to store.
Tessio is a plain REST API. You POST an age check and get back a hosted verification link with a check id. The signed result comes to you over a webhook, and there is no document capture to build. You can integrate against the sandbox today, and the same integration already completes real checks from the EU age verification app in production.
Once checks are running, the stats API answers the same numbers as the stats page in the console, from the pass rate to why checks were refused. An MCP server lets an AI assistant read them with a key limited to stats.
If you would rather run the verifier yourself, the core is open source. Tessio.Verifier is an ASP.NET Core library on NuGet for .NET 8 to 10, under Apache-2.0. It does OpenID4VP, SD-JWT VC and mdoc. Tessio.Cloud is the hosted version of the same core.
One API, no SDK
POST to /v1/age-checks and send the person to the hosted verification link it returns. Omit the body to verify age_over_18.
Webhooks and idempotency
Register a webhook and verify the HMAC signature before you trust an event. Send an Idempotency-Key so retries return the original check. Polling stays available as a fallback.
No documents or dates of birth
A check returns an over 18 boolean, not a date of birth or a document. There is no selfie and no ID scan, so there is nothing for you to store or secure.
Open source and self hostable
The core is Tessio.Verifier, ASP.NET Core, Apache-2.0, on NuGet for .NET 8 to 10. Run it hosted as Tessio.Cloud or self host it on your own stack.
Start a check
One POST creates a check and returns a link for the user's wallet. The signed result comes back on your webhook. Everything is in the developer docs.
curl -X POST https://api.tessio.eu/v1/age-checks \
-H "Authorization: Bearer tk_your_key" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-4821" \
-d '{ "minAge": 18, "reference": "order-4821" }' Frequently asked
Is there an SDK to install?
No SDK needed. It's a plain REST API you can call with curl or your HTTP client of choice. If you want the verifier as a library, the open source Tessio.Verifier is on NuGet for .NET.
What do I get back?
A signed over 18 yes or no. Register a webhook to receive results or poll GET /v1/age-checks/{id} as a fallback. The result carries the boolean you need and no date of birth or document.
Can I self host it?
Yes. Tessio.Cloud runs on the open source Tessio.Verifier, an ASP.NET Core library on NuGet under Apache-2.0 for .NET 8 to 10. You can run the verifier inside your own environment.
Can I read my stats from code or ask an AI assistant?
Both. The stats API at /v1/stats answers the pass rate, the funnel, refusal reasons and breakdowns. The MCP server answers the same reads to an assistant such as Claude Code. Use a key limited to reading stats, which cannot start a check. See the stats API and MCP server pages in the docs.
Keep exploring
Age verification for iGaming
Betting and gaming
Age verification for age restricted retail
Nicotine, vape and alcohol
The EU Digital Identity Wallet, for relying parties
EU Digital Identity
Tessio for compliance
For compliance, legal and DPOs
How to measure an age check funnel
Guide
Developer docs
The age verification API
For developers
Build against the sandbox
Create an account, mint a project API key and integrate against the sandbox today. Signup is open and a test project works as soon as you create one. Design partners get preferential pricing.