API Endpoints
Updated 8/6/2026
Get Task Result API
Retrieve the status and final solution of a Solverify CAPTCHA task with the Get Task Result API. Send the taskId returned by POST /createTask to POST /getTaskResult, then continue polling until the task is completed or an error is returned.
The endpoint immediately returns the task's current state. It does not wait for processing to finish, so your application controls the polling interval.
Request Body
{
"clientKey": "YOUR_API_KEY",
"taskId": "TASK_UUID"
}
| Field | Type | Required | Description |
|---|---|---|---|
clientKey | string | Yes | Your private Solverify API key. |
taskId | string | Yes | The task identifier returned by POST /createTask. |
The API key used to retrieve a result must have access to the requested task. Keep API keys in server-side environment variables and never expose them in frontend code.
CAPTCHA Task Statuses
| Status | Meaning | Recommended action |
|---|---|---|
pending | The task is queued and waiting for available solver capacity. | Wait 2 to 3 seconds, then request the result again. |
processing | A solver has claimed the task and is working on it. | Continue polling with the same taskId. |
completed | The task finished successfully and includes a solution. | Read the task-specific fields from solution. |
failed | The task could not be completed and returns an API error. | Stop polling and inspect errorCode and errorDescription. |
Pending Response
When a CAPTCHA task is still queued, the API returns pending:
{
"errorId": 0,
"status": "pending",
"cost": 0.002,
"errorCode": null,
"errorDescription": null
}
Processing Response
When the task has been assigned to a solver, the API returns processing:
{
"errorId": 0,
"status": "processing",
"cost": 0.002,
"errorCode": null,
"errorDescription": null
}
Completed Response
A completed task includes the final CAPTCHA solution. The exact fields depend on the task type:
{
"errorId": 0,
"status": "completed",
"cost": 0.002,
"solution": {
"value": "",
"cookies": {},
"headers": {},
"useragent": "Mozilla/5.0 ...",
"html": "<html>...</html>"
},
"errorCode": null,
"errorDescription": null
}
Response Fields
| Field | Type | Description |
|---|---|---|
errorId | number | 0 indicates a successful status request. 1 indicates an API error. |
status | string | Current task state: pending, processing, or completed. |
cost | number | Expected charge while processing and resolved task charge after completion or failure. |
solution | object | Final task result. Present when the status is completed. |
errorCode | string or null | Machine-readable error code when the request or task fails. |
errorDescription | string or null | Human-readable information about the error. |
The cost value is 0 for solves included in a thread plan and failures that are not billable.
CAPTCHA Solution Fields
The contents of solution vary by CAPTCHA type and solver module. Only use fields supported by the task you created.
| Field | Description |
|---|---|
value | CAPTCHA token, OCR text, or another task-specific result. |
cookies | Cookies returned by browser-based and cookie-based task types. |
headers | Request headers captured when required by the solver type. |
useragent | User-agent used by the solver session. |
html | HTML source returned by task types that support source capture. |
Get Task Result Code Examples
The following examples poll every two seconds and stop when the task completes or the API returns an error. Replace TASK_UUID with the ID returned by POST /createTask.
curl --request POST \
--url https://solver.solverify.net/getTaskResult \
--header "Content-Type: application/json" \
--data '{
"clientKey": "YOUR_API_KEY",
"taskId": "TASK_UUID"
}'
Failed Task Response
When solving fails, stop polling and handle the returned error:
{
"errorId": 1,
"errorCode": "ERROR_TASK_FAILED",
"errorDescription": "Task failed to solve",
"cost": 0
}
Get Task Result Errors
| Error code | Description |
|---|---|
ERROR_INVALID_REQUEST | Required JSON fields are missing or invalid. |
ERROR_INVALID_KEY | The supplied Solverify API key is invalid. |
ERROR_TASK_NOT_FOUND | The task does not exist or is not accessible with the supplied API key. |
ERROR_TASK_FAILED | The solver could not complete the task. |
Always stop polling when errorId is not 0. For every supported API error, see Solverify API Error Codes.
Recommended Polling Workflow
- Create a CAPTCHA task with
POST /createTask. - Store the returned
taskId. - Wait approximately 2 seconds before the first result request.
- Call
POST /getTaskResultwith the same API key and task ID. - Continue polling while the status is
pendingorprocessing. - Stop when the status is
completedorerrorIdindicates failure.
Polling more frequently does not make tasks finish faster and creates unnecessary API traffic. Production integrations should also set an overall timeout so they do not poll indefinitely.
Frequently Asked Questions
How often should I poll the Get Task Result API?
Poll every 2 to 3 seconds for most integrations. Use a client-side timeout and stop polling immediately after completion or failure.
Why does the response not include solution?
The solution object is available after the task reaches completed. Continue polling when the status is pending or processing.
What does ERROR_TASK_NOT_FOUND mean?
The task ID may be incorrect or unavailable to the supplied API key. Verify that you are using the exact taskId and API key from the task creation request.
Are all CAPTCHA solution objects identical?
No. Solution fields depend on the task type. Some tasks return a token or OCR text in value, while browser-based tasks may also return cookies, headers, a user-agent, or HTML.