Skip to content

CutCaptcha

CutCaptcha is an interactive CAPTCHA that presents users with a visual puzzle requiring them to match shapes or cut-out patterns. It provides bot protection with a user-friendly challenge experience. The uCaptcha API solves CutCaptcha challenges and returns a verification token, with or without a proxy.

TypeProxyDescription
CutCaptchaTokenProxyLessNoSolve without proxy (recommended)
CutCaptchaTokenYesSolve using your proxy
ParameterTypeRequiredDescription
typestringYesTask type from the table above
websiteURLstringYesURL of the page with the CutCaptcha challenge
websiteKeystringYesCutCaptcha site key

Required when using the CutCaptchaToken task type.

ParameterTypeRequiredDescription
proxyTypestringYeshttp, socks4, or socks5
proxyAddressstringYesProxy IP or hostname
proxyPortintegerYesProxy port
proxyLoginstringNoProxy username
proxyPasswordstringNoProxy password
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "CutCaptchaTokenProxyLess",
"websiteURL": "https://example.com/signup",
"websiteKey": "SAs61IAI"
}
}
{
"errorId": 0,
"taskId": "abc-123-def"
}
{
"token": "P1_eyJhbGciOiJIUzUxMiJ9...YmFzZTY0"
}
FieldTypeDescription
tokenstringThe CutCaptcha verification token to submit with the form

Once you receive the token value from the solution:

  1. Form submission — Set the CutCaptcha token in the hidden verification field and submit the form.
  2. Callback — Pass the token to the CutCaptcha JavaScript callback if the site uses a dynamic verification flow.
import requests
import time
API_KEY = "YOUR_API_KEY"
# Create task
response = requests.post("https://api.ucaptcha.net/createTask", json={
"clientKey": API_KEY,
"task": {
"type": "CutCaptchaTokenProxyLess",
"websiteURL": "https://example.com/signup",
"websiteKey": "SAs61IAI"
}
})
task_id = response.json()["taskId"]
# Poll for result
while True:
result = requests.post("https://api.ucaptcha.net/getTaskResult", json={
"clientKey": API_KEY,
"taskId": task_id
}).json()
if result["status"] == "ready":
token = result["solution"]["token"]
print("Token:", token)
break
elif result["status"] == "failed":
print("Error:", result.get("errorDescription"))
break
time.sleep(5)
const API_KEY = "YOUR_API_KEY";
const { taskId } = await fetch("https://api.ucaptcha.net/createTask", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
clientKey: API_KEY,
task: {
type: "CutCaptchaTokenProxyLess",
websiteURL: "https://example.com/signup",
websiteKey: "SAs61IAI"
}
})
}).then(r => r.json());
while (true) {
const result = await fetch("https://api.ucaptcha.net/getTaskResult", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ clientKey: API_KEY, taskId })
}).then(r => r.json());
if (result.status === "ready") {
console.log("Token:", result.solution.token);
break;
} else if (result.status === "failed") {
console.error("Error:", result.errorDescription);
break;
}
await new Promise(r => setTimeout(r, 5000));
}
Terminal window
# Create task
curl -X POST https://api.ucaptcha.net/createTask \
-H "Content-Type: application/json" \
-d '{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "CutCaptchaTokenProxyLess",
"websiteURL": "https://example.com/signup",
"websiteKey": "SAs61IAI"
}
}'
# Poll for result (replace TASK_ID with the taskId from above)
curl -X POST https://api.ucaptcha.net/getTaskResult \
-H "Content-Type: application/json" \
-d '{
"clientKey": "YOUR_API_KEY",
"taskId": "TASK_ID"
}'
  • 2Captcha