Esta página documenta todos los códigos de error que puede devolver la API CaptchaAI, organizados por endpoint. Úsala para diagnosticar solicitudes fallidas, implementar manejo de errores adecuado y evitar errores comunes.
La API CaptchaAI tiene dos endpoints:
in.php— envía una tarea CAPTCHA (los errores se producen en el momento del envío)res.php— sondea para obtener el resultado (los errores se producen al recuperar los resultados)
Cuando incluye json=1 en su solicitud, los errores regresan como JSON:
{"status": 0, "request": "ERROR_CODE_HERE"}
Sin json=1, los errores regresan como texto sin formato: ERROR_CODE_HERE
Reglas de manejo rápido de errores
Antes de la referencia completa, aquí están las tres reglas que manejan el 90% de los casos:
| Patrón de error | acción |
|---|---|
CAPCHA_NOT_READY |
Normal: vuelve a realizar la consulta en 5 segundos |
Cualquier problema con ERROR_ que comience con el parámetro /format |
Corrija su solicitud: no vuelva a intentar la misma solicitud |
Errores del servidor (ERROR_SERVER_ERROR, ERROR_INTERNAL_SERVER_ERROR) |
Reintentar después de 10 segundos con retroceso exponencial |
Errores de envío (in.php)
Estos errores ocurren cuando envía una nueva tarea CAPTCHA.
ERROR_WRONG_USER_KEY
Causa: El parámetro key tiene un formato incorrecto. Las claves API CaptchaAI tienen 32 caracteres.
Arreglo:
- Comprueba que tu clave tenga exactamente 32 caracteres.
- Verifique que no haya espacios adicionales ni saltos de línea.
- Copia la clave directamente desde captchaai.com/api.php.
Incorrecto:
{
"key": "abc123... "
}
Correcto:
{
"key": "abc12345678901234567890123456789a"
}
ERROR_KEY_DOES_NOT_EXIST
Causa: La clave API no coincide con ninguna cuenta del sistema.
Arreglo:
- Inicia sesión en captchaai.com y copia la clave desde tu panel.
- Asegúrese de estar utilizando la clave de cuenta correcta.
- Si creó la cuenta recientemente, espere unos minutos hasta que se active la clave.
ERROR_ZERO_BALANCE
Causa: Tu cuenta no tiene hilos disponibles para aceptar la tarea.
Arreglo:
- Espere a que se completen las tareas actualmente en ejecución (los subprocesos se liberarán).
- Actualice su plan para obtener más hilos simultáneos.
- Consulta el saldo de tu cuenta en captchaai.com/api.php.
Esto no siempre es un error de falta de fondos. También puede significar que todos tus hilos están actualmente ocupados. Si tiene un plan de un solo subproceso y se está ejecutando una tarea, los nuevos envíos devolverán este error hasta que se complete la primera tarea.
ERROR_PAGEURL
Causa: El parámetro pageurl falta o está vacío. Este parámetro es necesario para CAPTCHA basados en tokens (reCAPTCHA, Cloudflare Turnstile, GeeTest, etc.).
Solución: Agregue la URL completa de la página donde se carga el CAPTCHA, incluido el protocolo:
Incorrecto:
{
"pageurl": ""
}
Correcto:
{
"pageurl": "https://staging.example.com/qa-login"
}
ERROR_WRONG_GOOGLEKEY / ERROR_GOOGLEKEY
Causa: El parámetro googlekey (sitekey) está en blanco, tiene un formato incorrecto o falta.
Arreglo:
- Vuelva a extraer la clave del sitio del atributo
data-sitekeyde la página de destino o del parámetrokde la URL de anclaje reCAPTCHA. - Asegúrese de que el valor no esté vacío ni truncado.
Incorrecto:
{
"googlekey": ""
}
Correcto:
{
"googlekey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
}
ERROR_BAD_TOKEN_OR_PAGEURL
Causa: La combinación de googlekey (clave de sitio) y pageurl no es válida. La clave del sitio no está registrada para la URL de la página determinada.
Causas comunes:
- El widget reCAPTCHA se carga dentro de un iframe en un subdominio diferente. Está utilizando la URL de la página principal en lugar de la URL del iframe.
- La clave del sitio pertenece a una página o dominio diferente.
- La clave del sitio se extrajo de un entorno de desarrollo/staging.
Arreglo:
- Si el reCAPTCHA está en un iframe, use la URL
srcdel iframe comopageurl. - Verifique la clave del sitio desde la página de producción en vivo.
- Pruebe ambos valores cargando la URL del ancla reCAPTCHA manualmente:
https://www.google.com/recaptcha/api2/anchor?k=YOUR_SITEKEY
ERROR_TOO_BIG_CAPTCHA_FILESIZE
Causa: La imagen cargada excede el tamaño máximo permitido.
Solución: Comprime o cambia el tamaño de la imagen antes de enviarla. Utilice JPEG para fotografías y PNG para capturas de pantalla.
ERROR_ZERO_CAPTCHA_FILESIZE
Causa: El archivo de imagen es demasiado pequeño (menos de 100 bytes), lo que indica una carga vacía o dañada.
Solución: Verifique que esté enviando datos de imagen reales, no un archivo vacío o una cadena base64 rota.
ERROR_WRONG_FILE_EXTENSION
Causa: El archivo subido tiene una extensión no compatible. Compatible con: jpg, jpeg, png, gif.
Solución: Convierta la imagen a un formato compatible antes de cargarla.
ERROR_IMAGE_TYPE_NOT_SUPPORTED
Causa: El servidor no puede determinar el tipo de imagen a partir del contenido del archivo.
Solución: Convierta a un formato estándar (PNG o JPEG) y asegúrese de que el archivo no esté dañado.
ERROR_UPLOAD
Causa: El servidor no pudo leer el archivo cargado o la carga útil base64.
Arreglo:
- Para cargas de archivos: verifique la codificación de datos de su formulario de varias partes.
- Para base64: verifique que la cadena base64 esté completa y codificada correctamente.
- Pruebe con una imagen en buen estado para descartar daños en el archivo.
ERROR_BAD_PROXY
Causa: El proxy que proporcionaste es inaccesible o el sistema lo ha marcado como incorrecto.
Arreglo:
- Pruebe el proxy de forma independiente: ¿puede conectarse al sitio de destino?
- Pruebe con un proxy diferente.
- Verifique el formato:
login:password@IP:PORToIP:PORTpara servidores proxy autenticados por IP.
El uso de proxy debe estar habilitado en su cuenta. Póngase en contacto con el soporte técnico de CaptchaAI si aún no lo ha hecho.
ERROR_BAD_PARAMETERS
Causa: Faltan parámetros obligatorios o tienen tipos de datos incorrectos.
Solución: Consulte la documentación de la API para el tipo de CAPTCHA específico que está resolviendo y verifique que todos los parámetros requeridos estén presentes:
| Tipo CAPTCHA | Parámetros requeridos |
|---|---|
| reCAPTCHA v2/v3 | key, method=userrecaptcha, googlekey, pageurl |
| Cloudflare Turnstile | key, method=turnstile, sitekey, pageurl |
| Cloudflare Challenge | key, method=cloudflare_challenge, pageurl, proxy, proxytype |
| GeeTest v3 | key, method=geetest, gt, challenge, pageurl |
| BLS | key, method=bls, body, textinstructions |
| Normal/image | key, method=post, file o body |
IP_BANNED
Causa: Su IP ha sido prohibida temporalmente después de repetidos intentos fallidos de autenticación.
Solución: Espere aproximadamente 5 minutos y luego vuelva a intentarlo con las credenciales correctas. No siga enviando solicitudes con claves API incorrectas.
ERROR_SERVER_ERROR / ERROR_INTERNAL_SERVER_ERROR
Causa: Se produjo un error transitorio en el lado del servidor.
Solución: Espere 10 segundos y vuelva a intentarlo. Utilice un retroceso exponencial para fallas repetidas:
import time
retry_delay = 10
for attempt in range(5):
response = submit_captcha()
if response.get("status") == 1:
break
time.sleep(retry_delay)
retry_delay *= 2 # 10s, 20s, 40s, 80s, 160s
Errores de sondeo (res.php)
Estos errores ocurren cuando verifica el estado de una tarea enviada.
CAPCHA_NOT_READY
Esto no es un error. Significa que la solución aún está en progreso.
Acción: Espere 5 segundos y vuelva a realizar la consulta.
if result.get("request") == "CAPCHA_NOT_READY":
time.sleep(5)
continue # poll again
Guía de tiempos: | Tipo CAPTCHA | Primera consulta después | Intervalo de consulta | |---|---|---| | reCAPTCHA v2/v3/Enterprise | 15 segundos | 5 segundos | | Cloudflare Turnstile | 15 segundos | 5 segundos | | Cloudflare Challenge | 20 segundos | 5 segundos | | GeeTest v3 | 15 segundos | 5 segundos | | CAPTCHA normal/image | 5 segundos | 5 segundos |
ERROR_CAPTCHA_UNSOLVABLE
Causa: CaptchaAI no pudo resolver el CAPTCHA después de varios intentos.
Razones comunes:
- El tipo CAPTCHA no es compatible o los parámetros son incorrectos.
- El desafío está corrupto o caducado.
- Para soluciones basadas en proxy: el proxy es demasiado lento o inaccesible.
- El sitio ha cambiado su implementación CAPTCHA.
Arreglo:
- Verifique que sus parámetros (clave del sitio, URL de página, método) sean correctos.
- Vuelva a enviarlo con una nueva solicitud.
- Si utiliza un proxy, pruebe con uno diferente.
- Si el error persiste, es posible que el sitio haya cambiado; vuelva a extraer la clave del sitio y la URL de la página.
No vuelva a intentar el mismo ID de tarea. Envíe una nueva tarea con parámetros nuevos.
ERROR_WRONG_ID_FORMAT
Causa: El ID del captcha debe ser únicamente numérico.
Solución: Verifique que está enviando la identificación exacta devuelta por in.php (solo dígitos, sin caracteres adicionales).
ERROR_WRONG_CAPTCHA_ID
Causa: El ID de la tarea no existe o ha caducado.
Arreglo:
- Verifique que esté votando con la identificación devuelta por su envío.
- Los ID de las tareas pueden caducar después de períodos prolongados; vuelva a enviarlos si la tarea es muy antigua.
ERROR_EMPTY_ACTION
Causa: El parámetro action falta o está vacío en su solicitud de sondeo.
Solución: Agregue action=get a su solicitud res.php:
params = {
"key": api_key,
"action": "get", # Required
"id": captcha_id,
"json": 1,
}
ERROR_PROXY_CONNECTION_FAILED
Causa: El solucionador no pudo conectarse al sitio de destino a través de su proxy.
Arreglo:
- Es posible que el proxy esté inactivo temporalmente; pruebe con uno diferente.
- Es posible que el sitio de destino esté bloqueando la IP del proxy.
- Verifique que el proxy realmente pueda llegar al sitio de destino.
ERROR_WRONG_USER_KEY / ERROR_KEY_DOES_NOT_EXIST
Estos también pueden aparecer en res.php: la misma causa y solución que los errores de envío anteriores.
Plantilla de manejo de errores
Copie este patrón para un manejo sólido de errores en cualquier idioma:
pitón
import time
import requests
API_KEY = "YOUR_API_KEY"
SUBMIT_URL = "https://ocr.captchaai.com/in.php"
RESULT_URL = "https://ocr.captchaai.com/res.php"
# Errors that should not be retried (fix the request first)
NO_RETRY_ERRORS = {
"ERROR_WRONG_USER_KEY",
"ERROR_KEY_DOES_NOT_EXIST",
"ERROR_PAGEURL",
"ERROR_WRONG_GOOGLEKEY",
"ERROR_GOOGLEKEY",
"ERROR_BAD_TOKEN_OR_PAGEURL",
"ERROR_BAD_PARAMETERS",
"ERROR_WRONG_FILE_EXTENSION",
"ERROR_IMAGE_TYPE_NOT_SUPPORTED",
"IP_BANNED",
}
# Errors that can be retried
RETRY_ERRORS = {
"ERROR_ZERO_BALANCE",
"ERROR_SERVER_ERROR",
"ERROR_INTERNAL_SERVER_ERROR",
"ERROR_UPLOAD",
}
def solve_captcha(submit_data, max_retries=3, max_polls=60):
"""Submit and solve a CAPTCHA with full error handling."""
# Submit with retry logic
for attempt in range(max_retries):
resp = requests.post(SUBMIT_URL, data={**submit_data, "json": 1}, timeout=30)
resp.raise_for_status()
data = resp.json()
if data.get("status") == 1:
captcha_id = data["request"]
break
error = data.get("request", "UNKNOWN")
if error in NO_RETRY_ERRORS:
raise ValueError(f"Fatal error (fix request): {error}")
if error in RETRY_ERRORS and attempt < max_retries - 1:
time.sleep(10 * (2 ** attempt))
continue
raise RuntimeError(f"Submit failed: {error}")
else:
raise RuntimeError("Submit failed after max retries")
# Poll for result
time.sleep(15)
for _ in range(max_polls):
resp = requests.get(
RESULT_URL,
params={"key": API_KEY, "action": "get", "id": captcha_id, "json": 1},
timeout=30,
)
data = resp.json()
if data.get("request") == "CAPCHA_NOT_READY":
time.sleep(5)
continue
if data.get("status") == 1:
return data["request"]
error = data.get("request", "UNKNOWN")
if error == "ERROR_CAPTCHA_UNSOLVABLE":
raise RuntimeError("CAPTCHA unsolvable — resubmit with fresh parameters")
raise RuntimeError(f"Poll error: {error}")
raise TimeoutError("Solve timed out")
Nodo.js
const NO_RETRY_ERRORS = new Set([
"ERROR_WRONG_USER_KEY",
"ERROR_KEY_DOES_NOT_EXIST",
"ERROR_PAGEURL",
"ERROR_WRONG_GOOGLEKEY",
"ERROR_BAD_TOKEN_OR_PAGEURL",
"ERROR_BAD_PARAMETERS",
"IP_BANNED",
]);
async function solveCaptcha(submitData, maxRetries = 3, maxPolls = 60) {
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
// Submit with retry
let captchaId;
for (let attempt = 0; attempt < maxRetries; attempt++) {
const resp = await fetch("https://ocr.captchaai.com/in.php", {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: new URLSearchParams({ ...submitData, json: "1" }),
});
const data = await resp.json();
if (data.status === 1) {
captchaId = data.request;
break;
}
if (NO_RETRY_ERRORS.has(data.request)) {
throw new Error(`Fatal error: ${data.request}`);
}
if (attempt < maxRetries - 1) {
await sleep(10_000 * 2 ** attempt);
continue;
}
throw new Error(`Submit failed: ${data.request}`);
}
// Poll for result
await sleep(15_000);
for (let i = 0; i < maxPolls; i++) {
const resp = await fetch(
`https://ocr.captchaai.com/res.php?${new URLSearchParams({
key: submitData.key,
action: "get",
id: captchaId,
json: "1",
})}`
);
const data = await resp.json();
if (data.request === "CAPCHA_NOT_READY") {
await sleep(5_000);
continue;
}
if (data.status === 1) return data.request;
throw new Error(`Poll error: ${data.request}`);
}
throw new Error("Solve timed out");
}
Preguntas frecuentes
¿CAPCHA_NOT_READY es un error?
No. Significa que la solución aún está en progreso. Espere 5 segundos y vuelva a sondear. Esto es normal para todos los tipos de CAPTCHA.
¿Qué debo hacer cuando obtenga ERROR_CAPTCHA_UNSOLVABLE?
Envíe una nueva tarea con parámetros nuevos. No vuelva a intentar el mismo ID de tarea. Si el error ocurre repetidamente, verifique que la clave del sitio y la URL de la página sean correctas y que el tipo CAPTCHA sea compatible.
¿Cómo sé si un error se puede volver a intentar?
Los errores del parámetro /format (ERROR_WRONG_USER_KEY, ERROR_BAD_TOKEN_OR_PAGEURL, ERROR_PAGEURL, etc.) no se pueden volver a intentar; primero corrija la solicitud. Los errores del servidor (ERROR_SERVER_ERROR, ERROR_INTERNAL_SERVER_ERROR) se pueden volver a intentar con un retroceso exponencial. ERROR_ZERO_BALANCE se puede volver a intentar después de esperar a que se liberen los subprocesos.
¿Por qué obtengo ERROR_BAD_PROXY por Cloudflare Challenge?
Cloudflare Challenge requiere un proxy que funcione. El proxy debe poder llegar al sitio de destino. Pruébelo de forma independiente y luego pruebe con un proxy diferente si falla. Asegúrese también de que el uso de proxy esté habilitado en su cuenta CaptchaAI.
¿Dónde encuentro mi clave API?
Inicia sesión en captchaai.com y ve a captchaai.com/api.php. Tu clave API de 32 caracteres aparece en el panel.
Guías relacionadas
- CaptchaAI Inicio rápido— haz que tu primera solución funcione
- Cómo resolver reCAPTCHA v2 usando API— tutorial completo de reCAPTCHA v2
- Cómo resolver Cloudflare Challenge usando API— solución de Cloudflare que requiere proxy
- Errores comunes de resolución de reCAPTCHA v2— Solución de problemas específicos de reCAPTCHA