Vérifier vos clients en 3 minutes
idantitem vérifie l'identité de vos clients en quelques secondes. Cette documentation vous montre comment intégrer la vérification dans votre site, votre boutique en ligne, ou directement par API.
1. Obtenir une clé API
- Créez un compte (500 vérifs/mois offertes, sans CB).
- Dans le dashboard, ouvrez votre projet → Clés API.
- Générez une clé
pk_live_…(publishable, pour le navigateur) et une clésk_live_…(secrète, pour votre serveur).
2. Choisir un mode d'intégration
Trois façons, par ordre de simplicité :
- Lien hébergé — vous partagez une URL, on s'occupe de tout.
- Plugin WooCommerce — installation en 2 clics dans votre admin.
- API REST — pour les intégrations sur mesure.
Lien hébergé — le plus simple
Pour les marchands qui n'ont pas d'équipe dev, partagez ce type de lien :
https://idantitem.com/w?pk=pk_live_xxx&country=HTI&ruleset=ecommerce_signup
Le client clique, fait sa vérif, vous voyez le résultat dans votre dashboard. Pas une ligne de code.
Paramètres URL
pk— clé publishable (obligatoire)ruleset—ecommerce_signup,mobile_money,bank_onboardingcountry— ISO-3 (HTI / CAN / FRA / USA / DOM)doc—passport/national_id/permislang—fr/ht/enprimary/bg— couleurs du widget en hexadécimal (voir section suivante)
Couleurs du widget
Par défaut le widget utilise notre palette (boutons verts, fond blanc). Vous pouvez choisir vos propres couleurs.
Méthode recommandée : depuis votre dashboard, ouvrez le projet, section Apparence du widget, choisissez la couleur principale (boutons + étapes actives) et la couleur de fond. Un aperçu en direct vous montre le rendu. Le widget récupère ces couleurs automatiquement à chaque ouverture, peu importe le mode d'intégration (lien hébergé, plugin, JS, iframe).
Override ponctuel : pour tester une palette sans l'enregistrer, ajoutez les paramètres primary et bg au lien hébergé. Le # doit être URL-encodé en %23 :
https://idantitem.com/w?pk=pk_live_xxx&primary=%23ff5722&bg=%23ffffff
La couleur du texte sur les boutons est calculée automatiquement (noir ou blanc selon la luminance) pour garder un bon contraste.
#rrggbb (6 caractères). Les noms CSS et les notations rgb() ne sont pas reconnus, le widget retombe alors sur les valeurs par défaut.
WordPress
Le plugin idantitem Verify marche sur n'importe quel site WordPress, pas seulement les boutiques. Trois manières de poser la vérification : un shortcode à coller où vous voulez, un gate qui bloque du contenu réservé, ou un bloc Gutenberg. Plus des hooks pour WooCommerce, Contact Form 7 et Gravity Forms quand ces plugins sont présents.
Installation (~2 minutes)
- Télécharger le plugin (ZIP)
- WP admin → Extensions → Ajouter → Téléverser une extension → choisir le ZIP → Activer
- Réglages → idantitem Verify → coller la clé publishable
pk_…et la clé secrètesk_…(générées dans le dashboard idantitem) - Optionnel : coller le webhook secret et copier l'URL
/wp-json/idantitem/v1/webhookdans le dashboard idantitem (synchronisation reverse)
0 = sans expiration).
Shortcode [idantitem_verify]
Affiche un bouton Démarrer la vérification partout où WordPress accepte du contenu (page, article, widget, gabarit de thème via do_shortcode()).
[idantitem_verify]
[idantitem_verify ruleset="bank_onboarding"
country="HTI"
label="Vérifier mon identité"
on_done="/welcome"]
Attributs (tous facultatifs) :
ruleset— surcharge le ruleset configuré globalement (ecommerce_signup,mobile_money,bank_onboarding).country— code ISO-3 pré-sélectionné (HTI,CAN,FRA,USA,DOM).label— texte du bouton.on_done— URL vers laquelle rediriger après succès (utile pour un parcours guidé).
Gate de contenu [idantitem_required]
Emballez du contenu pour qu'il ne soit visible qu'aux visiteurs ayant complété leur vérification :
[idantitem_required message="Cette section est réservée aux profils vérifiés."]
<h3>Documents privés</h3>
<p>Lien vers le PDF, code de réduction, contact direct…</p>
[/idantitem_required]
Le gate utilise deux backends de stockage :
- Utilisateurs connectés — la vérif est stockée dans
user_meta, donc valide entre toutes les sessions et tous les appareils du même compte. - Visiteurs non connectés — un cookie
idantitem_session_tokende 30 jours est posé, lié à un transient WP. Le gate reste fermé même après une fermeture du navigateur.
Bloc Gutenberg
Dans l'éditeur, + → Recherche « idantitem Verify » et glissez le bloc. Mêmes attributs que le shortcode (configurables dans la barre latérale du bloc). Aucun JavaScript à compiler — le rendu est server-side.
Helper PHP pour les développeurs de thèmes / plugins
// dans n'importe quel fichier PHP du thème ou d'un autre plugin
if ( idantitem_user_is_verified() ) {
// L'utilisateur courant est vérifié — afficher du contenu réservé,
// autoriser un téléchargement, débloquer un formulaire, etc.
}
// Pour un user spécifique :
if ( idantitem_user_is_verified( $user_id ) ) { … }
// Pour les visiteurs guests (cookie + transient) :
if ( idantitem_session_is_verified() ) { … }
Ces fonctions retournent true uniquement si le verdict était APPROVED ou MANUAL_REVIEW ET la vérification n'a pas dépassé la durée de validité configurée.
Webhook entrant /wp-json/idantitem/v1/webhook
Quand idantitem complète une vérification côté serveur (ex. l'utilisateur a fait sa vérif depuis le téléphone alors qu'il était sur l'ordi), le résultat peut être poussé directement vers WordPress. Le plugin :
- Reçoit le POST sur
/wp-json/idantitem/v1/webhook - Vérifie la signature HMAC (
X-Idantitem-Signature: sha256=…) avec votre webhook secret - Si le body contient un champ
emailet qu'un user WP a cet email → marque ce user comme vérifié - Déclenche l'action WP
idantitem_verification_receivedpour vos hooks personnalisés
// Exemple d'écoute custom
add_action( 'idantitem_verification_received', function( $body ) {
// Logique sur mesure : envoyer un email, créer un post, etc.
error_log( 'Verification: ' . $body['verdict'] );
} );
Contact Form 7 / Gravity Forms
Si l'un de ces deux plugins est installé, l'intégration s'active automatiquement :
- Contact Form 7 — collez
[idantitem_verify]ou[idantitem_required]…[/idantitem_required]dans le template du formulaire. La validation côté serveur bloque le submit si l'utilisateur n'est pas vérifié. - Gravity Forms — ajoutez un champ HTML dont le contenu inclut
[idantitem_verify]. Le hookgform_validationrejette le submit tant que la vérif n'est pas faite.
WooCommerce (extension du même plugin)
Quand WooCommerce est actif, le plugin idantitem Verify ajoute automatiquement un gate au checkout. Aucune installation séparée — c'est le même ZIP.
Modes de déclenchement
- always — chaque commande exige une vérif
- threshold — seulement au-dessus d'un montant (ex. 5000 HTG)
- product_flagged — case à cocher par produit (édition produit → onglet « Avancé »)
Le bouton Démarrer la vérification est rendu juste avant Place order. Le hook woocommerce_checkout_process recroise l'verification_id avec l'API idantitem (server-to-server, avec sk_…) avant de laisser passer la commande. L'identifiant est ensuite stocké dans _idantitem_verification_id et visible sur la fiche commande admin.
API REST
Authentification
Toutes les routes /api/v1/tools/* et /api/v1/screening acceptent une clé secrète :
Authorization: Bearer sk_live_...
Le widget utilise sa clé publique via l'header X-Idantitem-Key: pk_live_....
Vérifier un document
curl -X POST https://idantitem.com/api/v1/tools/document/structured \
-H "Authorization: Bearer sk_live_..." \
-F "file=@permis.png"
Retourne le type de document détecté + les champs structurés (numéro, nom, dates, etc.).
Cross-check partenaire (constituer un dossier KYC)
Après que votre client a terminé la vérification dans le widget, votre backend appelle GET /api/v1/widget/verifications/{id} avec votre clé secrète sk_live_…. Cette route est strictement serveur-à-serveur : la clé publishable pk_ est refusée.
curl -H "Authorization: Bearer sk_live_..." \
https://idantitem.com/api/v1/widget/verifications/44
Réponse type (toujours présent : verdict, masked, reasons, signals) :
{
"verification_id": 44,
"verdict": "REJECTED",
"confidence_percent": 0,
"masked": { "country": "HTI", "verdict": "REJECTED", "status": "rejected" },
"reasons": ["hard_rule:face_similarity_min", "face_not_detected", "mrz_or_qr_unreadable"],
"signals": { "face_similarity": 0.0, "face_decision": "NO_FACE_DETECTED", "mrz_ok": false }
}
Avec expose_identity=true au moment du finalize, la même réponse contient en plus :
identity:{ surname, given_names, birth_date, document_number, country, sex, document_type }extraits du document.media: URLs HMAC signées (TTL 1h) vers les imagesdocument_front,document_back(si présent),selfie.
Les URLs media sont éphémères : votre backend doit les télécharger immédiatement et les ré-héberger dans votre propre stockage. Ne stockez jamais une URL idantitem.com/.../files/... en base, elle sera invalide après expiration. Un nouvel appel à /verifications/{id} regénère des URLs fraîches.
identity. Activez exposeIdentity: true uniquement après avoir collecté le consentement explicite de l'utilisateur (case à cocher au checkout, mention dans vos CGU). idantitem reste sous-traitant et journalise chaque accès dans widget.partner.identity_accessed.
Screening AML
curl -X POST https://idantitem.com/api/v1/screening \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{"name":"Jean Dupont","birth_date":"1985-03-15","nationality":"HT"}'
Verdicts : CLEAR < 0.5, ENRICH_INVESTIGATION 0.5–0.8, MANUAL_REVIEW 0.8–0.95, HARD_BLOCK ≥ 0.95.
Ou activez le screening automatique sur votre projet : chaque vérif déclenche un screening en background, hits visibles dans le dashboard.
Outils IA (ChatGPT, Claude, Cursor)
Pour aider votre LLM préféré à écrire du code idantitem :
- /llms.txt — index format llmstxt.org
- /llms-full.txt — référence complète markdown (auth + endpoints + schémas)
- /openapi.json — spec OpenAPI native
- /docs — Swagger UI pour tester