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

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.