# reCAPTCHA v3

> Obtén tokens de reCAPTCHA v3 (incluida la versión Enterprise) con YesCaptcha: cómo rellenar pageAction, los tipos con puntuación fija de 0.7 y 0.9, tipos de tarea y precios, parámetros, ejemplos y resultado.

Source: https://docs.yescaptcha.com/es/tasks/recaptcha-v3/ · Last verified: 2026-10-15

> This page was machine-translated from the Chinese version. If anything differs, the Chinese version prevails: https://docs.yescaptcha.com/zh/tasks/recaptcha-v3/

reCAPTCHA v3 no tiene casilla de verificación ni imágenes: la página puntúa a los visitantes en segundo plano. YesCaptcha devuelve un token (`gRecaptchaResponse`) que envías al sitio de destino. `RecaptchaV3TaskProxyless` cuesta 20 puntos (≈ $3.00 / 1k) por tarea y es asíncrono: primero `createTask` y después `getTaskResult` cada 5 segundos. Si la tarea falla o agota el tiempo, los puntos se reembolsan automáticamente.

- POST `https://api.yescaptcha.com/createTask` (Endpoint global)
- POST `https://cn.yescaptcha.com/createTask` (Endpoint China)

El cuerpo de la solicitud es JSON y se autentica con `clientKey`. Consulta el resultado en el mismo endpoint en el que creaste la tarea.

## Cuándo usarlo

-   El código fuente de la página contiene `grecaptcha.execute(...)` o carga `recaptcha/api.js?render=SITE_KEY`: reCAPTCHA v3 estándar.
-   Llama a `grecaptcha.enterprise.execute(...)` o carga `recaptcha/enterprise.js`: reCAPTCHA v3 Enterprise. Usa `RecaptchaV3EnterpriseTask` o `RecaptchaV3EnterpriseTaskM1`.

Para saber cómo distinguirlos, consulta [Identificar el tipo de captcha](https://docs.yescaptcha.com/es/guides/identify-captcha.md).

## Tipos de tarea y precios

| Tipo de tarea | Precio | Modo | Notas |
| --- | --- | --- | --- |
| `RecaptchaV3TaskProxyless` | $3.00 / 1k; 20 puntos/tarea · ¥20 / 1k | Asíncrono |  |
| `RecaptchaV3TaskProxylessM1` | $3.75 / 1k; 25 puntos/tarea · ¥25 / 1k | Asíncrono |  |
| `RecaptchaV3TaskProxylessM1S7` | $4.50 / 1k; 30 puntos/tarea · ¥30 / 1k | Asíncrono | Solicita una puntuación de 0.7; no necesita parámetros adicionales |
| `RecaptchaV3TaskProxylessM1S9` | $5.25 / 1k; 35 puntos/tarea · ¥35 / 1k | Asíncrono | Solicita una puntuación de 0.9; no necesita parámetros adicionales |
| `RecaptchaV3EnterpriseTask` | $3.00 / 1k; 20 puntos/tarea · ¥20 / 1k | Asíncrono |  |
| `RecaptchaV3EnterpriseTaskM1` | $3.75 / 1k; 25 puntos/tarea · ¥25 / 1k | Asíncrono |  |

Los precios en dólares son estimaciones con US$1 ≈ ¥6.67; las tareas se cobran en puntos.

-   `RecaptchaV3TaskProxyless` y `RecaptchaV3TaskProxylessM1` tienen los mismos parámetros pero usan rutas distintas; puedes usar uno como respaldo del otro.
-   Si el sitio de destino exige una puntuación alta, usa `RecaptchaV3TaskProxylessM1S7` (0.7) o `RecaptchaV3TaskProxylessM1S9` (0.9); no necesitan parámetros adicionales.

## Parámetros de la solicitud

| Campo | Tipo | Obligatorio | Descripción |
| --- | --- | --- | --- |
| `type` | string | Sí | Tipo de tarea; consulta "Tipos de tarea y precios" en esta página |
| `websiteURL` | string | Sí | URL completa de la página que muestra el captcha. Usa el sitio donde ves el captcha, no el dominio del proveedor del captcha |
| `websiteKey` | string | Sí | La clave del sitio (sitekey), que se encuentra en el código fuente de la página o en las solicitudes de red; normalmente no cambia |
| `pageAction` | string | No | La acción de reCAPTCHA v3; debe coincidir con el valor que la página pasa a `grecaptcha.execute`, o el token podría ser rechazado |

`pageAction` debe coincidir con el `action` que la página pasa a `grecaptcha.execute(SITE_KEY, {action: '...'})`; si no, el sitio puede rechazar el token. Cómo encontrarlo: [Encontrar los parámetros de reCAPTCHA](https://docs.yescaptcha.com/es/guides/find-recaptcha-parameters.md).

## Ejemplo de solicitud

POST https://api.yescaptcha.com/createTask

```json
{
  "clientKey": "YOUR_CLIENT_KEY",
  "task": {
    "type": "RecaptchaV3TaskProxyless",
    "websiteURL": "https://example.com/login",
    "websiteKey": "SITE_KEY_OF_THE_PAGE",
    "pageAction": "login"
  }
}
```

**curl**

```bash
curl -s https://api.yescaptcha.com/createTask \
  -H 'Content-Type: application/json' \
  -d '{
  "clientKey": "YOUR_CLIENT_KEY",
  "task": {
    "type": "RecaptchaV3TaskProxyless",
    "websiteURL": "https://example.com/login",
    "websiteKey": "SITE_KEY_OF_THE_PAGE",
    "pageAction": "login"
  }
}'

# Returns {"errorId":0,"taskId":"..."}; then poll every 5 seconds:
curl -s https://api.yescaptcha.com/getTaskResult \
  -H 'Content-Type: application/json' \
  -d '{"clientKey": "YOUR_CLIENT_KEY", "taskId": "TASK_ID"}'
```

**Python**

solve.py

```python
import os
import time

import requests

API = "https://api.yescaptcha.com"
CLIENT_KEY = os.environ["YESCAPTCHA_CLIENT_KEY"]  # Read the clientKey from an environment variable

def call(method, payload):
    r = requests.post(f"{API}/{method}", json={"clientKey": CLIENT_KEY, **payload}, timeout=30)
    data = r.json()
    if data.get("errorId"):
        raise RuntimeError(f"{data.get('errorCode')}: {data.get('errorDescription')}")
    return data

def solve(task):
    task_id = call("createTask", {"task": task})["taskId"]
    for _ in range(36):  # Poll every 5 seconds, for up to about 3 minutes
        time.sleep(5)
        result = call("getTaskResult", {"taskId": task_id})
        if result.get("status") == "ready":
            return result["solution"]
    raise TimeoutError(task_id)

solution = solve({
    "type": "RecaptchaV3TaskProxyless",
    "websiteURL": "https://example.com/login",
    "websiteKey": "SITE_KEY_OF_THE_PAGE",
    "pageAction": "login",
})
print(solution["gRecaptchaResponse"])
```

**Node.js**

solve.mjs

```js
const API = 'https://api.yescaptcha.com';
const CLIENT_KEY = process.env.YESCAPTCHA_CLIENT_KEY; // Read the clientKey from an environment variable

async function call(method, payload) {
  const res = await fetch(`${API}/${method}`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ clientKey: CLIENT_KEY, ...payload }),
  });
  const data = await res.json();
  if (data.errorId) throw new Error(`${data.errorCode}: ${data.errorDescription}`);
  return data;
}

async function solve(task) {
  const { taskId } = await call('createTask', { task });
  for (let i = 0; i < 36; i++) { // Poll every 5 seconds, for up to about 3 minutes
    await new Promise((r) => setTimeout(r, 5000));
    const result = await call('getTaskResult', { taskId });
    if (result.status === 'ready') return result.solution;
  }
  throw new Error(`timeout: ${taskId}`);
}

const solution = await solve({
  type: "RecaptchaV3TaskProxyless",
  websiteURL: "https://example.com/login",
  websiteKey: "SITE_KEY_OF_THE_PAGE",
  pageAction: "login",
});
console.log(solution.gRecaptchaResponse);
```

Sustituye `websiteURL`, `websiteKey` y `pageAction` por los valores del sitio de destino.

## Resultado

```json
{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "gRecaptchaResponse": "03AGdBq25SxXT-pmSeBXjzScW-EiocHwwpwqtk1QXlJnGnU..."
  }
}
```

| Campo | Tipo | Descripción |
| --- | --- | --- |
| `gRecaptchaResponse` | string | El token que debes enviar al sitio de destino. De un solo uso, válido durante unos 120 segundos; úsalo en un plazo de 60 segundos |

Mientras la tarea se procesa, recibes `{"errorId": 0, "status": "processing"}`; vuelve a consultar 5 segundos después. Si hay un error, trátalo según `errorCode`, como se explica en [Códigos de error](https://docs.yescaptcha.com/es/api/errors.md). Para saber cómo enviar el token, consulta [Completar reCAPTCHA con un token](https://docs.yescaptcha.com/es/guides/submit-recaptcha-token.md).

## Preguntas frecuentes

### ¿Por qué el sitio rechaza algunos tokens?

En v3 es el sitio de destino quien decide según la puntuación, y puede cambiar su umbral en cualquier momento, así que no todos los tokens pasan. Comprueba que `pageAction` sea correcto; si el sitio exige una puntuación alta, prueba `M1S7` o `M1S9`; también puedes comparar con otros tipos similares.

### ¿Cómo relleno la versión Enterprise de v3?

Igual que la versión estándar: `websiteURL`, `websiteKey` y `pageAction`, con el tipo `RecaptchaV3EnterpriseTask` o `RecaptchaV3EnterpriseTaskM1`.

### ¿Cuánto tiempo es válido un token?

Es de un solo uso y es válido unos 120 segundos. Te recomendamos enviarlo en menos de 60 segundos.

## Guías relacionadas

-   [Identificar el tipo de captcha](https://docs.yescaptcha.com/es/guides/identify-captcha.md)
-   [Encontrar los parámetros de reCAPTCHA](https://docs.yescaptcha.com/es/guides/find-recaptcha-parameters.md) (incluye cómo encontrar `pageAction`)
-   [Completar reCAPTCHA con un token](https://docs.yescaptcha.com/es/guides/submit-recaptcha-token.md)
