Documentation Menu

Tasks

Updated 8/6/2026

Cloudflare Turnstile Solver API

POST
https://solver.solverify.net/createTask

olve Cloudflare Turnstile challenges with the Solverify Turnstile Solver API. Create a task with the page URL and Turnstile sitekey, then retrieve the response token from solution.value after processing completes.

Use this task type when a page contains a Cloudflare Turnstile widget and your authorized workflow needs its response token.

Turnstile Solver Endpoint

POST https://solver.solverify.net/createTask

Turnstile uses the standard Solverify create-and-poll workflow:

  1. Find the page URL and Turnstile sitekey.
  2. Include cdata and action only when the widget uses them.
  3. Create a turnstile task with POST /createTask.
  4. Poll POST /getTaskResult with the returned taskId.
  5. Read the Turnstile response token from solution.value.

Request Parameters

FieldTypeRequiredDescription
clientKeystringYesYour private Solverify API key.
task.typestringYesMust be turnstile.
task.websiteURLstringYesFull URL where the Turnstile widget is loaded. Maximum 2,048 characters.
task.websiteKeystringYesTurnstile sitekey, commonly found in the widget's data-sitekey attribute. Maximum 256 characters.
task.cdatastringNoTurnstile cdata value when supplied by the target widget.
task.actionstringNoTurnstile action value when supplied by the target widget.
task.proxyTypestringNoCustom proxy type. Only http is accepted. Defaults to http when a proxy address and port are provided.
task.proxyAddressstringNoCustom proxy IP address or hostname. Maximum 256 characters.
task.proxyPortstringNoCustom proxy port as a numeric string containing 1 to 5 digits.
task.proxyLoginstringNoUsername for an authenticated custom proxy.
task.proxyPasswordstringNoPassword for an authenticated custom proxy.

Basic Turnstile Task Request

When no custom proxy is supplied, Solverify uses its own proxy infrastructure:

{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "turnstile",
    "websiteURL": "https://example.com",
    "websiteKey": "example_key",
    "cdata": "example_cdata",
    "action": "example_action"
  }
}

If the target widget does not use cdata or action, omit those fields instead of sending empty values.

Turnstile Task With a Custom Proxy

To use your own proxy, provide proxyAddress and proxyPort together. Add credentials only when the proxy requires authentication.

{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "turnstile",
    "websiteURL": "https://example.com",
    "websiteKey": "example_key",
    "proxyType": "http",
    "proxyAddress": "1.1.1.1",
    "proxyPort": "8080",
    "proxyLogin": "username",
    "proxyPassword": "password"
  }
}

Turnstile Solver Code Examples

These examples create a Turnstile task and print the returned task ID. API keys are loaded from an environment variable where supported.

curl --request POST \
  --url https://solver.solverify.net/createTask \
  --header "Content-Type: application/json" \
  --data '{
    "clientKey": "YOUR_API_KEY",
    "task": {
      "type": "turnstile",
      "websiteURL": "https://example.com",
      "websiteKey": "example_key"
    }
  }'

Create Task Response

{
  "errorId": 0,
  "taskId": "UUID"
}

Completed Turnstile Result

After the task reaches completed, the Cloudflare Turnstile token is returned in solution.value:

{
  "errorId": 0,
  "status": "completed",
  "solution": {
    "value": "0.MpR_tg_Jc9krcpY7vsFHAs"
  },
  "errorCode": null,
  "errorDescription": null
}

Turnstile Timeout

Turnstile tasks can run for up to approximately 130 seconds before timing out internally. Use an overall polling deadline in your application and stop when the API returns an error.

Turnstile API Errors

Error codeDescription
ERROR_INVALID_REQUESTThe top-level request body is missing or contains invalid JSON.
ERROR_INVALID_TASKRequired Turnstile task fields are missing or invalid.
ERROR_UNSUPPORTED_TASKThe supplied task type is not supported.
ERROR_INSUFFICIENT_BALANCEThe account balance is too low to create the task.
ERROR_NO_CAPACITYTurnstile solver capacity is temporarily unavailable.
ERROR_TASK_FAILEDThe Turnstile task could not be completed.
ERROR_TIMEOUTSolving exceeded the allowed processing time.

For recovery guidance and every supported response, see Solverify API Error Codes.

Next Steps

After creating a Turnstile task, poll the Get Task Result API every 2 to 3 seconds with the returned taskId. Stop polling when the task completes or errorId indicates a failure.

Frequently Asked Questions

Where can I find the Cloudflare Turnstile sitekey?

The sitekey is commonly present in the widget's data-sitekey attribute or Turnstile rendering configuration. Send it as task.websiteKey.

Does the Turnstile solver require a proxy?

No. If you omit the custom proxy fields, Solverify uses its own proxy infrastructure. To use your own proxy, provide proxyAddress and proxyPort together.

When should I send cdata and action?

Send these values only when the target widget includes them. Use the exact values associated with the page's current Turnstile configuration.

What does the Turnstile Solver API return?

The completed task returns a Cloudflare Turnstile response token in solution.value.

Does this task return cookies or a user-agent?

The Turnstile task result is the response token in solution.value. The documented result does not require cookies or a user-agent.

How long can a Turnstile task take?

The internal task timeout is approximately 130 seconds. Normal completion time varies with challenge conditions and available solver capacity.