Sim, dá para resolver um CAPTCHA dentro de um cenário do Make (antigo Integromat) sem escrever uma linha de código de backend. O caminho é usar o módulo HTTP para conversar com a API da CaptchaAI: você envia o desafio, consulta o resultado e injeta o token de volta no fluxo — tudo no editor visual.
Este guia monta esse cenário do zero para reCAPTCHA v2 e cobre o gatilho de webhook, o envio à CaptchaAI, o laço de polling e o uso do token nas ações seguintes. O mesmo padrão vale para automação de formulários, entrada de dados e qualquer fluxo que trave em um desafio de verificação.
O que o cenário faz
Pense em uma equipe de operações que usa o Make para validar formulários de cadastro em um ambiente de staging. Sempre que a página exibe um reCAPTCHA v2, o cenário precisa resolvê-lo antes de seguir. Na prática, ele recebe um gatilho de webhook com a pageurl e a sitekey do reCAPTCHA, envia o desafio à CaptchaAI para resolução, faz o polling até o token ficar pronto e, por fim, devolve o token pelo webhook ou o passa ao próximo módulo.
Como você vai lidar com dados de formulário, vale considerar as obrigações da LGPD ao coletar e registrar informações — mantenha os testes em endpoints próprios e com dados fictícios.
Passo 1: monte o cenário no Make
No Make, crie um novo cenário e adicione os módulos a seguir na ordem em que aparecem.
Módulo 1: gatilho de webhook personalizado
Comece com um webhook personalizado que recebe as requisições de resolução de CAPTCHA. Adicione um módulo Webhooks > Webhook personalizado, clique em Adicionar para gerar o webhook, copie o URL exibido e defina a estrutura de dados com os campos sitekey, pageurl e captcha_type. O payload esperado é assim:
{
"sitekey": "6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-",
"pageurl": "https://example.com/form",
"captcha_type": "recaptcha_v2"
}
Módulo 2: requisição HTTP para enviar a tarefa à CaptchaAI
Adicione um módulo HTTP > Faça uma requisição e configure a chamada de envio:
- URL:
https://ocr.captchaai.com/in.php - Método: GET
- Analisar resposta: sim, defina como JSON
Na query string, informe os parâmetros abaixo:
| Chave | Valor |
|---|---|
key |
Sua chave de API da CaptchaAI |
method |
userrecaptcha |
googlekey |
{{1.sitekey}} (mapeado do webhook) |
pageurl |
{{1.pageurl}} (mapeado do webhook) |
json |
1 |
Quando o módulo roda, a resposta traz o ID da tarefa que você vai consultar em seguida:
{
"status": 1,
"request": "TASK_ID_12345"
}
Módulo 3: módulo Sleep
Adicione um módulo Ferramentas > Sleep definido para 15 segundos. Esse intervalo dá tempo à CaptchaAI de resolver o reCAPTCHA antes de você começar o polling — consultar cedo demais só desperdiça operações do Make.
Módulo 4: requisição HTTP para consultar o resultado
Adicione outro módulo HTTP > Faça uma requisição, desta vez apontando para o endpoint de resultado:
- URL:
https://ocr.captchaai.com/res.php - Método: GET
- Analisar resposta: sim, defina como JSON
Os parâmetros da query string são:
| Chave | Valor |
|---|---|
key |
Sua chave de API da CaptchaAI |
action |
get |
id |
{{2.data.request}} (ID da tarefa do Módulo 2) |
json |
1 |
Módulo 5: Router para checar o resultado
Adicione um Router logo após o módulo de polling. Ele lê a resposta do res.php e decide o caminho conforme o estado da tarefa:
- CAPTCHA resolvido — quando
{{4.data.status}}é igual a1, siga para a próxima ação (resposta do webhook, gravação em banco e por aí vai). - Ainda não está pronto — quando
{{4.data.request}}é igual aCAPCHA_NOT_READY, reconecte ao Módulo 3 (Sleep) para formar o laço de polling.
Passo 2: monte o laço de polling
O token quase nunca fica pronto na primeira consulta, então o cenário precisa repetir a sequência Sleep → consulta → Router até o status chegar a 1. Você consegue isso com o módulo Repeater ou reconectando os módulos a etapas anteriores.
Usando o módulo Controle de fluxo > Repeater, defina 10 repetições como teto de tentativas e passe {{2.data.request}} (o ID da tarefa) como valor inicial. Dentro do Repeater, coloque a sequência Sleep → consulta → Router: cada iteração aguarda 5 segundos, consulta a CaptchaAI e verifica se o resultado já saiu. O Router encerra o laço assim que o token aparece e evita que o cenário rode indefinidamente.
Passo 3: use o token resolvido
Assim que o CAPTCHA é resolvido, o token fica disponível em {{4.data.request}}. A partir daí, você tem três destinos comuns.
Opção A: devolver pela resposta do webhook
Adicione um módulo Webhooks > Resposta do webhook e retorne o token a quem disparou o cenário:
{
"token": "{{4.data.request}}",
"status": "solved"
}
Opção B: enviar o token a um formulário
Adicione um módulo HTTP > Faça uma requisição que envia o token ao endpoint do formulário de destino. Configure o método como POST, aponte para o URL de ação do formulário e inclua no corpo os dados do formulário com o campo g-recaptcha-response: {{4.data.request}}.
Opção C: gravar em um banco de dados
Adicione um módulo Google Sheets, Airtable ou Banco de dados para registrar a resolução e acompanhar o histórico de tarefas.
Fluxo completo do cenário
Antes de tratar os erros, vale ver o cenário inteiro de uma vez. O diagrama abaixo resume a ordem dos módulos e mostra onde o laço de polling se fecha:
[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]
Tratamento de erros
Configure manipuladores de erros nos módulos HTTP para que uma falha isolada não derrube o cenário inteiro.
No Módulo 2 (envio), trate ERROR_ZERO_BALANCE recarregando o saldo e ERROR_WRONG_USER_KEY corrigindo a chave de API. No Módulo 4 (polling), trate ERROR_CAPTCHA_UNSOLVABLE conferindo a sitekey e a pageurl, e resolva erros de rede com nova tentativa. E, caso o Repeater esgote todas as iterações sem sucesso, encaminhe o caso para um manipulador que registre a falha em vez de deixá-la passar silenciosa.
Para adicionar um manipulador no Make, clique com o botão direito no módulo -> Adicionar manipulador de erros -> escolha Resume (pular e continuar) ou Rollback (abortar o cenário).
Solução de problemas
Quando algo falha, a causa costuma estar no mapeamento de dados ou nos limites do plano do Make:
| Problema | Causa | Correção |
|---|---|---|
| Webhook não dispara | URL não cadastrado | Confira se o URL do webhook está ativo no Make |
ERROR_WRONG_USER_KEY |
Formato de chave de API inválido | Verifique se a chave tem 32 caracteres, sem espaços extras |
| Polling nunca resolve | Sleep curto demais ou ID de tarefa errado | Confira o mapeamento do ID da tarefa; aumente o Sleep para 10 segundos |
| Tempo limite do cenário | Limite de execução do Make (5 min no plano gratuito) | Suba de plano ou reduza o intervalo de polling |
| Erro de parse do JSON | Resposta não interpretada como JSON | Ative "Analisar resposta" no módulo HTTP e defina json=1 nas requisições |
Perguntas frequentes
Reunimos abaixo as dúvidas que mais aparecem ao integrar a CaptchaAI a um cenário do Make.
Qual plano da CaptchaAI preciso para o volume do meu cenário?
Depende de quantos desafios você resolve ao mesmo tempo, não do total por dia. A CaptchaAI cobra por thread simultânea, com resoluções ilimitadas dentro do plano. O BASIC (US$ 15/mês, 5 threads) atende cenários pequenos; se o Make disparar muitos webhooks em paralelo, suba para STANDARD (US$ 30/mês, 15 threads) ou ADVANCE (US$ 90/mês, 50 threads).
Por que preciso de um módulo Sleep antes do polling?
Porque o token não fica pronto na hora. O reCAPTCHA v2 costuma levar alguns segundos para ser resolvido; consultar o res.php cedo demais só devolve CAPCHA_NOT_READY e gasta operações do Make à toa. Um Sleep inicial de 15 segundos, com consultas a cada 5 segundos, equilibra velocidade e custo.
Posso resolver Cloudflare Turnstile no mesmo cenário?
Sim. Troque o parâmetro method para turnstile e envie a sitekey no lugar de googlekey na requisição. O restante do fluxo — polling, Router e uso do token — permanece igual.
Existe um app oficial da CaptchaAI no Make?
Ainda não. Use o módulo HTTP com chamadas diretas à API, como neste guia. Na prática, isso dá controle total sobre parâmetros, cabeçalhos e tratamento de erros — algo que um módulo pronto costuma esconder.
Como evito que o cenário fique preso em um laço infinito?
Limite as iterações no Repeater (por exemplo, 10) e crie uma rota de saída no Router para quando o polling estourar o limite sem resolver. Encaminhe esse caso a um manipulador de erros que registre a falha, em vez de repetir a consulta indefinidamente.
Artigos relacionados
- Como resolver o callback do reCAPTCHA v2 pela API
- reCAPTCHA v2 e Turnstile no mesmo site
- Como funciona o mecanismo de callback do reCAPTCHA v2
Próximas etapas
Comece a automatizar a resolução de CAPTCHA no Make — obtenha sua chave de API da CaptchaAI e construa seu primeiro cenário.
Guias relacionados: