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.
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
🔑 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:
🎁 Shortcut: pass
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.