Dans une appli mobile (Flutter, React Native, natif)

Ouvrez la hosted_url dans une Custom Tab (Android) ou un SFSafariViewController (iOS) : le portefeuille s'ouvre depuis cette vue par lien profond, et l'utilisateur revient dans votre appli via votre success_url en lien universel (https, donc compatible). Votre backend confirme ensuite par GET /verify/sessions/{id}, exactement comme sur le web. success_url signifie vérification réussie, jamais que l'utilisateur est majeur : une preuve d'âge qui vaut false y renvoie aussi, comme tout résultat vérifié. Lisez le résultat côté serveur (claims.age_over_18 avec le raccourci age_over_18) et appliquez-y votre propre règle. Ne mettez jamais le jeton de licence dans l'appli : c'est votre backend qui crée le parcours et qui lit le résultat.

Les cas d'usage natifs, par l'API de session

Quand vous voulez dessiner l'écran vous-même, l'API de session directe (référence technique) vous donne la requête d'autorisation brute, à afficher comme vous l'entendez.

Votre propre écran QR (cross-device)

Créez la session par POST /verify/sessions, affichez la requête d'autorisation dans votre interface (QR ou lien), et interrogez le statut de la session : l'utilisateur scanne avec le portefeuille de son téléphone pendant qu'il est sur votre écran. C'est le mode qu'utilise la page hébergée, sans sa mise en page.

Borne, comptoir, remise en main propre

Même mécanique sur une borne ou une tablette de comptoir : votre écran affiche le QR, le client scanne, l'agent voit le résultat arriver. La session expire toute seule si personne ne répond : rien à nettoyer.

Preuve déjà en main : la vérification directe

Si votre parcours vous a déjà donné la présentation (SD-JWT VC ou mdoc) par un autre canal, POST /verify/sd-jwt-vc et POST /verify/mdoc la vérifient sans session ni page : une requête, une réponse.

Les trois règles qui ne changent jamais. Le jeton de licence reste côté serveur. Le résultat se confirme par GET /verify/sessions/{id} authentifié, jamais sur la foi d'un paramètre d'URL ou d'un événement navigateur. Et il n'y a rien à stocker : pas de copie de pièce d'identité, pas de photo, seulement la réponse vérifiée que vous avez demandée, comme expliqué dans la FAQ.