Explainers

CaptchaAI JSON API vs Form API: qué formato usar

CaptchaAI acepta solicitudes tanto en formato form-encoded como en JSON. Ambos funcionan de forma idéntica: elige según tu lenguaje y preferencias.


Comparación lado a lado

Codificado en formulario (predeterminado)

import requests

resp = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": "SITE_KEY",
    "pageurl": "https://example.com",
    "json": 1,
})

Tipo de contenido: application/x-www-form-urlencoded

JSON

import requests

resp = requests.post("https://ocr.captchaai.com/in.php", json={
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": "SITE_KEY",
    "pageurl": "https://example.com",
    "json": 1,
})

Tipo de contenido: application/json


Diferencias clave

factores Codificado en formato JSON
Tipo de contenido application/x-www-form-urlencoded application/json
estructura de datos Pares clave-valor planos Objetos anidados posibles
datos binarios Utilice multiparte para cargar archivos Codificación Base64 en el campo del cuerpo.
Soporte de matriz Limitado Nativo
Palabra clave de Python data={} json={}
Nodo.js URLSearchParams JSON.stringify()
Legibilidad Simple para parámetros planos. Mejor para datos complejos
Compatibilidad Funciona en todas partes Funciona en todas partes

Formato de respuesta

Agregue json=1 para obtener respuestas JSON independientemente del formato de solicitud:

# Without json=1 — plain text response
resp = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": "SITE_KEY",
    "pageurl": "https://example.com",
})
# Response: "OK|12345678"

# With json=1 — JSON response
resp = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": "SITE_KEY",
    "pageurl": "https://example.com",
    "json": 1,
})
# Response: {"status": 1, "request": "12345678"}

Utilice siempre json=1 para facilitar el análisis.


Ejemplos de Python

Codificado en formato

import requests

# Submit
resp = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": "SITE_KEY",
    "pageurl": "https://example.com",
    "json": 1,
})
task_id = resp.json()["request"]

# Poll (always GET with query params)
resp = requests.get("https://ocr.captchaai.com/res.php", params={
    "key": "YOUR_API_KEY",
    "action": "get",
    "id": task_id,
    "json": 1,
})

Cuerpo JSON

import requests

# Submit with JSON
resp = requests.post("https://ocr.captchaai.com/in.php", json={
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": "SITE_KEY",
    "pageurl": "https://example.com",
    "json": 1,
})
task_id = resp.json()["request"]

# Poll (same as form-encoded — GET with params)
resp = requests.get("https://ocr.captchaai.com/res.php", params={
    "key": "YOUR_API_KEY",
    "action": "get",
    "id": task_id,
    "json": 1,
})

Ejemplos de Node.js

Codificado en formato

const axios = require('axios');
const qs = require('querystring');

// Submit
const resp = await axios.post(
  'https://ocr.captchaai.com/in.php',
  qs.stringify({
    key: 'YOUR_API_KEY',
    method: 'userrecaptcha',
    googlekey: 'SITE_KEY',
    pageurl: 'https://example.com',
    json: 1,
  })
);
const taskId = resp.data.request;

Cuerpo JSON

const axios = require('axios');

// Submit with JSON
const resp = await axios.post(
  'https://ocr.captchaai.com/in.php',
  {
    key: 'YOUR_API_KEY',
    method: 'userrecaptcha',
    googlekey: 'SITE_KEY',
    pageurl: 'https://example.com',
    json: 1,
  }
);
const taskId = resp.data.request;

Imagen CAPTCHA: Formulario vs JSON

Para los CAPTCHA de imágenes, el formato importa más:

Formulario con carga de archivo (varias partes)

# File upload — form-encoded with multipart
resp = requests.post("https://ocr.captchaai.com/in.php",
    data={
        "key": "YOUR_API_KEY",
        "method": "post",
        "json": 1,
    },
    files={
        "file": open("captcha.png", "rb"),
    },
)

JSON con Base64

import base64

# Base64 in JSON body
with open("captcha.png", "rb") as f:
    body = base64.b64encode(f.read()).decode()

resp = requests.post("https://ocr.captchaai.com/in.php", json={
    "key": "YOUR_API_KEY",
    "method": "base64",
    "body": body,
    "json": 1,
})

Formulario con Base64

# Base64 in form data
resp = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": "YOUR_API_KEY",
    "method": "base64",
    "body": body,
    "json": 1,
})

Cuándo usar cuál

Escenario Recomendado ¿Por qué?
Guiones simples Codificado en formato Más simple, menos dependencias
Integración de API REST JSON Coincide con los patrones típicos de API
Cargas de archivos Formulario de varias partes Carga binaria directa
Imágenes grandes en base64 Codificado en formato Mejor manejo de grandes cargas útiles
TypeScript/modern JS JSON Soporte de objetos nativos
Integración de sistemas heredados Codificado en formato Compatibilidad universal
Migrando desde 2Captcha Codificado en formato Mismo formato que 2Captcha

Errores comunes

error problema Solución
Usando json={} pero sin json: 1 en los datos La respuesta es texto plano. Incluir "json": 1 en los datos
Mezclando data= y json= en solicitudes de Python Solicitud mal formada Usa uno u otro
Olvidar el encabezado de tipo de contenido El servidor no puede analizar el cuerpo Deje que su biblioteca HTTP lo configure automáticamente
Envío del cuerpo JSON al punto final de la consulta La consulta utiliza parámetros GET Utilice siempre GET con parámetros de consulta para /res.php

Preguntas frecuentes

¿El formato afecta la velocidad o la precisión de resolución?

No. Ambos formatos producen resultados idénticos. El servidor los procesa de la misma manera.

¿Puedo mezclar formatos en un mismo proyecto?

Sí. Puede enviar con JSON y sondear con parámetros de consulta (que es como siempre funciona el sondeo). Cada solicitud es independiente.

¿Qué formato utiliza la API compatible con 2Captcha?

La API 2Captcha original utiliza formulario codificado. CaptchaAI agrega soporte JSON además. Si está migrando desde 2Captcha, quédese con el formulario codificado.


Guías relacionadas

  • Códigos de error de CaptchaAI: referencia completa

Elige tu formato preferido. Prueba la API CaptchaAI hoy.

Los comentarios están deshabilitados para este artículo.

Publicaciones relacionadas

Explainers Impacto de la resolución DNS en el rendimiento de la API CAPTCHA
Cómo afecta la resolución DNS al rendimiento de la API CAPTCHA: cuándo es un cuello de botella, cómo optimizarla con keep-alive, caché y pre-resolución.

Cómo afecta la resolución DNS al rendimiento de la API CAPTCHA: cuándo es un cuello de botella, cómo optimizar...

Apr 24, 2026