Social and user content
Age verification for social and UGC platforms
Social and user content platforms have to protect minors without turning into ID collectors. Tessio confirms a user is over 18 from their EU Digital Identity Wallet, so you can gate adult features and meet your duties while storing no personal data.
The problem
Under the DSA, platforms accessible to minors have to take proportionate measures to protect them, and the DSA is explicit that you shouldn't collect extra personal data just to check age. The UK Online Safety Act adds age-assurance duties for services likely to be accessed by children. So you need real assurance and minimal data at the same time.
That is the shape of Tessio. A user proves they are over 18 from their wallet, you get a signed yes or no, and no personal data is stored. You can gate adult features or age restrict parts of the experience without building an identity database.
Before and after
The usual way
- Self-declared ages that give no real protection.
- Heavy ID checks that clash with the DSA data-minimisation expectation.
- You store personal data just to estimate age, which regulators caution against.
- No auditable record that you took a real measure.
With Tessio
- A wallet based over-18 proof that fits data minimisation.
- No extra personal data collected or stored to check age.
- A signed, auditable result showing you took a proportionate measure.
- One approach aligned to the EU wallet and the Commission age-verification blueprint.
How it works
01
Call the API where you gate
POST an age check when a user reaches an age restricted feature or signs up. You get a hosted verification link.
02
The user confirms 18+
They prove they are over 18 from their EU Digital Identity Wallet. No ID upload.
03
You get a signed result
A signed yes or no lands on your webhook. You apply the right experience and store no personal data.
Start a check
One POST creates a check and returns a link for the user's wallet. The signed result lands on your webhook. Full detail is in the developer docs.
curl -X POST https://api.tessio.eu/v1/age-checks \
-H "Authorization: Bearer tk_live_your_key" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: gate-4821" \
-d '{ "minAge": 18, "reference": "gate-4821" }' Frequently asked
Does this fit the DSA data minimisation rule?
The DSA says protecting minors should not push you to collect more personal data than you already hold. A wallet based over-18 proof returns a single yes or no and stores nothing, which sits well with that principle. Read our DSA summary and confirm your own obligations.
Can I age restrict only part of the experience?
Yes. You choose where to require a check, so you can gate adult features or specific spaces rather than the whole platform, and only ask for a check when it actually matters.
What about users without a wallet?
Today, most people do not have one yet. EU wallet rollout is early and we do not provide a document or selfie fallback, so Tessio is not a drop in replacement for your current age checks. The realistic path is to run Tessio alongside what you already use and move more traffic to the wallet as adoption grows. We would rather tell you that now than after you have integrated.
Related reading
EU Digital Services Act and age assurance
EU regulation
UK Online Safety Act age assurance
UK regulation
The EU Digital Identity Wallet, for relying parties
EU Digital Identity
Tessio vs VerifyMy
Age assurance and online safety
Tessio vs Yoti
Age assurance and digital ID
Tessio for compliance
For compliance, legal and DPOs
Developer docs
The age verification API
Age assurance for social and UGC platforms
Put it in front of your users
Access is invite only while we onboard design partners. Tell us your volume and the markets you cover, and we'll set you up with a sandbox key and a quote.