CAPTCHA / GEETEST_ICON

GeeTest / Icon

Captcha with three icon hints: find these objects on the large picture and click them in the given order.

Input

Prepare canvas.jpg — the main picture, and hint-1.png, hint-2.png, hint-3.png — the three original hints in task order. Keep the alpha channel of the PNG hints. Send files from the same round.

Parameters

ParameterTypeRequiredDefaultDescription
imagestringYes—Source image in base64.
quesstring[3]Yes—Array of exactly three base64 hint images. The first element is the first object to click, the second — second, the third — third.
methodstringNoautoauto: use a known clean background, otherwise match contours. background: require a clean background; without one the task fails. match: search by contours without a clean background.
bg_idstringNoEmpty stringClean background ID, if you know it. Takes priority over imgs.
imgsstringNoEmpty stringOriginal path of the main picture from the provider's data, e.g. /icon/<hex-id>/…. bg_id is extracted from it.

Response

Recognition dataTypeDescription
extra.pointsinteger[][3]Points [number, x, y]. The number starts at 1 and follows the order of ques. x and y are pixels of the original main picture.
extra.scoresnumber[]Point match scores, in the same order.
extra.methodstringMethod actually used: background or match.
extra.bg_idstringBackground ID, if known.
extra.background_builtbooleanWhether the background was assembled from samples accumulated by the server in this request.
extra.fallback_reasonstring, optionalReason for switching from the background method to match, if it happened.
extra.debugobjectDiagnostics of the specific method.

Applying the answer

Read result["extra"]["points"]. Click each point in array order. If the picture is scaled, recalculate x and y first. Verification with the provider is done by the plugin or your code.

Common mistakes

  • ques must contain exactly three images, not the task text or local file paths.
  • The hints and canvas must belong to the same round.
  • Do not start with method=background unless the server knows the background; use auto for the first request.
Scenario errors and retries →

Request example

Python · requests
import base64
from pathlib import Path
import os
import uuid
import requests

def image64(filename):
    return base64.b64encode(Path(filename).read_bytes()).decode("ascii")

payload = {
    "image": image64("canvas.jpg"),
    "ques": [image64("hint-1.png"), image64("hint-2.png"), image64("hint-3.png")],
    "method": "auto",
}

# One ID per task; keep it for network retries.
request_id = str(uuid.uuid4())
response = requests.post(
    "https://capi.z3n.pro/v1/solve/geetest_icon",
    headers={
        "Authorization": f"Bearer {os.environ['CAPI_API_KEY']}",
        "Content-Type": "application/json",
        "Idempotency-Key": request_id,
    },
    json=payload,
    timeout=90,
)
response.raise_for_status()
result = response.json()
for order, x, y in result["extra"]["points"]:
    print(order, x, y)
Payment and all routes →