---
canonical_url: "https://docs.composio.dev/toolkits/capsolver"
markdown_url: "https://docs.composio.dev/toolkits/capsolver.md"
product: "platform"
version: null
last_updated: null
---

# CapSolver

CapSolver provides APIs for CAPTCHA recognition and token-solving workflows, including task creation, polling, account balance, and solution feedback.

- **Category:** developer tools
- **Auth:** API_KEY
- **Composio-managed OAuth available?** N/A
- **Tools:** 16
- **Triggers:** 0
- **Slug:** `CAPSOLVER`
- **Version:** 00000000_00

## Tools

### Classify AWS WAF Image

**Slug:** `CAPSOLVER_CLASSIFY_AWS_WAF`

Classify one AWS WAF challenge image or a nine-image grid and return the immediate geometric or object result. This is a paid CapSolver operation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `app_id` | string | No | Optional CapSolver application identifier for usage attribution. |
| `question` | string ("aws:toycarcity:carcity" | "aws:grid:bag" | "aws:grid:bed" | "aws:grid:belts" | "aws:grid:binocular" | "aws:grid:bucket" | "aws:grid:chair" | "aws:grid:clock" | "aws:grid:cooking pot" | "aws:grid:curtain" | "aws:grid:fork" | "aws:grid:hat" | "aws:grid:scissors" | "aws:grid:seat" | "aws:grid:spoon" | "aws:grid:suitcase" | "aws:grid:umbrella") | Yes | Provider-documented AWS WAF challenge question identifier. |
| `website_url` | string | No | Optional URL of the page containing the challenge. |
| `images_base64` | array | Yes | Base64 challenge images. Supply exactly nine images for an aws:grid question and exactly one for aws:toycarcity:carcity. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Classify reCAPTCHA V2 Image

**Slug:** `CAPSOLVER_CLASSIFY_RECAPTCHA_V2`

Classify a reCAPTCHA v2 challenge image for a documented object category and return the immediate selection result. This is a paid CapSolver operation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `app_id` | string | No | Optional CapSolver application identifier for usage attribution. |
| `question` | string ("taxis" | "bus" | "school_bus" | "motorcycles" | "tractors" | "chimneys" | "crosswalks" | "traffic_lights" | "bicycles" | "parking_meters" | "cars" | "bridges" | "boats" | "palm_trees" | "mountains_or_hills" | "fire_hydrant" | "stairs") | Yes | Object category named by the challenge prompt. Choose from taxis, bus (generic buses), school_bus (school buses), motorcycles, tractors, chimneys, crosswalks, traffic_lights, bicycles, parking_meters, cars, bridges, boats, palm_trees, mountains_or_hills, fire_hydrant, or stairs. |
| `website_key` | string | No | Optional reCAPTCHA site key associated with the challenge. |
| `website_url` | string | No | Optional URL of the page containing the challenge. |
| `image_base64` | string | Yes | Base64-encoded reCAPTCHA challenge image. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Balance

**Slug:** `CAPSOLVER_GET_BALANCE`

Return the connected CapSolver account balance and non-secret package metadata. Package access tokens are never returned.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Task Result

**Slug:** `CAPSOLVER_GET_TASK_RESULT`

Get one asynchronous CapSolver task result, or optionally poll it every three seconds for a bounded time. This action never creates or retries a task.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `task_id` | string | Yes | Task identifier returned by a CapSolver task-creation operation. |
| `wait_until_ready` | boolean | No | Poll every three seconds until the task is ready or the timeout expires. False performs exactly one result request. |
| `wait_timeout_seconds` | integer | No | Window for scheduling polls (3-300 seconds). A final scheduled request may use its network timeout; then the latest state and task ID are returned. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Run Vision Engine

**Slug:** `CAPSOLVER_RUN_VISION_ENGINE`

Run one documented CapSolver vision module and return its immediate points, distance, angle, rectangles, or text result. This is a paid operation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `app_id` | string | No | Optional CapSolver application identifier for usage attribution. |
| `module` | string ("botdeflector" | "slider_1" | "rotate_1" | "rotate_2" | "shein" | "ocr_gif") | Yes | Provider module and contract: botdeflector requires image_base64 and background_image_base64 and returns points as x/y pairs; slider_1 requires both images and returns distance; rotate_1 requires both images and returns an angle; rotate_2 uses image_base64 and returns an angle; shein requires image_base64 and question and returns ordered rectangles; ocr_gif uses a base64 GIF and returns recognized text. The selected value is sent to CapSolver unchanged. |
| `question` | string | No | Challenge question. Required only for the shein module. |
| `website_url` | string | No | Optional URL of the page containing the visual challenge. |
| `image_base64` | string | Yes | Raw base64 foreground or challenge image without a data-URI prefix or newlines. |
| `background_image_base64` | string | No | Raw base64 background image. Required for botdeflector, slider_1, and rotate_1; optional for the other modules. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Solve AWS WAF

**Slug:** `CAPSOLVER_SOLVE_AWS_WAF`

Create one AWS WAF token task with or without a caller-supplied proxy and optionally poll every three seconds for a bounded time. Returns the task ID when processing continues. This is a paid CapSolver operation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `proxy` | string | No | Caller-controlled proxy in a CapSolver-supported format. Required for variant=proxy and never returned. |
| `app_id` | string | No | Optional CapSolver application identifier for usage attribution. |
| `aws_iv` | string | No | Sensitive AWS WAF initialization vector from the challenge data. |
| `aws_key` | string | No | AWS WAF key extracted from the challenge data, when available. |
| `variant` | string ("proxyless" | "proxy") | No | Whether CapSolver connects directly or through the supplied proxy. |
| `aws_api_js` | string | No | Sensitive AWS API JavaScript URL documented by CapSolver. |
| `aws_api_key` | string | No | Sensitive challenge-specific AWS API key; never returned. |
| `aws_context` | string | No | Sensitive AWS WAF context from the challenge data. |
| `website_url` | string | Yes | Full URL protected by AWS WAF. |
| `aws_problem_url` | string | No | Sensitive AWS WAF challenge problem URL, when available. |
| `wait_for_result` | boolean | No | Wait for a ready result after creating the task; false returns the task ID immediately. |
| `aws_challenge_js` | string | No | Sensitive challenge JavaScript URL or value documented by CapSolver. |
| `aws_existing_token` | string | No | Sensitive existing AWS WAF token; never returned. |
| `wait_timeout_seconds` | integer | No | Window for scheduling polls. A final scheduled request may use its network timeout; then processing and the task ID are returned. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Solve BotDeflector

**Slug:** `CAPSOLVER_SOLVE_BOTDEFLECTOR`

Create exactly one proxyless BotDeflector task from a target flow token and optionally poll every three seconds for a bounded time. Returns the task ID when processing continues. This is a paid CapSolver operation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `app_id` | string | No | Optional CapSolver application identifier for usage attribution. |
| `domain` | string | Yes | Domain used by the target's pow/get or icon/get request. It may differ from website_url. |
| `flow_token` | string | Yes | Fresh target flow token, sometimes named botReflectorJwtToken. It is sent only to CapSolver and never returned. |
| `website_url` | string | Yes | Full URL of the page protected by BotDeflector. |
| `wait_for_result` | boolean | No | Wait for a ready result after creating the task; false returns the task ID immediately. |
| `wait_timeout_seconds` | integer | No | Window for scheduling polls. A final scheduled request may use its three-second network timeout; then processing and the task ID are returned. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Solve Cloudflare Challenge

**Slug:** `CAPSOLVER_SOLVE_CLOUDFLARE_CHALLENGE`

Create one Cloudflare challenge task through a sticky caller-supplied proxy and optionally poll every three seconds for bounded clearance output. This is a paid CapSolver operation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `html` | string | No | Fresh challenge HTML obtained through the same sticky proxy. It is sent upstream and never returned. |
| `proxy` | string | Yes | Static or sticky caller-controlled proxy in a CapSolver-supported format. Its session must remain stable for at least three minutes and it is never returned. |
| `app_id` | string | No | CapSolver application identifier for usage attribution. |
| `user_agent` | string | No | Chrome user agent matching the client and sticky proxy session that will use the clearance result. |
| `website_url` | string | Yes | Full URL protected by the Cloudflare challenge. |
| `wait_for_result` | boolean | No | Wait for a ready result; false returns the task ID immediately. |
| `wait_timeout_seconds` | integer | No | Window for scheduling polls. A final scheduled request may use its three-second network timeout; then processing and the task ID are returned. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Solve Cloudflare Turnstile

**Slug:** `CAPSOLVER_SOLVE_CLOUDFLARE_TURNSTILE`

Create one proxyless Cloudflare Turnstile task and optionally poll every three seconds for a bounded time. Returns the task ID for continuation. This is a paid CapSolver operation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cdata` | string | No | Secret Turnstile custom data value from widget metadata, when present. |
| `action` | string | No | Turnstile action value from widget metadata, when present. |
| `app_id` | string | No | CapSolver application identifier for usage attribution, when used. |
| `website_key` | string | Yes | Turnstile site key from the target page. |
| `website_url` | string | Yes | Full URL of the page containing the Turnstile widget. |
| `wait_for_result` | boolean | No | Wait for a ready result; false returns the task ID immediately. |
| `wait_timeout_seconds` | integer | No | Window for scheduling polls. A final scheduled request may use its network timeout; then processing and the task ID are returned. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Solve DataDome

**Slug:** `CAPSOLVER_SOLVE_DATADOME`

Create exactly one DataDome slider task with a caller-supplied proxy and optionally wait a bounded time for its solution cookie. This is a paid CapSolver operation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `html` | string | No | Fresh challenge HTML, sent only to CapSolver and never returned. |
| `proxy` | string | Yes | Caller-controlled proxy in a CapSolver-supported format. Its IP must not be banned by the target, and the value is never returned. |
| `app_id` | string | No | Optional CapSolver application identifier for usage attribution. |
| `user_agent` | string | Yes | Provider-supported browser user agent that exactly matches the client which will use the returned cookie. |
| `captcha_url` | string | Yes | Fresh DataDome captcha URL with query parameter t=fe. A URL with t=bv indicates that the proxy IP is banned. |
| `wait_for_result` | boolean | No | Wait for a ready result after creating the task; false returns the task ID immediately. |
| `wait_timeout_seconds` | integer | No | Window for scheduling polls. A final scheduled request may use its network timeout; then processing and the task ID are returned. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Solve GeeTest

**Slug:** `CAPSOLVER_SOLVE_GEETEST`

Create one GeeTest v3 or v4 token task and optionally poll every three seconds for a bounded time. Returns the task ID when processing continues. This is a paid CapSolver operation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `app_id` | string | No | Optional CapSolver application identifier for usage attribution. |
| `version` | string ("v3" | "v4") | Yes | GeeTest protocol version used by the target page. |
| `challenge` | string | No | Fresh GeeTest v3 challenge value; required for version v3. |
| `risk_type` | string | No | Optional GeeTest v4 risk type when required by the target. |
| `captcha_id` | string | No | GeeTest v4 captcha identifier; required for version v4. |
| `website_url` | string | Yes | Full URL of the page containing GeeTest. |
| `geetest_v3_id` | string | No | GeeTest v3 site identifier. Required for version v3; obtain the provider field named gt together with challenge from the target site's fresh GeeTest initialization request. Do not copy a stale value directly from browser developer tools. |
| `wait_for_result` | boolean | No | Wait for a ready result after creating the task; false returns the task ID immediately. |
| `api_server_subdomain` | string | No | Optional GeeTest API server subdomain used by the target. |
| `wait_timeout_seconds` | integer | No | Window for scheduling polls. A final scheduled request may use its three-second network timeout; then processing and the task ID are returned. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Solve Image To Text

**Slug:** `CAPSOLVER_SOLVE_IMAGE_TO_TEXT`

Recognize text or number answers from base64-encoded images and return the immediate recognition result. This is a paid CapSolver operation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `app_id` | string | No | Optional CapSolver application identifier for usage attribution. |
| `module` | string ("common" | "number") | No | Recognition mode: common returns text; number returns answers for multiple images. |
| `website_url` | string | No | Optional source page URL associated with the image challenge. |
| `image_base64` | string | No | Raw base64 image without a data-URI prefix or newlines; required when module is common. |
| `images_base64` | array | No | One to nine raw base64 images; required when module is number. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Solve MTCaptcha

**Slug:** `CAPSOLVER_SOLVE_MTCAPTCHA`

Create one proxyless or caller-proxied MTCaptcha token task and optionally poll every three seconds for a bounded time. Returns the task ID when processing continues. This is a paid CapSolver operation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `proxy` | string | No | Caller-controlled proxy in a CapSolver-supported format. Required for the proxy variant and never returned. |
| `app_id` | string | No | CapSolver application identifier for usage attribution. |
| `variant` | string ("proxyless" | "proxy") | No | Whether CapSolver connects directly or through the supplied proxy. |
| `website_key` | string | Yes | MTCaptcha site key from the target page. |
| `website_url` | string | Yes | Full URL of the page containing MTCaptcha. |
| `wait_for_result` | boolean | No | Wait for a ready result; false returns the task ID immediately. |
| `wait_timeout_seconds` | integer | No | Window for scheduling polls. A final scheduled request may use its three-second network timeout; then processing and the task ID are returned. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Solve reCAPTCHA V2

**Slug:** `CAPSOLVER_SOLVE_RECAPTCHA_V2`

Solve one standard or enterprise reCAPTCHA v2 challenge in task or synchronous mode. Task mode creates exactly one task and may poll for a bounded time; synchronous mode calls getToken exactly once. This is a paid CapSolver operation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `proxy` | string | No | Caller-controlled proxy in a CapSolver-supported format. Required only for proxy variants and never returned. |
| `app_id` | string | No | CapSolver application identifier for usage attribution. |
| `data_s` | string | No | Secret recaptchaDataSValue captured from the target page, when present. |
| `cookies` | array | No | Target cookies for supported sites. Values are sent upstream and never returned. |
| `variant` | string ("proxyless" | "proxy" | "enterprise_proxyless" | "enterprise_proxy") | No | Task variant. Proxy variants require proxy; enterprise variants may use enterprise_payload. |
| `api_domain` | string | No | reCAPTCHA API domain used by the target page, when non-default. Common values are http://www.google.com/ and http://www.recaptcha.net/. |
| `is_session` | boolean | No | Whether CapSolver should request a session-capable solution. |
| `page_action` | string | No | Action value from the target widget's anchor request, when present. |
| `website_key` | string | Yes | reCAPTCHA site key from the target page. |
| `website_url` | string | Yes | Full URL of the page containing reCAPTCHA v2. |
| `is_invisible` | boolean | No | Whether the target uses invisible reCAPTCHA v2. |
| `execution_mode` | string ("task" | "synchronous") | No | How CapSolver should solve the challenge: task creates exactly one asynchronous task and may poll it; synchronous calls getToken exactly once and returns only a ready result. |
| `wait_for_result` | boolean | No | Task mode only: wait for a ready result; false returns the task ID immediately. Ignored in synchronous mode. |
| `enterprise_payload` | object | No | Secret enterprise payload required by some enterprise integrations. |
| `wait_timeout_seconds` | integer | No | Task mode only: window for scheduling polls. A final scheduled request may use its network timeout; then processing and the task ID are returned. Ignored in synchronous mode. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Solve reCAPTCHA V3

**Slug:** `CAPSOLVER_SOLVE_RECAPTCHA_V3`

Solve a standard, enterprise, or M1 reCAPTCHA v3 challenge in task or synchronous mode. Task mode creates exactly one task and may poll for a bounded time. Synchronous mode calls getToken exactly once and rejects M1. M1 variants are high-cost and require provider and site-specific enablement.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `proxy` | string | No | Caller-controlled proxy in a CapSolver-supported format. Required only for proxy variants and never returned. |
| `app_id` | string | No | CapSolver application identifier for usage attribution. |
| `variant` | string ("proxyless" | "proxy" | "enterprise_proxyless" | "enterprise_proxy" | "m1_proxyless" | "m1_proxy" | "enterprise_m1_proxyless" | "enterprise_m1_proxy") | No | reCAPTCHA v3 task variant. Variants ending in _proxy require proxy. M1 variants are high-cost and require provider and site-specific enablement; use them only when that enablement is confirmed. |
| `api_domain` | string | No | reCAPTCHA API domain used by the target page, when non-default. Common values are http://www.google.com/ and http://www.recaptcha.net/. |
| `is_session` | boolean | No | Whether CapSolver should request a session-capable solution. |
| `page_action` | string | No | Action value whose reCAPTCHA v3 score token is requested. |
| `website_key` | string | Yes | reCAPTCHA site key from the target page. |
| `website_url` | string | Yes | Full URL of the page containing reCAPTCHA v3. |
| `execution_mode` | string ("task" | "synchronous") | No | How CapSolver should solve the challenge: task creates exactly one asynchronous task and may poll it; synchronous calls getToken exactly once and returns only a ready result. Synchronous mode does not support M1 variants. |
| `wait_for_result` | boolean | No | Task mode only: wait for a ready result; false returns the task ID immediately. Ignored in synchronous mode. |
| `enterprise_payload` | object | No | Secret enterprise payload required by some target integrations. Accepted only by enterprise variants and never returned. |
| `wait_timeout_seconds` | integer | No | Task mode only: window for scheduling polls. A final scheduled request may use its network timeout; then processing and the task ID are returned. Ignored in synchronous mode. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Submit Task Feedback

**Slug:** `CAPSOLVER_SUBMIT_TASK_FEEDBACK`

Report whether a previously returned CapSolver token worked, using only the documented minimal task and result fields.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `solved` | boolean | Yes | Whether the returned token successfully solved the target challenge. |
| `task_id` | string | No | Optional task identifier from the original result. |
| `task_type` | string | Yes | Exact CapSolver task type originally submitted, such as ReCaptchaV2TaskProxyLess. |
| `website_key` | string | No | Optional website key from the original task when that family used one. |
| `website_url` | string | Yes | Website URL from the original task; no other original task fields are accepted or returned. |
| `result_error_id` | integer | No | Provider errorId from the original result; defaults to zero for a successful result. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
