What is Lemin Cropped Captcha?
Lemin Cropped Captcha (leminnow.com) presents a jigsaw-style slider puzzle. A piece is cropped from an image and placed on a slider rail — the user must drag it to the correct position to complete the picture. Used on e-commerce, gaming, and financial sites. The captcha produces a lemin_answer + lemin_challenge_id pair that the site validates server-side.
How it works
Send Task
POST your LeminTaskProxyLess with the target URL and sitekey to our API. We'll queue it instantly.
We Solve
Capzy's proprietary solver returns the Lemin solution payload (answer + challenge_id) ready for direct submission. Designed for authorized testing and automation.
Get Token
Poll getTaskResult — when status is 'ready', the solution contains the token to inject into the target page.
Quick integration
import requests, time
API = "https://api.capzy.ai"
KEY = "capzy_your_key_here"
# Step 1: Create task
task = requests.post(f"{API}/createTask", json={
"clientKey": KEY,
"task": {
"type": "LeminTaskProxyLess",
"captchaId": "CROPPED_313061f_ea6d320788434680aa852441fbe30963",
"websiteURL": "https://example.com/login"
}
}).json()
task_id = task["taskId"]
print(f"Task created: {task_id}")
# Step 2: Poll for result
while True:
result = requests.post(f"{API}/getTaskResult", json={
"clientKey": KEY,
"taskId": task_id
}).json()
if result["status"] == "ready":
print("Solved!", result["solution"])
break
elif result["status"] == "failed":
print("Failed:", result.get("errorDescription"))
break
time.sleep(1)
Using your own proxy
Use LeminTask instead of LeminTaskProxyLess to route the solve through your own proxy. This is useful when the target site checks the IP that solved the captcha matches the IP submitting the form.
import requests, time
API = "https://api.capzy.ai"
KEY = "capzy_your_key_here"
# Step 1: Create task
task = requests.post(f"{API}/createTask", json={
"clientKey": KEY,
"task": {
"type": "LeminTask",
"captchaId": "CROPPED_313061f_ea6d320788434680aa852441fbe30963",
"proxyPort": "8080",
"proxyType": "http",
"proxyLogin": "user",
"websiteURL": "https://example.com/login",
"proxyAddress": "123.45.67.89",
"proxyPassword": "pass"
}
}).json()
task_id = task["taskId"]
print(f"Task created: {task_id}")
# Step 2: Poll for result
while True:
result = requests.post(f"{API}/getTaskResult", json={
"clientKey": KEY,
"taskId": task_id
}).json()
if result["status"] == "ready":
print("Solved!", result["solution"])
break
elif result["status"] == "failed":
print("Failed:", result.get("errorDescription"))
break
time.sleep(1)
additional proxy parameters
proxyTypetypestringreqyesProxy protocol: http or httpsproxyAddresstypestringreqyesProxy IP address or hostnameproxyPorttypenumberreqyesProxy port numberproxyLogintypestringreqnoProxy username (if auth required)proxyPasswordtypestringreqnoProxy password (if auth required)userAgenttypestringreqnoUser-Agent string to use. Must match the UA you use when submitting the tokenTask parameters
typetypestringreqyesLeminTaskProxyLess or LeminTaskwebsiteURLtypestringreqyesThe page URL where the Lemin captcha is loadedcaptchaIdtypestringreqyesThe Lemin captcha ID (starts with CROPPED_)Solution response
answertypestringThe solved Lemin slider answer — drop into the `lemin-answer` form field.challenge_idtypestringThe Lemin challenge identifier the answer was solved for — submit as `lemin-challenge-id` alongside the answer so the server can correlate.Example response
Full getTaskResult response shape. The fields in the table above describe what's inside solution — the outer envelope (errorId, status) is identical for every captcha type.
{
"errorId": 0,
"status": "ready",
"solution": {
"answer": "187",
"challenge_id": "lemin_challenge_id_abc123def456"
}
}Error response
Failures use the same envelope with errorId: 1 plus errorCode + errorDescription. See the error-code reference for the full list.
{
"errorId": 1,
"errorCode": "ERROR_CAPTCHA_UNSOLVABLE",
"errorDescription": "Solver gave up — automatically refunded."
}Pending response
While the solver is still working, getTaskResult returns status: "processing". Poll every 1–2 seconds until ready or failed.
{
"errorId": 0,
"status": "processing"
}Features
task types
proxyless: LeminTaskProxyLess
with proxy: LeminTask