# AWS WAF / bCaptcha image recognition

> Recognize AWS WAF CAPTCHA and bCaptcha 3x3 image challenges with YesCaptcha (AwsClassification, bCaptchaClassification). Upload the whole image and the question, and get the cells to click synchronously.

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

`AwsClassification` recognizes AWS WAF CAPTCHA 3x3 image challenges and `bCaptchaClassification` recognizes bCaptcha 3x3 image challenges: send the whole image and the question, and get back which cells to click; your code clicks them in the browser. They **do not return a token**. They are synchronous and cost 8 points (¥0.008) per request.

Without code, use the [browser extension](https://docs.yescaptcha.com/en/extension/).

- 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 |
| --- | --- | --- | --- |
| `AwsClassification` | 8 points (¥0.008) | Synchronous |  |
| `bCaptchaClassification` | 8 points (¥0.008) | Synchronous |  |

The two types take the same parameters and return the same format; choose by where the captcha comes from: `AwsClassification` for AWS WAF, `bCaptchaClassification` for bCaptcha.

## Request parameters

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `type` | string | Yes | Task type; see "Task types and pricing" on this page |
| `queries` | string | Yes | Base64 of the whole 3×3 grid image (a single image) |
| `question` | string | No | The full question as shown on the page, e.g. `Select all hats`; other languages are translated automatically |

`queries` is the **whole** 3x3 image (one image, not 9 tiles). Take `question` from the page as is; English and Chinese both work, and other languages are translated automatically.

## Request example

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

```json
{
  "clientKey": "YOUR_CLIENT_KEY",
  "task": {
    "type": "AwsClassification",
    "queries": "BASE64_IMAGE",
    "question": "Select all hats"
  }
}
```

## Result

```json
{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "label": "Select All Hats",
    "objects": [false, true, false, false, true, true, true, true, false],
    "top_k": [1, 4, 5, 6, 7],
    "confidences": [0.0, 1.0, 0.0, 0.255, 1.0, 1.0, 0.9637, 0.9999, 0.0]
  },
  "taskId": "2053f690-3c3b-11f0-8ffb-d2c180657082"
}
```

| Field | Type | Description |
| --- | --- | --- |
| `label` | string | The recognized target of the question |
| `objects` | array | Whether each of the 9 cells is a target (true / false), left to right and top to bottom |
| `top_k` | array | Indexes (from 0) of the images that are targets; same meaning as `objects`, use either |
| `confidences` | array | Confidence of each result |

The 9 cells are numbered 0 to 8, left to right and top to bottom. `objects` and `top_k` carry the same information; use either: click the cells where `objects` is `true`, or the indexes in `top_k`.

## 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/).
