Contact us on Telegram: @realranker Fast support & inquiries — click to open Telegram

API Documentation

99Captcha uses the standard 2Captcha / ruCaptcha v1 protocol. If your software already supports that protocol, point it at 99captcha.xyz and paste your API key.

Base endpoints

Send all requests over HTTPS to 99captcha.xyz.

POST / GET
Submit task
https://99captcha.xyz/in.php
GET / POST
Get result
https://99captcha.xyz/res.php

Ready-made software

If your tool already supports 2Captcha, you do not need new code. Override the API domain to 99captcha.xyz and use your 99Captcha key.
  1. Open captcha settings in your software.
  2. Choose 2Captcha or ruCaptcha as the provider type.
  3. Paste your 99Captcha API key from the dashboard.
  4. Set the custom API domain / server to 99captcha.xyz.

Captcha methods

Pass one of these values in the method field.

CaptchaFoxcaptchafox
reCAPTCHAuserrecaptcha
hCaptchahcaptcha
Turnstileturnstile
Imagebase64

Step 1 — Submit a task

POST (or GET) parameters to in.php.

ParameterNeedDescription
keyRequiredYour 32-character API key
methodRequiredCaptcha type from the list above
sitekeyRequired*Site key from the target page
pageurlRequired*Full URL of the page with the captcha
proxyOptionalIP:PORT or user:pass@IP:PORT
proxytypeOptionalHTTP, SOCKS4, or SOCKS5
userAgentOptionalBrowser user-agent your client uses
bodyImagesBase64 image body when method=base64
SuccessOK|123456789
The number is your Task ID.
ErrorsERROR_ZERO_BALANCE
Also: ERROR_WRONG_SITEKEY, ERROR_KEY_DOES_NOT_EXIST

Step 2 — Get the result

Wait 3 seconds, then poll res.php until the token is ready.

Example: https://99captcha.xyz/res.php?key=YOUR_KEY&action=get&id=TASK_ID
Still solvingCAPCHA_NOT_READY
Wait 3 seconds and request again.
SuccessOK|token_string
Use the token in your client.

Balance & reports

ActionRequestWhat it does
getbalanceres.php?key=KEY&action=getbalanceReturns your current balance
reportgoodaction=reportgood&id=TASK_IDMark a token as good
reportbadaction=reportbad&id=TASK_IDRefund a failed solve

Python example

Drop-in polling client. Replace the API key from your dashboard.

import requests, time

API_KEY = "YOUR_99CAPTCHA_API_KEY"
IN_URL = "https://99captcha.xyz/in.php"
RES_URL = "https://99captcha.xyz/res.php"

def solve_captcha(site_key, page_url, method="captchafox"):
    payload = {
        "key": API_KEY,
        "method": method,
        "sitekey": site_key,
        "pageurl": page_url,
    }
    submit = requests.post(IN_URL, data=payload, timeout=20)
    if "OK|" not in submit.text:
        raise RuntimeError(submit.text)

    task_id = submit.text.split("|", 1)[1]
    for _ in range(40):
        time.sleep(3)
        result = requests.get(
            RES_URL,
            params={"key": API_KEY, "action": "get", "id": task_id},
            timeout=20,
        )
        text = result.text.strip()
        if text.startswith("OK|"):
            return text.split("|", 1)[1]
        if text != "CAPCHA_NOT_READY":
            raise RuntimeError(text)
    raise TimeoutError("Captcha was not ready in time")