Skip to content

Tencent CAPTCHA

Return the ticket and random string your callback expects. Tencent's public CAPTCHA app ID becomes websiteKey. Find it in the widget initialization and keep the returned ticket/randstr pair together.

POST /createTask · example
{
  "clientKey": "capzy_YOUR_API_KEY",
  "task": {
    "type": "TencentTaskProxyLess",
    "websiteURL": "https://www.tencentcloud.com/products/captcha",
    "websiteKey": "189910271"
  }
}

Illustrative values. Replace the inputs with values from your current integration.

Page URL + Tencent app IDProxyless or your own proxyticket + randstr

Read the Tencent app ID.

Tencent's public CAPTCHA app ID becomes websiteKey. Find it in the widget initialization and keep the returned ticket/randstr pair together.

Your API key authenticates Capzy.
Provider keys, challenge IDs, images, and session values belong inside task.

Search the Tencent widget initialization.

  1. In Sources, search for the Tencent CAPTCHA initialization and locate its public numeric app ID.
  2. Copy that complete value into websiteKey as a string, and the form page's full URL into websiteURL.
  3. If you own the integration, compare it with the CAPTCHA application ID in your Tencent configuration.
Input collection example - replace illustrative values
{
  "websiteURL": "https://example.com/signup",
  "websiteKey": "YOUR_TENCENT_CAPTCHA_APP_ID"
}

Use the CAPTCHA app ID rather than a general cloud account identifier or secret credential.

How Tencent CAPTCHA works

Tencent Captcha (T-Captcha / TenDI) is a risk-based captcha from Tencent Cloud. It shows a checkbox ('I am human') that either auto-passes or escalates to image selection or slider challenges.

Capzy's proprietary solver returns the Tencent ticket + randstr tokens needed to validate the form. Designed for authorized testing and automation.

  • Embedded checkbox auto-click
  • Network-response ticket capture
  • ~12 second solve time
  • Capzy proprietary infrastructure — high-quality solves
  • Few solvers support this captcha — strong competitive coverage
  • Works on every Tencent Cloud Captcha deployment

Know what goes in.

Choose a field to see its purpose, where to get it, and its place in the request. Optional values omitted from the example can be added when your flow uses them.

The request below follows your selected task configuration.

Request authentication

Required task inputs

Optional context

websiteURL

stringRequired

The page URL where the Tencent captcha widget is loaded

Where it comes from

Copy the full page URL from the address bar or the document request in Network, including the path where this flow runs.

Open the input guide
Example valuehttps://www.tencentcloud.com/products/captcha
POST /createTask · selected configuration
{
  "clientKey": "capzy_YOUR_API_KEY",
  "task": {
    "type": "TencentTaskProxyLess",
    "websiteURL": "https://www.tencentcloud.com/products/captcha",
    "websiteKey": "189910271"
  }
}

The selected field is highlighted when present. Preserve the declared value type and current challenge context.

Make your first request.

Create the task, keep its taskId, and poll until status is ready. Then read the selected variant's solution.

More examples
  1. Create the task

    Send clientKey and the selected task to /createTask from your server. Keep the returned taskId.

  2. Wait for the solution

    Send that same key and ID to /getTaskResult. While processing, wait two seconds before checking again. Stop on Ready or an error.

  3. Apply the result

    Send solution.ticket and solution.randstr together through the existing Tencent verification flow. Preserve solution.appid when the receiver expects it; keep provider validation credentials on the server.

solve_tencent.py
import json, os, time
import requests

API = "https://api.capzy.ai"
KEY = os.environ["CAPZY_API_KEY"]
task = json.loads("{\"type\":\"TencentTaskProxyLess\",\"websiteURL\":\"https://www.tencentcloud.com/products/captcha\",\"websiteKey\":\"189910271\"}")

def call(path, payload):
    response = requests.post(f"{API}/{path}", json={"clientKey": KEY, **payload}, timeout=30)
    response.raise_for_status()
    data = response.json()
    if data.get("errorId", 0) or data.get("status") == "failed":
        raise RuntimeError(data.get("errorDescription") or data.get("errorCode") or "Task failed")
    return data

created = call("createTask", {"task": task})
for attempt in range(60):
    result = call("getTaskResult", {"taskId": created["taskId"]})
    if result.get("status") == "ready":
        solution = result["solution"]
        print(solution)
        break
    time.sleep(2)
else:
    raise TimeoutError("Task is still processing; keep the taskId to check it later.")

Before runningReplace all illustrative inputs with your captured values. Set CAPZY_API_KEY in your environment. Install requests with pip install requests.

Polling and failuresThe example checks HTTP/API failures, uses 30-second request timeouts, and stops after 60 result checks. Retain taskId if your task is still processing.

Understand what comes back.

Follow this task from creation to completion. Response fields and usage follow your selected request variant.

ticket + randstr

Send solution.ticket and solution.randstr together through the existing Tencent verification flow. Preserve solution.appid when the receiver expects it; keep provider validation credentials on the server.

string
The verification ticket
string
Random string for server validation
string
The appId echoed back
POST /getTaskResult · example response
{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "ticket": "tdc_RTAAyXfmW9Vy<long ticket string>",
    "randstr": "@xC1",
    "appid": "189910271"
  }
}

Illustrative values. Additional metadata may be returned; only Ready contains a completed solution.

Use the result

Send solution.ticket and solution.randstr together through the existing Tencent verification flow. Preserve solution.appid when the receiver expects it; keep provider validation credentials on the server.

Execution context result is the parsed Ready response from the polling example. session, when referenced, is your existing requests.Session (or browser-compatible session) with the original cookie jar, headers, and solving proxy configured in session.proxies for both http and https. Keep this client for the complete flow. task is the task object you submitted. For Shape, action_body is the original protected request body as bytes or a string, with its original Content-Type in session.headers. Install curl_cffi when the fragment imports it; match the target's required browser/TLS identity.

Use the result · Python

# Step 3: Tencent T-Captcha — submit ticket + randstr to your form
sol = result["solution"]
resp = requests.post("https://target.example.com/verify", data={
    "ticket": sol["ticket"],
    "randstr": sol["randstr"],
})

When something doesn't work.

Check your captured values, the selected variant, and the response before starting another task.

How do I find the appId?

Search the page source for 'CaptchaAppId', 'data-appid', or look in network requests to *.captcha.qcloud.com for the 'aid' parameter. Use the site's real CaptchaAppId — a placeholder value fails with a config error.

The websiteURL must be the exact page with the widget?

Yes. Our solver navigates to the URL and looks for the embedded widget. If the captcha is on /signup, use that URL, not the homepage.

Do I need to pass captchaScript?

Usually not. We auto-detect whether the site uses the global or mainland Tencent SDK. Only pass captchaScript if the site loads a custom or self-hosted SDK from a non-standard URL.

I got a 'config error' / trerror_1006, or the token won't verify. Why?

That response means the websiteKey (CaptchaAppId) is invalid or not bound to the page's origin — it isn't a real solve. Confirm the appId is the site's real one and that websiteURL is the exact page hosting the widget. We return this as a failed task (ERROR_TENCENT_APPID_INVALID) rather than a token, so you aren't charged for it.

Connect Tencent CAPTCHA to your workflow.

Get your Capzy API key and use this guide's integration.

$2.00Per 1,000 solves
20.8sAverage solve time

TencentTaskProxyLess · Live configuration