Un scénario Make se fige dès qu'un reCAPTCHA v2 s'intercale entre deux modules : le formulaire ne part pas, la donnée ne remonte plus. La réponse tient en un seul module : le module HTTP de Make envoie le défi à CaptchaAI, récupère le token résolu, puis le réinjecte dans la suite du flux, sans une ligne de code.
Make (anciennement Integromat) orchestre vos applications et vos API de façon visuelle. Ce guide monte, module par module, un scénario qui soumet un CAPTCHA à CaptchaAI, interroge le résultat jusqu'à obtention du token, puis exploite ce token dans les actions suivantes.
À quoi ressemble le flux
Le scénario que nous construisons reste identique quel que soit le site cible :
- un déclencheur webhook reçoit une URL de page et un sitekey reCAPTCHA ;
- le CAPTCHA part vers CaptchaAI pour résolution ;
- le scénario interroge le résultat jusqu'à ce que le token soit prêt ;
- le token résolu repart par webhook ou vers le module suivant.
Ce modèle couvre l'automatisation de formulaires, les flux de saisie de données et tout scénario où un CAPTCHA barre la route à l'automatisation, par exemple un formulaire de prise de rendez-vous ou une remontée de leads vers votre CRM.
Prérequis
Trois éléments suffisent avant de poser le premier module :
- un compte CaptchaAI et sa clé API (32 caractères, lisible dans le tableau de bord) ;
- un scénario Make vide, avec les droits d'ajouter des modules HTTP et Webhooks ;
- le sitekey reCAPTCHA v2 et l'URL de la page cible, que le webhook transmettra au scénario.
Étape 1 : créer le scénario
Dans Make, créez un scénario et enchaînez les modules décrits ci-dessous.
Module 1 — déclencheur webhook (Custom webhook)
Ce webhook reçoit les demandes de résolution. Donnez-lui la structure de données suivante :
{
"sitekey": "6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-",
"pageurl": "https://example.com/form",
"captcha_type": "recaptcha_v2"
}
Côté configuration :
- ajoutez un module Webhooks > Custom webhook ;
- cliquez sur Add pour créer un webhook ;
- copiez l'URL générée ;
- déclarez les champs
sitekey,pageurletcaptcha_type.
Module 2 — HTTP : soumettre la tâche à CaptchaAI
Ajoutez un module HTTP > Make a request en GET vers https://ocr.captchaai.com/in.php. Renseignez la Query String avec les paramètres suivants :
key— votre clé API CaptchaAI ;method—userrecaptcha;googlekey—{{1.sitekey}}, mappé depuis le webhook ;pageurl—{{1.pageurl}}, mappé depuis le webhook ;json—1.
Activez Parse response au format JSON. Une fois le module exécuté, la réponse porte l'identifiant de tâche :
{
"status": 1,
"request": "TASK_ID_12345"
}
Module 3 — Sleep
Ajoutez un module Tools > Sleep réglé sur 15 secondes. Ce délai laisse à CaptchaAI le temps de résoudre le CAPTCHA avant la première interrogation.
Module 4 — HTTP : interroger le résultat
Ajoutez un second module HTTP > Make a request, en GET vers https://ocr.captchaai.com/res.php, avec cette Query String :
key— votre clé API CaptchaAI ;action—get;id—{{2.data.request}}, l'ID de tâche renvoyé par le module 2 ;json—1.
Module 5 — Router : vérifier le résultat
Placez un Router après l'interrogation, avec deux routes. La première, CAPTCHA résolu, filtre sur {{4.data.status}} égal à 1 et enchaîne sur l'action suivante (réponse webhook, insertion en base, etc.). La seconde, pas encore prêt, filtre sur {{4.data.request}} égal à CAPCHA_NOT_READY et reboucle vers le module 3 (Sleep) pour former la boucle d'interrogation.
Étape 2 : piloter la boucle d'interrogation
Make gère les boucles via le module Repeater ou en reconnectant un module vers une étape antérieure :
- ajoutez un Repeater réglé sur 10 itérations (nombre maximal de tentatives) ;
- à l'intérieur, placez la séquence Sleep -> interrogation -> Router ;
- le Router sort de la boucle dès que
status = 1.
Avec le module Flow Control > Repeater, réglez les répétitions sur 10 et la valeur initiale sur {{2.data.request}} (l'ID de tâche). Chaque itération patiente 5 secondes, interroge CaptchaAI et vérifie si le résultat est disponible.
Étape 3 : exploiter le token résolu
Une fois le CAPTCHA résolu, le token se trouve dans {{4.data.request}}. Trois usages reviennent le plus souvent :
- Option A — renvoyer le token par une réponse webhook ;
- Option B — le poster directement sur le formulaire cible ;
- Option C — le journaliser en base pour le suivi.
Option A — renvoyer via une réponse webhook
Ajoutez un module Webhooks > Webhook response qui renvoie le token à l'appelant :
{
"token": "{{4.data.request}}",
"status": "solved"
}
Option B — soumettre à un formulaire
Ajoutez un module HTTP > Make a request en POST vers l'URL d'action du formulaire cible. Dans le corps, placez les données du formulaire, dont le champ g-recaptcha-response: {{4.data.request}}.
Option C — stocker en base
Ajoutez un module Google Sheets, Airtable ou Database pour journaliser la résolution à des fins de suivi.
Flux complet du scénario
[Webhook Trigger]
↓
[HTTP: Submit to CaptchaAI in.php]
↓
[Sleep: 15 seconds]
↓
[Repeater: 10 iterations]
↓ (each iteration)
[Sleep: 5 seconds]
[HTTP: Poll CaptchaAI res.php]
[Router]
Route 1 (solved) → [Use Token] → [Webhook Response]
Route 2 (not ready) → continue loop
Route 3 (error) → [Error Handler]
Dépannage
| Problème | Cause | Correctif |
|---|---|---|
| Le webhook ne se déclenche pas | URL non enregistrée | Vérifiez que l'URL du webhook est active dans Make |
ERROR_WRONG_USER_KEY |
Format de clé API invalide | Contrôlez que la clé API fait 32 caractères, sans espace superflu |
| La boucle d'interrogation n'aboutit jamais | Délai Sleep trop court ou mauvais ID de tâche | Vérifiez le mappage de l'ID de tâche ; portez le Sleep à 10 secondes |
| Le scénario expire | Limite d'exécution de Make (5 min sur l'offre gratuite) | Passez à une offre supérieure ou réduisez l'intervalle d'interrogation |
| Erreur d'analyse JSON | Réponse non interprétée en JSON | Activez « Parse response » sur le module HTTP ; ajoutez json=1 aux requêtes |
Gestion des erreurs
Chaque module HTTP mérite son gestionnaire d'erreurs. Faites un clic droit sur le module → Add error handler, puis choisissez Resume (ignorer et poursuivre) ou Rollback (interrompre le scénario).
Échec de soumission (module 2)
Traitez ERROR_ZERO_BALANCE en rechargeant le solde, et ERROR_WRONG_USER_KEY en corrigeant la clé API.
Échec d'interrogation (module 4)
Traitez ERROR_CAPTCHA_UNSOLVABLE en vérifiant le sitekey et l'URL de page, et relancez les erreurs réseau transitoires.
Dépassement du délai
Si le Repeater épuise ses itérations sans résultat, orientez le flux vers un gestionnaire qui journalise l'échec plutôt que de laisser le scénario planter.
Rester conforme au RGPD dans un scénario de saisie
Un scénario Make de saisie de données manipule souvent des informations personnelles : e-mails, numéros de dossier, coordonnées. Côté RGPD, appliquez la minimisation. Ne faites transiter par le webhook que les champs strictement nécessaires à la résolution : le sitekey et l'URL de page suffisent à CaptchaAI, aucune donnée personnelle n'a besoin d'y figurer.
Journalisez les résolutions (option C) sans y recopier de données sensibles, et hébergez vos exports chez un fournisseur adapté à vos obligations, par exemple une région européenne comme celle d'OVHcloud ou de Scaleway. La facturation CaptchaAI reste en dollars US, indépendamment de votre localisation.
FAQ
Quel plan CaptchaAI faut-il pour un scénario Make ?
L'offre d'entrée BASIC ($15/mois, 5 threads) suffit à un scénario Make classique : un thread traite un CAPTCHA à la fois, avec des résolutions illimitées sur le mois. Si votre webhook déclenche plusieurs résolutions en parallèle, montez en threads avec STANDARD ($30/mois, 15 threads) ou au-delà.
Le module HTTP peut-il aussi résoudre Cloudflare Turnstile ?
Oui. Dans le module de soumission, remplacez method par turnstile et passez le sitekey à la place de googlekey. Le reste du scénario — Sleep, interrogation, Router — ne bouge pas.
Que faire si la boucle d'interrogation n'aboutit jamais ?
Vérifiez d'abord le mappage de l'ID de tâche ({{2.data.request}}) dans le module d'interrogation, puis allongez le Sleep initial à 10 secondes. Si l'erreur ERROR_CAPTCHA_UNSOLVABLE persiste, contrôlez que le sitekey et l'URL de page correspondent bien à la page qui affiche le CAPTCHA.
Comment limiter les données personnelles dans un scénario de saisie ?
Ne transmettez au webhook que le sitekey et l'URL de page : CaptchaAI n'a besoin de rien d'autre pour résoudre le défi. Gardez les données métier dans les modules en aval et appliquez la minimisation RGPD à toute journalisation.
Articles connexes
- Résoudre le callback reCAPTCHA v2 via l'API
- Gérer reCAPTCHA v2 et Turnstile sur un même site
- Le mécanisme de callback reCAPTCHA v2
Prochaines étapes
Passez à la pratique : récupérez votre clé API CaptchaAI et montez votre premier scénario Make. Pour aller plus loin, ces guides complètent l'intégration :
- Zapier + CaptchaAI : résolution de CAPTCHA sans code
- n8n + CaptchaAI : gestion des CAPTCHA en workflow auto-hébergé
- Guide des webhooks d'URL de callback CaptchaAI