🔌 99Captcha API Integration Guide

Integrate our solving service into your bots and scripts.

Good News! Our system is 100% compatible with the standard 2Captcha / ruCaptcha v1 API protocol. If your software already supports 2Captcha, you do not need to write new code!

🌐 Base API Endpoints

All API requests must be made via HTTP GET or POST to the following endpoints:

Submit Task: http://99captcha.site/in.php
Get Result: http://99captcha.site/res.php

⚙️ Method 1: Using Ready-Made Software

If you are using commercial automation software (like Mailbot, BAS, ZennoPoster, or OpenBullet), integration takes just 10 seconds:

  1. Open your software's Captcha Settings.
  2. Select 2Captcha or ruCaptcha as your default provider.
  3. Paste your 99Captcha API Key.
  4. Find the setting for "API Domain Override" or "Custom Server" and enter: 99captcha.site

Note: If your software does not have a domain override setting, simply open your Windows hosts file (C:\Windows\System32\drivers\etc\hosts) and add this line to redirect traffic to us: [YOUR_SERVER_IP] 2captcha.com

💻 Method 2: Custom Code Integration

If you are writing a custom script in Python, PHP, Node.js, etc., our API uses the industry-standard two-step polling process.

Step 1: Submit the Captcha Task

Send a request to in.php to submit your captcha details.

Parameter Required Description
keyYesYour 32-character API Key.
methodYesThe captcha type (e.g., captchafox, userrecaptcha, hcaptcha).
sitekeyYesThe sitekey or website key found on the target page.
pageurlYesThe full URL of the page where the captcha is located.
proxyOptionalYour proxy in IP:PORT or user:pass@IP:PORT format.
proxytypeOptionalThe type of proxy (HTTP, SOCKS4, or SOCKS5).
userAgentOptionalThe exact User-Agent your automated browser is using.

Success Response: OK|123456789 (The number is your Task ID)

Error Response: ERROR_ZERO_BALANCE, ERROR_WRONG_SITEKEY, etc.

Step 2: Retrieve the Solved Token

Wait 3 to 5 seconds, then poll res.php using the Task ID you received in Step 1.

Parameter Required Description
keyYesYour 32-character API Key.
actionYesMust be set to exactly get.
idYesThe Task ID you received from Step 1.

Still Solving: CAPCHA_NOT_READY (Wait 3 seconds and request again)

Success Response: OK|0x_solved_token_string_here

🐍 Example Code (Python)

Use this drop-in Python snippet to start solving captchas immediately:

import requests
import time

API_KEY = "YOUR_99CAPTCHA_API_KEY"

def solve_captcha(site_key, page_url, proxy=None, user_agent=None):
    # 1. Submit the task
    payload = {
        "key": API_KEY,
        "method": "captchafox", # Change depending on captcha type
        "sitekey": site_key,
        "pageurl": page_url
    }
    
    if proxy:
        payload["proxy"] = proxy
        payload["proxytype"] = "SOCKS5"
    if user_agent:
        payload["userAgent"] = user_agent

    print("Submitting task to 99captcha.site...")
    submit_res = requests.post("http://99captcha.site/in.php", data=payload, timeout=15)
    
    if "OK|" not in submit_res.text:
        print(f"Failed to submit: {submit_res.text}")
        return None
        
    task_id = submit_res.text.split("|")[1]
    print(f"Task created! ID: {task_id}")
    
    time.sleep(3) # Wait before first poll
    
    # 2. Poll for the result
    res_url = f"http://99captcha.site/res.php?key={API_KEY}&action=get&id={task_id}"
    
    for _ in range(40): # Poll 40 times maximum
        answer_res = requests.get(res_url, timeout=15)
        answer_text = answer_res.text.strip()
        
        if "OK|" in answer_text:
            token = answer_text.split("|", 1)[1]
            print("Captcha solved successfully!")
            return token
        elif answer_text == "CAPCHA_NOT_READY":
            time.sleep(3)
        else:
            print(f"Solver Error: {answer_text}")
            return None
            
    return None

# Example Usage:
# token = solve_captcha("sk_vKdD...", "https://signup.gmx.com/")

© 2026 99Captcha API. All rights reserved.