API de vérification d'âge pour sites et applications
Vérifiez qu'un visiteur atteint votre seuil d'âge, sans que votre application stocke de pièce d'identité ni de date de naissance.
Vérifiez qu'un visiteur atteint votre seuil d'âge
Une seule session couvre les deux moitiés : le visiteur prouve qu'il contrôle son numéro sur WhatsApp, répond une fois à la question d'âge, et votre application reçoit le résultat — seuil atteint ou non, selon le seuil que vous fixez.
Comment fonctionne la vérification d'âge
Première étape, vérifier le numéro. Vous appelez POST /start-verification avec flow=age et affichez le lien profond WhatsApp renvoyé, sous forme de QR code sur ordinateur ou de bouton sur mobile. Le visiteur envoie un message pré-rempli depuis son propre compte WhatsApp : le contrôle du numéro est prouvé par l'acte d'envoi, et non par un code que vous lui auriez expédié.
Deuxième étape, fixer le seuil. Le même appel accepte un min_age facultatif. Sans lui, c'est le seuil configuré sur votre compte qui s'applique, soit 18 tant que vous ne l'avez pas changé. min_age n'est accepté que sur flow=age et doit être un entier positif ; tout le reste renvoie un 400.
Troisième étape, passer le contrôle d'âge. Dès que la moitié téléphone est prouvée, la réponse contient un bloc age avec status pending et une age_verification_url. Le visiteur reçoit ce même lien à usage unique sur WhatsApp, et vous pouvez l'utiliser pour le faire avancer dans le navigateur où il se trouve déjà. Il répond chez le prestataire d'âge, puis revient sur votre callback_url avec token et age=verified, denied ou failed ajoutés.
Quatrième étape, recevoir le résultat. Un second webhook, age_verification_result, part dès que le prestataire a répondu, et GET /check-verification-status renvoie la même chose. Le bloc age porte status, verified, required — le seuil réellement contrôlé —, verified_at et provider.
Un piège mérite d'être connu avant d'écrire la boucle de polling. Le statut de la session elle-même passe à verified dès que le numéro est prouvé, alors que age.status vaut encore pending. Prenez le bloc age comme signal de l'étape d'âge, jamais le statut de la session.
Vérification du numéro + vérification d'âge
Les deux étapes répondent à deux questions différentes, et le flux les garde séparées à dessein. Envoyer un message WhatsApp prouve que le visiteur contrôle ce numéro. Cela ne dit strictement rien de son âge : un numéro de téléphone n'est pas une preuve d'âge, et aucune partie de ce flux ne le traite comme telle.
Ce que l'étape téléphone vous apporte, c'est un endroit où poser la réponse. Un résultat d'âge isolé est un fait sans attache — quelqu'un, quelque part, a franchi un seuil. Lié à un numéro que le visiteur vient d'utiliser de façon démontrable, il devient quelque chose que vous saurez reconnaître à la visite suivante.
Cela rend aussi le visiteur récurrent peu coûteux. Un résultat positif est conservé pendant un an en regard du numéro : quelqu'un qui a déjà franchi le même seuil reprouve son numéro et reporte la réponse précédente au lieu d'être renvoyé chez le prestataire. Terminer le message WhatsApp par #reset ignore ce cache quand il vous faut une réponse fraîche.
Vérifier l'âge sans constituer une base d'identités
La question que pose un contrôle d'âge est un booléen. La plupart des données habituellement collectées pour y répondre ne le sont pas, et c'est ce qui rend l'archive de documents si mauvaise en rapport coût-bénéfice : vous finissez par détenir des passeports et des permis de conduire pour stocker un oui.
Ce dont votre application a besoin tient en peu de chose. Le résultat — verified, denied, failed, ou encore pending. Le seuil contrôlé. La date de la réponse, et le prestataire qui l'a donnée. L'identifiant de session et le numéro vérifié qui rattachent la réponse au visiteur en face de vous. C'est tout le bloc age, plus ce que le flux téléphone renvoie déjà.
Ce dont votre application n'a pas besoin, c'est d'une date de naissance ou d'une pièce d'identité, et l'API ne renvoie ni l'une ni l'autre : il n'y a donc aucun champ à journaliser par accident. Une réponse positive est conservée en regard du numéro sous la forme de la réponse, du seuil et de la date. Les identifiants du prestataire vivent dans des secrets côté serveur, et ce que le prestataire a dû regarder pour décider ne vous est pas transmis.
Rien de tout cela ne dit quoi que ce soit de vos propres obligations. Ce que vous devez contrôler, pendant combien de temps vous devez pouvoir en rendre compte et ce qui compte comme méthode acceptable sont des questions pour votre conseil juridique et votre régulateur, pas pour un fournisseur d'API.
Vérification d'âge et vérification d'identité
La vérification d'âge répond à une question : ce visiteur atteint-il le seuil d'âge que vous avez fixé ? La vérification d'identité en pose une autre : qui est cette personne ? Les deux sont souvent vendues ensemble, et elles déplacent des quantités de données très différentes.
flow=age relève de la première. Il ne renvoie ni nom, ni date de naissance, ni rien issu d'un document. Ce n'est pas du KYC, et un résultat positif n'est pas une affirmation d'identité sur laquelle vous appuyer ailleurs. Si votre obligation est de savoir qui est un client, ce n'est pas l'outil pour cette partie-là.
Il hérite aussi de l'hypothèse qui sous-tend tout contrôle par téléphone : que le numéro appartient à la personne qui s'en sert. Prouver le contrôle en envoyant un message est un terrain plus solide que recevoir un SMS, mais un adolescent qui a accès au téléphone d'un adulte reste un scénario qu'aucun contrôle à distance ne referme complètement. L'article sur les contrôles d'âge qui ne deviennent pas une base de pièces d'identité, en lien ci-dessous, détaille l'architecture, les quatre états et les limites.
Intégrer la vérification d'âge dans votre application
Ce sont les deux appels REST de toute intégration Phone-Verif, avec un paramètre de plus. Authentifiez-vous avec votre clé d'API dans l'en-tête x-api-key, ouvrez la session avec flow=age, puis lisez le bloc age dans la réponse de statut ou dans le webhook.
- Visiteur
- Vérification du numéro sur WhatsApp
- Contrôle d'âge chez le prestataire
- Résultat d'âge
- Votre application
Les deux étapes répondent à deux questions différentes et restent séparées d'un bout à l'autre. Envoyer le message WhatsApp prouve que le visiteur contrôle ce numéro ; cela ne vaut jamais comme preuve de son âge. C'est l'étape d'âge qui produit le résultat d'âge.
curl -X POST "https://api.phone-verif.com/start-verification?flow=age&min_age=18" \
-H "x-api-key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{"session_id": "checkout-4821", "callback_url": "https://your-app.example/age-checked"}'Ouvrez une session avec flow=age. Sans min_age, c'est le seuil configuré sur votre compte qui s'applique, soit 18 tant que vous ne l'avez pas changé.
{
"status": "verified",
"age": { "status": "pending", "verified": false, "required": 18 },
"age_verification_url": "https://t.phone-verif.com/av/AbCd1234"
}La session passe à verified dès que le numéro est prouvé, alors que l'étape d'âge reste en cours. Lisez age.status, pas le statut de la session, pour la réponse d'âge — et envoyez le visiteur sur age_verification_url pour terminer le contrôle dans le navigateur où il se trouve déjà.
{
"event": "age_verification_result",
"session_id": "checkout-4821",
"validation_token": "...",
"age": {
"status": "verified",
"verified": true,
"required": 18,
"verified_at": "2026-09-01T22:00:00.000Z",
"provider": "ageverif"
}
}Une fois le prestataire décidé, un second webhook transporte le résultat, et l'endpoint de statut renvoie le même bloc.
flow=age exige un prestataire d'âge configuré sur votre compte. Sans cela, l'API répond 503 avec le code age_not_configured : une erreur de configuration reste distinguable d'une panne.
Questions fréquentes sur la vérification d'âge
- Puis-je vérifier que les utilisateurs ont plus de 18 ans ?
- Oui. Ouvrez la session avec flow=age sans min_age : le flux contrôle alors le seuil configuré sur votre compte, qui vaut 18 tant que vous ne l'avez pas changé dans vos réglages.
- Puis-je utiliser un autre âge minimum ?
- Oui. Passez min_age à l'appel de départ avec le seuil voulu. Ce doit être un entier positif, il n'est accepté que sur flow=age, et tout le reste est rejeté par un 400. Chaque session conserve le seuil avec lequel elle a été ouverte, et ce seuil revient dans le champ required du bloc age : un lecteur ultérieur sait donc ce qui a réellement été établi.
- Dois-je stocker la date de naissance de l'utilisateur ?
- Non, et vous ne le pourriez pas : l'API n'en renvoie pas. Ce qui revient, c'est si le seuil a été atteint, quel était ce seuil, quand la réponse a été donnée et par quel prestataire.
- Dois-je stocker des pièces d'identité ?
- Non. Le prestataire peut avoir besoin de voir un document pour former sa réponse ; votre application ne reçoit jamais que la réponse. Rien du document n'est renvoyé par l'API, il n'y a donc rien à stocker.
- La vérification d'âge prouve-t-elle l'identité d'une personne ?
- Non. flow=age répond à la question de savoir si la personne qui détient un numéro prouvé atteint un seuil. Ce n'est pas de la vérification d'identité ni du KYC : pas de nom, pas de date de naissance, pas de document.
- Que se passe-t-il si la vérification d'âge échoue ?
- denied et failed sont deux issues différentes et ne doivent pas être confondues. denied est une décision du prestataire, et relancer le contrôle ne changera pas la réponse. failed signifie que le prestataire n'a pas pu être joint : rien n'a été décidé, un nouvel essai est donc légitime. Un refus ou une panne du prestataire n'est pas facturé ; un contrôle d'âge abouti est facturé comme une seconde unité en plus de la vérification du numéro.
- Puis-je combiner vérification du numéro et vérification d'âge ?
- C'est exactement ce qu'est flow=age. Une seule session prouve le numéro sur WhatsApp puis exécute l'étape d'âge, et les deux résultats arrivent sur cette même session. Vous n'avez ni deux intégrations à mener ni deux identifiants à rapprocher.
- Puis-je forcer un nouveau contrôle pour un visiteur récurrent ?
- Oui. Un résultat positif est réutilisé pendant un an pour le même numéro et le même seuil. Terminer le message de vérification WhatsApp par #reset ignore la réponse en cache et renvoie le visiteur dans le contrôle complet.
Related
Cas d'usage de la vérification d'âge
Contenu adulte
Là où une case à cocher n'est plus considérée comme un contrôle. Le résultat d'âge filtre l'accès avant toute diffusion, et le visiteur ne vous envoie aucun document.
Jeux d'argent en ligne
Comptes de paris et de casino qui doivent écarter les mineurs. Le contrôle se place à l'inscription, puis avant une action sensible si vos propres règles l'exigent.
Alcool et produits réglementés
Boissons, tabac, vapes, couteaux, solvants et feux d'artifice. Le contrôle se place devant le paiement, sur la commande plutôt que sur la session de navigation.
Jeux vidéo
Titres classés par âge, fonctions de chat et mécaniques payantes restreintes sous un certain âge. Le seuil est un paramètre de requête : chaque fonction peut demander le sien.
Places de marché
Annonces restreintes par la loi ou par votre propre politique. Acheteurs et vendeurs peuvent relever de seuils différents en ouvrant la session avec un min_age différent.
Plateformes sociales et communautaires
Règles d'âge minimum sur les comptes, la messagerie ou les fonctions en direct. La réponse est liée à un numéro prouvé, elle survit donc à la fin de la session.
Build your vérification d'âge flow today
Start integrating in minutes with clear documentation, SDKs, and global message delivery.