# reCAPTCHA v2 image recognition

> Recognize reCAPTCHA v2 image challenges with YesCaptcha (ReCaptchaV2Classification). Upload a 3x3, 4x4 or 1x1 image with the question ID and get the tiles to click synchronously; priced by image size; question ID table.

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

`ReCaptchaV2Classification` recognizes the image challenges of reCAPTCHA v2: send the image and the question ID, and get back which tiles to click; your code does the clicking in the browser. It **does not return a token**. It is synchronous (one `createTask` request returns the result); a 3x3 or 4x4 image costs 6 points (¥0.006), and a 1x1 tile costs less (see the table).

> **Tip:** If you’d rather not write clicking code, the [browser extension](https://docs.yescaptcha.com/en/extension/) does it automatically using this same API.

- POST `https://api.yescaptcha.com/createTask` (Global endpoint)
- POST `https://cn.yescaptcha.com/createTask` (China endpoint)

## Task types and pricing

| Task type | Price | Mode | Notes |
| --- | --- | --- | --- |
| `ReCaptchaV2Classification` | 6 points (¥0.006) | Synchronous | 2 points for a 1x1 tile (100x100); 6 points for 3x3 (300x300) and 4x4 (450x450) |

## Request parameters

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `type` | string | Yes | Task type; see "Task types and pricing" on this page |
| `image` | string | Yes | Base64-encoded challenge image without the `data:` prefix |
| `question` | string | Yes | Question ID such as `/m/0k4j`; see "Question IDs" on this page |
| `confidence` | number | No | Confidence threshold from 0 to 1, only used for 3x3 images. If set (0.5 is a good start), every tile above it is returned; if omitted, the top 3 tiles are returned |

Scale the image to a standard size; the server determines the challenge type from it:

| Challenge | Image size | Returns |
| --- | --- | --- |
| 3x3 grid (“Select all images with …”) | 300 × 300 | `objects`: tiles to click |
| 4x4 grid (“Select all squares with …”) | 450 × 450 | `objects`: tiles to click |
| 1x1 tile (a single replacement image after clicking in a 3x3 grid) | 100 × 100 | `hasObject`: whether to click it |

With screenshots, tell them apart by the wording: 3x3 says “Select all images with …”, 4x4 says “Select all squares with …”.

## Request example

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

```json
{
  "clientKey": "YOUR_CLIENT_KEY",
  "task": {
    "type": "ReCaptchaV2Classification",
    "image": "BASE64_IMAGE",
    "question": "/m/0k4j"
  }
}
```

## Result

3x3 and 4x4:

```json
{
  "errorId": 0,
  "status": "ready",
  "solution": { "objects": [1, 5, 8], "type": "multi" },
  "taskId": "3a9e8cb8-3871-11ec-9794-94e6f7355a0b"
}
```

1x1 tile:

```json
{ "errorId": 0, "status": "ready", "solution": { "hasObject": true, "type": "single" } }
```

| Field | Type | Description |
| --- | --- | --- |
| `objects` | array | Indexes of the tiles to click, starting at 0, left to right and top to bottom |
| `hasObject` | boolean | Returned for a 1x1 tile; whether the tile contains the target |
| `type` | string | Challenge type: `multi` (3x3 or 4x4 image, see `objects`), `single` (1x1 tile, see `hasObject`); `drag` for hCaptcha drag questions |

Tiles are numbered from 0, left to right and top to bottom:

![Tile numbers 0 to 8 of a 3x3 grid](https://docs.yescaptcha.com/_astro/recaptcha-3x3-index.C2AG6XA0_1qgyOb.webp)

![Tile numbers 0 to 15 of a 4x4 grid](https://docs.yescaptcha.com/_astro/recaptcha-4x4-index.CE_Q3Ngp_Z1pmx9g.webp)

## confidence: get every matching tile at once

After you click a 3x3 grid, reCAPTCHA usually fades in new 1x1 tiles that also need checking. If those are hard to capture (for example in mobile apps), send `confidence`:

-   Without it, a 3x3 image returns the 3 highest-scoring tiles (reCAPTCHA requires at least 3 clicks).
-   With it (try `0.5`), every tile scoring above the value is returned, which may be more or fewer than 3; an empty array if none match. You no longer need to send the 1x1 tiles.
-   It has no effect on 4x4 and 1x1 images.

## Question IDs

`question` is the question ID (starting with `/m/`), not the question text. The ID comes with the image in the response of the request reCAPTCHA uses to load the challenge (`reload` or `userverify`). Common questions:

16 in total

| Question ID | Question (English) |
| --- | --- |
| `/m/0pg52` | `taxis` |
| `/m/01bjv` | `bus` |
| `/m/04_sv` | `motorcycles` |
| `/m/013xlm` | `tractors` |
| `/m/01jk_4` | `chimneys` |
| `/m/014xcs` | `crosswalks` |
| `/m/015qff` | `traffic lights` |
| `/m/0199g` | `bicycles` |
| `/m/015qbp` | `parking meters` |
| `/m/0k4j` | `cars` |
| `/m/015kr` | `bridges` |
| `/m/019jd` | `boats` |
| `/m/0cdl1` | `palm trees` |
| `/m/09d_r` | `mountains or hills` |
| `/m/01pns0` | `fire hydrant` |
| `/m/01lynh` | `stairs` |

No matching questions

`ERROR_UNKNOWN_QUESTION` means the ID is wrong or not supported yet. `ERROR_UNKNOW_450x450_QUESTION` means the question isn’t supported on 4x4 images yet; reload the challenge on the page to get another one.

## Reports and refunds

If the site rejects your clicks, report the tasks with [`report`](https://docs.yescaptcha.com/en/api/report/) within 1 hour; refunds are settled after about 24 hours. Rules: [Billing and refunds](https://docs.yescaptcha.com/en/getting-started/billing/).

## Related guides

-   [reCAPTCHA image clicking with Selenium](https://docs.yescaptcha.com/en/guides/recaptcha-click-selenium/)
-   [reCAPTCHA v2 (tokens)](https://docs.yescaptcha.com/en/tasks/recaptcha-v2/)
