Se a CaptchaAI devolve status: 1 com um token e o site rejeita a submissão mesmo assim, o motivo mais comum é um parâmetro esquecido: enterprise=1. É o erro Enterprise mais frequente do nosso suporte — e o mais rápido de corrigir.
O reCAPTCHA v2 Enterprise falha pelos mesmos motivos do v2 padrão — sitekey errada, pageurl inválido, token expirado — mas soma problemas exclusivos da versão corporativa. Sem certeza se é Standard ou Enterprise? Veja primeiro Como identificar a implementação empresarial do reCAPTCHA.
Diagnóstico rápido antes de mexer no código
Antes de revisar o fluxo de resolução, confirme três pontos, nessa ordem:
- O script carregado na página é
enterprise.jsouapi.js? - Sua requisição para a CaptchaAI inclui
enterprise=1? - A div do reCAPTCHA tem um atributo
data-s?
Se a resposta for "não sei", as seções abaixo mostram onde procurar.
Cenário comum em QA no Brasil: times que rodam workers em sa-east-1 (São Paulo) reproduzem esse erro em staging — login com reCAPTCHA Enterprise, a CaptchaAI devolve status: 1 com um token, e o backend recusa a submissão mesmo assim. Antes de suspeitar de proxy ou rede, confira enterprise=1: na prática, é a causa mais comum. E como o pageurl e o payload podem carregar dados sob a LGPD quando a página coleta informação pessoal, evite gravar o token completo em texto plano nos logs.
Erros específicos do Enterprise
Você enviou parâmetros do Standard para um widget Enterprise
- Sintoma: a API devolve um token, mas o site rejeita a submissão.
- Causa: a tarefa foi enviada sem
enterprise=1— resolvida como Standard, rejeitada pelo backend Enterprise. - Correção: adicione
enterprise=1à requisição, como no exemplo abaixo.
import requests
response = requests.get("https://ocr.captchaai.com/in.php", params={
"key": "YOUR_API_KEY",
"method": "userrecaptcha",
"googlekey": "6LcR_RsTAAAAAFJR-JhNbC6CC42wKCbR9Hq_kVCd",
"pageurl": "https://staging.example.com/qa-login",
"enterprise": 1,
"json": 1
})
data = response.json()
task_id = data["request"]
const params = new URLSearchParams({
key: "YOUR_API_KEY",
method: "userrecaptcha",
googlekey: "6LcR_RsTAAAAAFJR-JhNbC6CC42wKCbR9Hq_kVCd",
pageurl: "https://staging.example.com/qa-login",
enterprise: 1,
json: 1,
});
const res = await fetch(`https://ocr.captchaai.com/in.php?${params}`);
const data = await res.json();
const taskId = data.request;
Faltou o parâmetro data-s
- Sintoma:
ERROR_BAD_PARAMETERSou o token é rejeitado pelo site. - Causa: algumas implementações Enterprise incluem
data-sna div do reCAPTCHA — um token de sessão adicional. Se estiver presente, a requisição precisa incluí-lo. - Correção: verifique a página e inclua
data-sse encontrar:
# Look for: <div class="g-recaptcha" data-sitekey="..." data-s="..."></div>
response = requests.get("https://ocr.captchaai.com/in.php", params={
"key": "YOUR_API_KEY",
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": page_url,
"enterprise": 1,
"data-s": data_s_value, # Include if present on the page
"json": 1
})
Identificação errada do script
- Sintoma: o token funciona de forma inconsistente ou é sempre rejeitado.
- Causa: o widget foi identificado como Standard quando na verdade é Enterprise (ou o contrário).
- Correção: confira a origem do script no HTML da página:
// Enterprise uses enterprise.js
// <script src="https://www.google.com/recaptcha/enterprise.js?render=SITEKEY"></script>
// Standard uses api.js
// <script src="https://www.google.com/recaptcha/api.js"></script>
// Also check the JS object:
// Enterprise: grecaptcha.enterprise.render(...)
// Standard: grecaptcha.render(...)
Em que o reCAPTCHA v2 Enterprise se diferencia do Standard
Depois de corrigir o erro, vale entender a causa raiz: Enterprise e Standard usam script, objeto JS e endpoint de verificação diferentes.
| Recurso | Standard v2 | Enterprise v2 |
|---|---|---|
| URL do script | google.com/recaptcha/api.js |
google.com/recaptcha/enterprise.js |
| Objeto JS | grecaptcha |
grecaptcha.enterprise |
| Endpoint de verificação | google.com/recaptcha/api/siteverify |
recaptchaenterprise.googleapis.com |
| Parâmetro na CaptchaAI | method=userrecaptcha |
method=userrecaptcha + enterprise=1 |
Parâmetro data-s |
Nunca usado | Às vezes presente (token adicional) |
Erros gerais, compartilhados com o v2 padrão
Nem todo erro é exclusivo do Enterprise — a tabela abaixo cobre os códigos que também aparecem ao resolver reCAPTCHA v2 Standard.
| Código de erro | Causa | Correção |
|---|---|---|
ERROR_WRONG_USER_KEY |
Formato de chave de API inválido | Verifique em captchaai.com/api.php |
ERROR_KEY_DOES_NOT_EXIST |
Chave de API não encontrada | Verifique espaços extras ou caracteres faltando |
ERROR_ZERO_BALANCE |
Saldo zerado | Faça uma recarga na conta |
ERROR_PAGEURL |
Faltando pageurl |
Adicione a URL completa da página |
ERROR_GOOGLEKEY |
Sitekey malformada | Extraia novamente a partir de data-sitekey |
ERROR_BAD_TOKEN_OR_PAGEURL |
Sitekey e URL não conferem | Verifique o contexto do iframe |
CAPCHA_NOT_READY |
Ainda em resolução | Aguarde 5 s e consulte novamente |
ERROR_CAPTCHA_UNSOLVABLE |
Não foi possível resolver | Envie uma nova tarefa |
Fluxo completo de resolução com tratamento de erros
Depois de resolver o erro pontual, vale substituir chamadas soltas por uma função única que envia, consulta e trata cada código de erro — é o que os dois exemplos abaixo fazem, em Python e em JavaScript.
import requests
import time
def solve_recaptcha_v2_enterprise(api_key, sitekey, page_url, data_s=None):
params = {
"key": api_key,
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": page_url,
"enterprise": 1,
"json": 1
}
if data_s:
params["data-s"] = data_s
response = requests.get("https://ocr.captchaai.com/in.php", params=params)
data = response.json()
if data.get("status") != 1:
raise RuntimeError(f"Submit failed: {data.get('request')}")
task_id = data["request"]
for _ in range(40):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": api_key, "action": "get", "id": task_id, "json": 1
}).json()
if result.get("status") == 1:
return result["request"]
if result.get("request") == "CAPCHA_NOT_READY":
continue
raise RuntimeError(f"Solve failed: {result.get('request')}")
raise TimeoutError("Solve timed out after 200 seconds")
token = solve_recaptcha_v2_enterprise("YOUR_API_KEY", "SITEKEY", "https://staging.example.com/qa-login")
async function solveRecaptchaV2Enterprise(apiKey, sitekey, pageUrl, dataS) {
const params = new URLSearchParams({
key: apiKey, method: "userrecaptcha", googlekey: sitekey,
pageurl: pageUrl, enterprise: 1, json: 1,
});
if (dataS) params.set("data-s", dataS);
const submitRes = await fetch(`https://ocr.captchaai.com/in.php?${params}`);
const submitData = await submitRes.json();
if (submitData.status !== 1) throw new Error(`Submit failed: ${submitData.request}`);
const taskId = submitData.request;
for (let i = 0; i < 40; i++) {
await new Promise(r => setTimeout(r, 5000));
const res = await fetch(`https://ocr.captchaai.com/res.php?${new URLSearchParams({
key: apiKey, action: "get", id: taskId, json: 1,
})}`);
const data = await res.json();
if (data.status === 1) return data.request;
if (data.request === "CAPCHA_NOT_READY") continue;
throw new Error(`Solve failed: ${data.request}`);
}
throw new Error("Timed out after 200s");
}
Perguntas frequentes
Como sei se um site usa reCAPTCHA Enterprise ou Standard?
Olhe a tag de script no HTML: o Enterprise carrega recaptcha/enterprise.js, o Standard carrega recaptcha/api.js. O objeto JavaScript também muda — grecaptcha.enterprise no Enterprise, grecaptcha no Standard.
Resolver Enterprise custa mais na CaptchaAI do que Standard?
Não. Os planos são por thread simultânea, com resolução ilimitada por thread e sem sobretaxa por tipo de CAPTCHA.
Meu token com enterprise=1 ainda é rejeitado. O que verificar?
Três coisas: (1) a sitekey corresponde à página; (2) há data-s na página, mas não na requisição; (3) o token expirou antes do envio — vale cerca de 2 minutos.
Preciso reescrever meu pipeline de automação (Selenium, Puppeteer) para Enterprise?
Não. A mudança fica só na chamada à API — adicione enterprise=1 e, se aplicável, data-s. O resto do fluxo permanece igual.
Corrija seu fluxo Enterprise
- Confirme o tipo de implementação — procure
enterprise.jsna tag de script - Adicione
enterprise=1à sua requisição para a CaptchaAI - Verifique o
data-s— inclua-o se a página tiver esse atributo - Envie o token imediatamente — tokens Enterprise também expiram em cerca de 2 minutos
Obtenha sua chave de API em captchaai.com/api.php.
Guias relacionados
- Como identificar a implementação empresarial do reCAPTCHA
- Como resolver reCAPTCHA v2 usando a API
- Standard vs Enterprise: as diferenças no reCAPTCHA v2
- Referência de códigos de erro da CaptchaAI