---
title: "Get the result of a task"
method: POST
path: "/getTaskResult"
tags: ["Tasks"]
---

# Get the result of a task

`POST /getTaskResult`

Polls the result of a previously created task. While solving, `status` is `processing`
(no `solution`). When done, `status` is `ready` and `solution` contains the answer whose
shape depends on the captcha type (see `Solution`).

**Limit:** up to 120 requests per task; exceeding it may temporarily lock the account.
Poll at a sane interval (e.g. every 1–3 seconds).

## Request body

- GetTaskResultRequest
  - `clientKey` string, required — Your account API key (from https://dash.capmonster.cloud). Authenticates the request.
  - `taskId` integer, required — Task id obtained from `createTask`.

## Response `200`

Current task state (`processing` / `ready`), or a business error in the body
(`errorId: 1`). Invalid key uses `403` and unknown task id uses `404` (below).

- GetTaskResultResponse — Polling response. Field presence varies by state: `processing` returns only `{ "status": "processing" }`; a successful result returns `errorId`, `status: ready` and `solution`; an error returns `errorId`/`errorCode` (no `status`). Hence no field is universally required.
  - `errorId` integer — `0` = success, non-zero = error.
  - `errorCode` 'ERROR_KEY_DOES_NOT_EXIST' | 'ERROR_ZERO_BALANCE' | 'ERROR_TOO_BIG_CAPTCHA_FILESIZE' | 'ERROR_ZERO_CAPTCHA_FILESIZE' | 'ERROR_NO_SUCH_CAPCHA_ID' | 'WRONG_CAPTCHA_ID' | 'ERROR_CAPTCHA_UNSOLVABLE' | 'CAPTCHA_NOT_READY' | 'ERROR_IP_NOT_ALLOWED' | 'ERROR_IP_BANNED' | 'ERROR_NO_SUCH_METHOD' | 'ERROR_TOO_MUCH_REQUESTS' | 'ERROR_DOMAIN_NOT_ALLOWED' | 'ERROR_TOKEN_EXPIRED' | 'ERROR_NO_SLOT_AVAILABLE' | 'ERROR_RECAPTCHA_INVALID_SITEKEY' | 'ERROR_RECAPTCHA_INVALID_DOMAIN' | 'ERROR_RECAPTCHA_TIMEOUT' | 'ERROR_IP_BLOCKED' | 'ERROR_PROXY_CONNECT_REFUSED' | 'ERROR_PROXY_BANNED' | 'ERROR_PROXY_MISSING' | 'ERROR_PROXY_NOT_AUTHORISED' | 'ERROR_PROXY_READ_TIMEOUT' | 'ERROR_TASK_NOT_SUPPORTED' | 'ERROR_TASK_ABSENT' | 'ERROR_WRONG_USERAGENT' — Machine-readable error code returned when `errorId` is non-zero.
  - `errorDescription` string, nullable
  - `status` 'processing' | 'ready' — `processing` — still being solved (no `solution` yet). `ready` — solved, `solution` is present.
  - `solution` union — Task answer for `getTaskResult`. The shape depends on the solved captcha type — `getTaskResult` does not echo the type, so this is an `anyOf` of the per-type solutions plus a permissive fallback.
    - TextSolution
      - `text` string, required — Recognised text.
    - AnswerSolution — ComplexImage result. `answer` shape depends on `metadata.AnswerType` (recognition) or is a boolean grid (recaptcha).
      - `answer` union, required — boolean[] (Grid / recaptcha) | number[] (NumericArray) | [{X,Y}] (Coordinate) | string (Text).
        - boolean[]
        - number[]
        - object[]
          - `X` number
          - `Y` number
        - string
      - `metadata` object
        - `AnswerType` 'Text' | 'Coordinate' | 'Grid' | 'NumericArray'
    - GRecaptchaResponseSolution
      - `gRecaptchaResponse` string, required — Token for the g-recaptcha-response field (~500–2190 bytes).
    - GRecaptchaResponseUserAgentSolution
      - `gRecaptchaResponse` string, required — Token for the g-recaptcha-response field (~500–2190 bytes).
      - `userAgent` string — User-Agent to resubmit with the token, when returned.
    - GRecaptchaResponseUserAgentCookiesSolution
      - `gRecaptchaResponse` string, required — Token for the g-recaptcha-response field (~500–2190 bytes).
      - `userAgent` string — User-Agent to resubmit with the token, when returned.
      - `cookies` object — Additional cookies, when returned.
    - TokenSolution
      - `token` string, required — Solution token.
    - TokenUserAgentSolution
      - `token` string, required — Solution token.
      - `userAgent` string — User-Agent used while solving.
    - DomainsSolution
      - `domains` object, required — Per-domain cookies/localStorage to apply in the browser.
    - DataTokenSolution
      - `data` object
        - `token` string — Solution token (nested under data).
    - GeeTestSolution — GeeTest v3 returns challenge/validate/seccode; v4 returns captcha_id/lot_number/pass_token/gen_time/captcha_output.
      - `challenge` string — GeeTest v3.
      - `validate` string — GeeTest v3.
      - `seccode` string — GeeTest v3.
      - `captcha_id` string — GeeTest v4.
      - `lot_number` string — GeeTest v4.
      - `pass_token` string — GeeTest v4.
      - `gen_time` string — GeeTest v4.
      - `captcha_output` string — GeeTest v4.
    - TurnstileSolution — token mode returns token (+userAgent); cf_clearance / wait_room modes return cf_clearance.
      - `token` string, required — Solution token.
      - `userAgent` string — User-Agent used while solving.
      - `cf_clearance` string — Cloudflare clearance cookie (cf_clearance / wait_room modes).
    - AmazonSolution
      - `cookies` object, required — Cookies to set (e.g. aws-waf-token).
      - `userAgent` string — User-Agent used while solving.
    - BasiliskSolution
      - `data` object
        - `captcha_response` string
      - `headers` object
        - `User-Agent` string
    - TenDISolution
      - `data` object
        - `randstr` string
        - `ticket` string
      - `headers` object
        - `User-Agent` string
    - AltchaSolution
      - `data` object
        - `token` string — Base64-encoded solution token.
        - `number` integer
    - TspdSolution
      - `Domains` object, required — Per-domain cookies (note: capitalised Domains/Cookies keys for this type).
    - AlibabaSolution
      - `data` object
        - `tokens` string — JSON string with sceneId/certifyId/deviceToken/data.
    - object — Fallback for solution shapes not enumerated above.
  - `cost` string, nullable — Cost charged for the task (string-encoded decimal), when available.

## Other responses

- `403` — Invalid / unknown API key (`ERROR_KEY_DOES_NOT_EXIST`).
- `404` — No such task id (`ERROR_NO_SUCH_CAPCHA_ID`).

---

[API](https://skmtc.dev/capmonster/apis/capmonster-cloud-api-createtask-gettaskresult-getbalance.md) · [All operations](https://skmtc.dev/capmonster/apis/capmonster-cloud-api-createtask-gettaskresult-getbalance/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/capmonster/capmonster-cloud-api-createtask-gettaskresult-getbalance/revisions/d742f6de22b5/schema)
