> ## Documentation Index
> Fetch the complete documentation index at: https://docs.surfsky.io/llms.txt
> Use this file to discover all available pages before exploring further.

# BLS

> Configure automatic BLS solving and verify the result on your page.

Use `Captcha.autoSolve` for BLS. This type is handled by the external provider integration; sending it to `Captcha.solve` returns an error.

<span id="overview" />

<span id="prerequisites" />

<span id="quick-start" />

## Before you start

Enable the solver when [starting the browser](/captcha-solving#enable-solving):

```json theme={null}
{
  "anti_captcha": {
    "enabled": true,
    "disable_external_providers": false,
    "auto_captcha_types": ["bls"]
  }
}
```

Your account needs the corresponding external provider configuration. Check [solver balance](/api-reference/captcha/get-solver-balance) and [provider settings](/captcha-solving#provider-configuration) if solving does not begin.

## Auto solving

Use the [Playwright](/quickstart/playwright) or [Puppeteer](/quickstart/puppeteer) lifecycle, adding the settings above to the start request. Create a page-level CDP session and attach listeners before enabling automatic mode:

<CodeGroup>
  ```python Python (async Playwright) theme={null}
  cdp = await page.context.new_cdp_session(page)
  cdp.on("Captcha.solveCompleted", lambda event: print("Completed:", event))
  cdp.on("Captcha.solveFailed", lambda event: print("Failed:", event))
  await cdp.send("Captcha.autoSolve", {"type": "bls"})
  await page.goto(target_url, wait_until="domcontentloaded")
  ```

  ```javascript JavaScript (Playwright) theme={null}
  const cdp = await page.context().newCDPSession(page);
  cdp.on("Captcha.solveCompleted", event => console.log("Completed:", event));
  cdp.on("Captcha.solveFailed", event => console.error("Failed:", event));
  await cdp.send("Captcha.autoSolve", { type: "bls" });
  await page.goto(targetUrl, { waitUntil: "domcontentloaded" });
  ```
</CodeGroup>

Replace the target URL with your page. Add a bounded wait for the form result or protected content after navigation. `{"status": "started"}` only confirms that automatic mode started.

## Check the page result

The BLS integration uses the external solver for the challenge on the page. It does not book appointments or complete the surrounding form. Continue those steps in your automation after the site accepts verification.

Keep the CDP connection open while solving. Avoid running a second solver against the same challenge. If verification completes but the page is still blocked, inspect the next network response or form validation error.

<span id="best-practices" />

<span id="how-it-works" />

<span id="need-help" />

<span id="related" />

## Troubleshooting

If nothing happens, confirm that the external integration was loaded, `"bls"` is allowed in `auto_captcha_types`, and the challenge is present. Observe failure events and check provider availability before retrying.

See [CAPTCHA troubleshooting](/captcha-solving#troubleshooting) for shared errors and [DevTools](/debugging) to inspect a running attempt. Stop the browser after the job completes.
