GeeTest v3/v4 Solver API NEW

Ultra-fast, AI-driven solver for GeeTest v4 Slider Puzzle & GeeTest v3/v4 Icon Click challenges with 98%+ accuracy and < 500ms latency.

⚡ Segmentation-Grade AI Pipeline: Powered by YOLO11 instance segmentation models trained on 500+ verified golden samples with copy-paste augmentation. Detects the exact puzzle gap contour (not just a box) for pixel-perfect slide distances, and matches icon targets for click challenges.

Supported Task Types (2-in-1 Solver)

1. Slider Puzzle (GeeTest v4)

Detects the exact target gap on the background with sub-pixel precision. Returns slider_position.center_x and optional drag_distance.

type: "slider"

2. Icon Click (GeeTest v3 / v4)

Matches 3+ target icons from the instruction banner to ordered background click coordinates.

type: "click"

Endpoint Information

POST https://captchakings.com/api/geetest.php
💰 Pricing: $0.001 per solve ($1.00 / 1000 solves) — Over 50% cheaper than 2Captcha and CapSolver!
🔑 Authentication: Pass your CaptchaKings API key via Authorization: Bearer ck_..., X-API-Key, or JSON field api_key.

Request Parameters

Parameter Type Required Description
type string No Task subtype: "slider" (GeeTest v4 slide puzzle) or "click" (icon click). Auto-detected: if instruction is present → click, otherwise slider.
image_base64 string / file Yes The GeeTest background image (Base64 string, data-URL, or multipart file upload field image).
instruction_base64 string / file Conditional Instruction/tip strip containing the target icons for click tasks (multipart field instruction or tip_image).
slider_rest_x number Optional Current CSS offset (px) of the slice puzzle from the left edge of the background. When provided, the response also contains a ready-to-use drag_distance.
api_key string Yes* Your CaptchaKings API key (optional if Authorization: Bearer header is sent).

Example Responses

1. Slider Puzzle Response (Type: "slider")

{
  "success": true,
  "type": "slider",
  "slider_position": {
    "center_x": 186.5,
    "center_y": 71.2,
    "x1": 158.0,
    "y1": 39.0,
    "x2": 215.0,
    "y2": 103.0
  },
  "x": 186.5,
  "y": 71.2,
  "confidence": 0.94,
  "polygon": [[160, 40], [213, 41], [214, 101], [159, 102]],
  "drag_distance": 132.5,
  "processing_time": "0.38s",
  "billing": {
    "amount_charged": "0.001000",
    "balance_remaining": "19.999000",
    "plan": "pay_as_you_go"
  },
  "message": "Slider puzzle target detected successfully"
}

2. Icon Click Response (Type: "click")

{
  "success": true,
  "type": "click",
  "click_coordinates": [
    [196, 121],
    [88, 203],
    [270, 154]
  ],
  "clicks": [
    { "x": 196, "y": 121 },
    { "x": 88, "y": 203 },
    { "x": 270, "y": 154 }
  ],
  "num_targets": 3,
  "confidence": 0.96,
  "processing_time": "0.31s",
  "billing": {
    "amount_charged": "0.001000",
    "balance_remaining": "19.998000",
    "plan": "pay_as_you_go"
  },
  "message": "Icon click coordinates predicted successfully"
}

Integration Code Examples

Python (Slider & Icon Click)

import requests
import base64

API_KEY = "ck_your_api_key_here"
API_URL = "https://captchakings.com/api/geetest.php"

# --- 1. GeeTest v4 Slider ---
with open("geetest_bg.png", "rb") as f:
    bg_b64 = base64.b64encode(f.read()).decode("utf-8")

resp = requests.post(
    API_URL,
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={"type": "slider", "image_base64": bg_b64},
    timeout=30
).json()

if resp["success"]:
    target_x = resp["slider_position"]["center_x"]
    print("Slide target X:", target_x)          # drag slider to this X (natural-image px)
    print("Ready drag distance:", resp.get("drag_distance"))  # if you passed slider_rest_x
else:
    print("Solve failed:", resp.get("error"))

# --- 2. GeeTest v3/v4 Icon Click ---
with open("geetest_bg.png", "rb") as f_bg, open("instruction_tip.png", "rb") as f_tip:
    resp = requests.post(
        API_URL,
        headers={"Authorization": f"Bearer {API_KEY}"},
        json={
            "type": "click",
            "image_base64": base64.b64encode(f_bg.read()).decode("utf-8"),
            "instruction_base64": base64.b64encode(f_tip.read()).decode("utf-8")
        },
        timeout=30
    ).json()

if resp["success"]:
    for i, (x, y) in enumerate(resp["click_coordinates"]):
        print(f"Step {i+1}: click at ({x}, {y})")

Node.js / JavaScript

const fs = require('fs');

async function solveGeetestSlider() {
    const bgB64 = fs.readFileSync('geetest_bg.png').toString('base64');

    const res = await fetch('https://captchakings.com/api/geetest.php', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
            'Authorization': 'Bearer ck_your_api_key_here'
        },
        body: JSON.stringify({ type: 'slider', image_base64: bgB64 })
    });

    const result = await res.json();
    if (result.success) {
        console.log('Target X:', result.slider_position.center_x);
        console.log('Confidence:', result.confidence);
    }
}

solveGeetestSlider();

cURL Example

curl -X POST https://captchakings.com/api/geetest.php \
  -H "Authorization: Bearer ck_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "slider",
    "image_base64": "iVBORw0KGgoAAAANSUhEUgAA..."
  }'

Browser / Puppeteer / Playwright Notes

📐 Coordinate Scaling: Our API returns coordinates in natural image pixels. GeeTest v4 renders the background (usually 340×212) into a CSS box that may differ. Scale coordinates:
cssX = apiX * (displayWidth / naturalWidth)  —  then subtract the slice element's current left offset before dispatching mouse events.
🎁 Shortcut: pass slider_rest_x (the slice's left offset) and we return a drag_distance already in slider-track pixels.
🖱️ Human-like Trajectory: Never teleport the slider. Move with a short eased path (accelerate, decelerate, 1–3px overshoot, then settle) over ~600–900ms. This matches the behavioral profile GeeTest expects. Our Chrome Extension and the SDK examples implement this automatically.