Troubleshooting

GeeTest v3 Error Codes: Complete Troubleshooting Reference

GeeTest v3 errors can come from three sources: the GeeTest registration API, the GeeTest validation API, or CaptchaAI's solving API. This reference covers all three, helping you identify the source and fix the issue quickly.

Error Source Identification

Source When it occurs Error format
GeeTest Registration When getting gt and challenge HTTP response codes + JSON
GeeTest Validation When site verifies solution JSON success/fail
CaptchaAI Submit When sending task to CaptchaAI ERROR_* strings
CaptchaAI Poll When checking task result ERROR_* or CAPCHA_NOT_READY

GeeTest Registration Errors

These occur when the site's backend requests a challenge from GeeTest:

Error Cause Impact on you
success: 0 (offline mode) GeeTest servers unreachable Site falls back to offline mode — simpler challenge
Empty challenge Registration failed Cannot solve — no challenge token available
gt mismatch Wrong GeeTest ID extracted Solution won't validate
HTTP 429 Rate limited by GeeTest Wait and retry — or the site may cache challenges

Detecting Offline Mode

# Check if GeeTest is in offline mode
registration_data = get_geetest_registration()

if registration_data.get("success") == 0:
    print("GeeTest offline mode — local validation")
    # Offline mode uses different verification
else:
    print("GeeTest online mode — standard flow")

GeeTest Validation Errors

These occur when the site's backend verifies the three solution values:

Error Meaning Cause
Validation returns fail Solution rejected Challenge expired, wrong values, or tampered
Validation returns empty Server error GeeTest server issue
Challenge mismatch geetest_challenge doesn't match expected Wrong challenge token used
Seccode format invalid geetest_seccode missing \|jordan suffix Incomplete solution

Common Validation Failures

Scenario Root cause Fix
Solution was correct but rejected Challenge expired between solve and submit Reduce time between extracting challenge and submitting solution
All three values present but rejected gt or challenge extracted from wrong element Verify you're extracting from the correct GeeTest widget
Works intermittently Race condition with challenge refresh Don't let the page refresh the challenge after extraction
Always fails Wrong GeeTest version (v4 instead of v3) Check GeeTest version and use correct CaptchaAI method

CaptchaAI Submit Errors (GeeTest-Specific)

When submitting a GeeTest task to CaptchaAI:

Error Cause Fix
ERROR_WRONG_CAPTCHA_ID Invalid method parameter Use method=geetest
ERROR_CAPTCHA_UNSOLVABLE Challenge couldn't be solved Challenge may have expired — extract fresh and retry
ERROR_WRONG_USER_KEY Invalid CaptchaAI API key Check your API key
ERROR_ZERO_BALANCE No funds Add balance to CaptchaAI
ERROR_NO_SLOT_AVAILABLE Server capacity reached Retry after 1–5 seconds
ERROR_PAGEURL Missing or invalid page URL Provide the full URL

GeeTest-Specific Parameter Errors

Error Cause Fix
ERROR_BAD_PARAMETERS Missing gt or challenge Both are required for GeeTest
Invalid gt format gt should be 32-char hex Verify extraction — gt is always 32 hex characters
Invalid challenge format challenge should be 32-char hex Extract fresh — challenge changes each page load

CaptchaAI Poll Errors

Error Meaning Action
CAPCHA_NOT_READY Still solving Continue polling every 3–5 seconds
ERROR_CAPTCHA_UNSOLVABLE Failed to solve Submit a new task with fresh challenge
ERROR_WRONG_CAPTCHA_ID Task ID invalid Use the exact ID returned by in.php

Debugging Checklist

When a GeeTest solution fails, check in order:

1. Parameter Extraction

# Verify gt is 32 hex characters
assert len(gt) == 32 and all(c in "0123456789abcdef" for c in gt), f"Invalid gt: {gt}"

# Verify challenge is 32 hex characters
assert len(challenge) == 32, f"Invalid challenge length: {len(challenge)}"

2. Challenge Freshness

import time

challenge_extracted_at = time.time()

# ... solve with CaptchaAI ...

solve_duration = time.time() - challenge_extracted_at
if solve_duration > 90:
    print(f"Warning: {solve_duration:.0f}s since extraction — challenge may be expired")

3. Solution Completeness

solution = captchaai_result["request"]

# Verify all three values present
assert "geetest_challenge" in solution, "Missing geetest_challenge"
assert "geetest_validate" in solution, "Missing geetest_validate"
assert "geetest_seccode" in solution, "Missing geetest_seccode"

# Verify seccode has correct format
assert "|jordan" in solution["geetest_seccode"], "Missing |jordan suffix"

4. Widget State

# Check if the page refreshed the challenge
current_challenge = page.evaluate("""
    () => document.querySelector('[data-challenge]')?.dataset.challenge
""")

if current_challenge != original_challenge:
    print("Challenge was refreshed — need to re-extract and re-solve")

Error Resolution Decision Tree

GeeTest solve failed
├── CaptchaAI returned ERROR?
│   ├── ERROR_WRONG_USER_KEY → Fix API key
│   ├── ERROR_ZERO_BALANCE → Add funds
│   ├── ERROR_CAPTCHA_UNSOLVABLE → Extract fresh challenge, retry
│   └── ERROR_BAD_PARAMETERS → Check gt/challenge values
│
├── CaptchaAI returned solution but site rejected?
│   ├── Challenge expired → Extract + solve + submit faster
│   ├── Wrong gt → Re-extract from correct element
│   ├── Page refreshed challenge → Block challenge refresh
│   └── Wrong GeeTest version → Verify v3 vs v4
│
└── GeeTest registration failed?
    ├── Offline mode → Handle offline verification
    └── HTTP error → Site-specific issue

GeeTest v3 vs v4 Confusion

Feature v3 v4
Parameter names gt, challenge captcha_id
Registration register.php New registration API
Widget class geetest_holder geetest_v4
CaptchaAI method method=geetest Check documentation for v4 support

If you're seeing errors, verify the page uses v3 (not v4) by checking the GeeTest script URL and widget class.

FAQ

Why does GeeTest fail intermittently?

The most common cause is challenge expiration. GeeTest challenges are short-lived — if the solve takes too long or the page refreshes the challenge, the solution becomes invalid.

How do I handle GeeTest offline mode?

In offline mode (success: 0), the challenge verification happens locally on the site's server rather than through GeeTest's API. CaptchaAI can still solve these challenges — submit as normal.

Can I retry with the same challenge?

No. Each challenge is single-use. After an attempt (successful or not), you must extract a fresh challenge from the page.

Next Steps

Solve GeeTest v3 challenges reliably — get your CaptchaAI API key and implement proper error handling.

Discussions (0)

No comments yet.

Related Posts

Tutorials Solving GeeTest v3 with Node.js and CaptchaAI API
Complete Node.js tutorial for solving Gee Test v 3 slide puzzles with Captcha AI.

Complete Node.js tutorial for solving Gee Test v 3 slide puzzles with Captcha AI. Extract gt/challenge paramet...

Automation Testing GeeTest v3
Apr 01, 2026
Tutorials Browser Console CAPTCHA Detection: Finding Sitekeys and Parameters
Use browser Dev Tools to detect CAPTCHA types, extract sitekeys, and find parameters needed for Captcha AI API requests.

Use browser Dev Tools to detect CAPTCHA types, extract sitekeys, and find all parameters needed for Captcha AI...

Automation Cloudflare Turnstile reCAPTCHA v2
Mar 25, 2026
API Tutorials Solve GeeTest v3 CAPTCHA with Python and CaptchaAI
Step-by-step Python tutorial for solving Gee Test v 3 slide puzzle CAPTCHAs using the Captcha AI API.

Step-by-step Python tutorial for solving Gee Test v 3 slide puzzle CAPTCHAs using the Captcha AI API. Includes...

Python Automation Testing
Mar 23, 2026
API Tutorials Solve GeeTest v3 CAPTCHA with Node.js and CaptchaAI
Step-by-step Node.js tutorial for solving Gee Test v 3 slide puzzle CAPTCHAs using the Captcha AI API.

Step-by-step Node.js tutorial for solving Gee Test v 3 slide puzzle CAPTCHAs using the Captcha AI API. Include...

Automation Testing GeeTest v3
Mar 04, 2026
Explainers GeeTest v3 Challenge-Response Workflow: Technical Deep Dive
A technical deep dive into Gee Test v 3's challenge-response workflow — the registration API, challenge token exchange, slider verification, and how Captcha AI...

A technical deep dive into Gee Test v 3's challenge-response workflow — the registration API, challenge token...

Automation Testing GeeTest v3
Mar 02, 2026
Troubleshooting CaptchaAI Wrong CAPTCHA Type Error: How to Fix
Fix wrong CAPTCHA type errors when using Captcha AI.

Fix wrong CAPTCHA type errors when using Captcha AI. Learn how to identify the correct CAPTCHA type on a page...

Python Automation Cloudflare Turnstile
Feb 28, 2026
Explainers How GeeTest v3 CAPTCHA Works
how Gee Test v 3 CAPTCHA works.

Learn how Gee Test v 3 CAPTCHA works. Understand slide puzzles, icon challenges, the verification flow, and ho...

Automation Testing GeeTest v3
Feb 13, 2026
API Tutorials How to Solve GeeTest v3 CAPTCHA with PHP
Solve Gee Test v 3 CAPTCHA using PHP and Captcha AI API.

Solve Gee Test v 3 CAPTCHA using PHP and Captcha AI API. Complete guide with parameter extraction, task submis...

Automation Testing GeeTest v3
Feb 10, 2026
Troubleshooting Common GeeTest v3 Errors and Fixes
Diagnose the most common Gee Test v 3 errors — stale challenge, bad parameters, validation failures — and fix them with practical troubleshooting steps.

Diagnose the most common Gee Test v 3 errors — stale challenge, bad parameters, validation failures — and fix...

Automation Testing GeeTest v3
Jan 24, 2026
Troubleshooting Turnstile Token Invalid After Solving: Diagnosis and Fixes
Fix Cloudflare Turnstile tokens that come back invalid after solving with Captcha AI.

Fix Cloudflare Turnstile tokens that come back invalid after solving with Captcha AI. Covers token expiry, sit...

Python Cloudflare Turnstile Web Scraping
Apr 08, 2026
Troubleshooting ERROR_PAGEURL: URL Mismatch Troubleshooting Guide
Fix ERROR_PAGEURL when using Captcha AI.

Fix ERROR_PAGEURL when using Captcha AI. Diagnose URL mismatch issues, handle redirects, SPAs, and dynamic URL...

Python Automation Cloudflare Turnstile
Mar 23, 2026