UNLOCK API

Справочник API для решения капчи

Два формата запросов, один аккаунт. Используйте методы JSON (createTask, getTaskResult, getBalance) или классические методы с формами (in.php, res.php). Оба работают с API-ключом со страницы аккаунта и с одним балансом.

Основы

Базовый URL
https://unlock-api.com
API-ключ
32 символа, на странице аккаунта. Передавайте его как clientKey (JSON) или key (in.php, res.php).
Формат
Методы JSON: POST с телом в JSON. in.php и res.php: поля формы через GET или POST; добавьте json=1 для ответов в JSON.
Лимиты
1200 запросов в минуту на аккаунт, включая проверки результата. После создания задачи подождите около 5 секунд, затем проверяйте каждые 5 секунд.
Лимит времени
Задача, не решённая за 5 минут, завершается ошибкой ERROR_CAPTCHA_UNSOLVABLE, и деньги за неё возвращаются на баланс.
Оплата
Цена задачи списывается при её создании. Неудачные задачи возвращаются автоматически.

Быстрый старт

Решите reCAPTCHA v2 через методы JSON. Замените YOUR_API_KEY своим ключом.

import time, requests

API = "https://unlock-api.com"
KEY = "YOUR_API_KEY"

task = requests.post(f"{API}/createTask", json={
  "clientKey": KEY,
  "task": {
      "type": "RecaptchaV2TaskProxyless",
      "websiteURL": "https://example.com/login",
      "websiteKey": "6LcR_RsTAAAAAFJR_5ZdbQd0SMxL7yIDmSXH1-lo"
    }
}).json()
if task["errorId"]:
    raise SystemExit(task["errorCode"])

while True:
    time.sleep(5)
    r = requests.post(f"{API}/getTaskResult", json={"clientKey": KEY, "taskId": task["taskId"]}).json()
    if r["errorId"]:
        raise SystemExit(r["errorCode"])   # failed tasks are refunded
    if r["status"] == "ready":
        print(r["solution"]["gRecaptchaResponse"])
        break

Методы JSON

POST /createTask Создать задачу

Тело: clientKey и объект task. Остальные поля зависят от типа задачи, смотрите «Типы задач». Ответ: errorId 0 и taskId или errorId 1 с errorCode.

POST https://unlock-api.com/createTask
{"clientKey":"YOUR_API_KEY","task":{"type":"TurnstileTaskProxyless","websiteURL":"https://example.com","websiteKey":"0x4AAAAAAAC3DHQFLr1GavRN"}}

{"errorId":0,"taskId":1001}
{"errorId":1,"errorCode":"ERROR_ZERO_BALANCE","errorDescription":"..."}

POST /getTaskResult Получить результат

Тело: clientKey и taskId. Пока задача выполняется: status processing. Когда готово: status ready с solution и стоимостью. Неудачная задача отвечает errorId 1 со своим errorCode.

POST https://unlock-api.com/getTaskResult
{"clientKey":"YOUR_API_KEY","taskId":1001}

{"errorId":0,"status":"processing"}
{"errorId":0,"status":"ready","solution":{"token":"0.zrSnRHO7h0..."},"cost":"0.0012","createTime":1791640000,"endTime":1791640011,"solveCount":1}

POST /getBalance Получить баланс

Тело: clientKey. Ответ: баланс в долларах США.

{"clientKey":"YOUR_API_KEY"}

{"errorId":0,"balance":42.5}

Сообщить о неверном ответе

reportIncorrectRecaptcha и reportIncorrectImageCaptcha принимают clientKey и taskId и отвечают success. Они поддерживаются для совместимости с существующими библиотеками; жалоба не меняет списание.

Методы с формами (in.php, res.php)

Отправить задачу: in.php

Поля: key, method и поля нужного типа капчи. Ответ: OK|ID или с json=1 {"status":1,"request":"ID"}. Ошибки возвращаются своими названиями, например ERROR_ZERO_BALANCE.

POST https://unlock-api.com/in.php
key=YOUR_API_KEY&method=hcaptcha&sitekey=SITE_KEY&pageurl=https://example.com&json=1

OK|1001
{"status":1,"request":"1001"}

Получить ответ: res.php

action=get&id=ID возвращает OK|ANSWER, когда задача решена, и CAPCHA_NOT_READY, пока она в работе. action=get2 добавляет стоимость. ids=ID1,ID2 проверяет до 100 задач за раз. action=getbalance возвращает баланс. action=reportbad и reportgood принимаются.

GET https://unlock-api.com/res.php?key=YOUR_API_KEY&action=get&id=1001
CAPCHA_NOT_READY
OK|P1_eyJ0eXAiOiJKV1Qi...

GET https://unlock-api.com/res.php?key=YOUR_API_KEY&action=getbalance
42.5

Другие методы

POST /getToken Создать и дождаться: getToken

Тело такое же, как у createTask. Вызов ждёт до 50 секунд и возвращает тот же ответ, что и getTaskResult. Если задача ещё выполняется, в ответе будет status processing с её taskId; продолжайте опрашивать getTaskResult.

POST https://unlock-api.com/getToken
{"clientKey":"YOUR_API_KEY","task":{"type":"TurnstileTaskProxyless","websiteURL":"https://example.com","websiteKey":"0x4AAAA..."}}

{"errorId":0,"taskId":1001,"status":"ready","solution":{"token":"0.zrSnRHO7h0..."},"cost":"0.000725"}

Колбэки с результатом

Добавьте callbackUrl в createTask (или pingback в in.php), и результат придёт туда, когда задача завершится: тело в JSON, как у getTaskResult, с taskId, а для in.php тело формы id=…&code=…. Вызываются только публичные адреса, один раз, с таймаутом 5 секунд; результат также остаётся доступным через опрос.

{"clientKey":"YOUR_API_KEY","callbackUrl":"https://your.server/captcha-result","task":{...}}

POST https://your.server/captcha-result
{"errorId":0,"taskId":1001,"status":"ready","solution":{...},"cost":"0.0005"}

Статистика

getQueueStats возвращает число задач в очереди и в работе сейчас и среднее время решения за последний час. getSpendingStats возвращает ваш объём и расходы по часам за одни сутки по UTC (date в формате unix time). test возвращает полученное тело без изменений.

POST https://unlock-api.com/getQueueStats     {"clientKey":"..."}  ->  {"errorId":0,"waiting":3,"solving":12,"speed":6.4,"total":15}
POST https://unlock-api.com/getSpendingStats  {"clientKey":"...","date":1791590400}  ->  {"errorId":0,"data":[{"dateFrom":...,"volume":120,"money":0.06},...]}
POST https://unlock-api.com/test              {"anything":1}  ->  {"errorId":0,"received":{"anything":1}}

Список разрешённых IP

Если на странице аккаунта задан список разрешённых IP, запросы с других IP получают ERROR_IP_NOT_ALLOWED.

Типы задач

У каждого типа есть название без прокси и название с прокси (без Proxyless). Названия распознаются в любом регистре и в написаниях, которые используют другие API для решения капчи. Задачам с прокси также нужны proxyType (http, socks4, socks5), proxyAddress и proxyPort или одна строка прокси вида http://user:[email protected]:8080. Необязательные поля, не указанные здесь, передаются решателю как есть.

reCAPTCHA v2

Подробнее

RecaptchaV2TaskProxylessRecaptchaV2Task

Поля

websiteURL (обязательно)websiteKey (обязательно)

reCAPTCHA v2 Enterprise

Подробнее

RecaptchaV2EnterpriseTaskProxylessRecaptchaV2EnterpriseTask

Поля

websiteURL (обязательно)websiteKey (обязательно)

reCAPTCHA v3

Подробнее

RecaptchaV3TaskProxylessRecaptchaV3Task

Поля

websiteURL (обязательно)websiteKey (обязательно)

Cloudflare Turnstile

Подробнее

TurnstileTaskProxylessTurnstileTask

Поля

websiteURL (обязательно)websiteKey (обязательно)

GeeTest v3 / v4

Подробнее

GeeTestTaskProxylessGeeTestTask

Поля

websiteURL (обязательно)

FunCaptcha (Arkose Labs)

Подробнее

FunCaptchaTaskProxylessFunCaptchaTask

Поля

websiteURL (обязательно)websitePublicKey (обязательно)

Amazon AWS WAF

Подробнее

AmazonTaskProxylessAmazonTask

Поля

websiteURL (обязательно)websiteKey (обязательно)

MtCaptchaTaskProxylessMtCaptchaTask

Поля

websiteURL (обязательно)websiteKey (обязательно)

Friendly Captcha

Подробнее

FriendlyCaptchaTaskProxylessFriendlyCaptchaTask

Поля

websiteURL (обязательно)websiteKey (обязательно)

Lemin Cropped Captcha

Подробнее

LeminTaskProxylessLeminTask

Поля

websiteURL (обязательно)captchaId (обязательно)divId (обязательно)

DataDomeSliderTask

Поля

websiteURL (обязательно)captchaUrl (обязательно)userAgent (обязательно)

KeyCaptchaTaskProxylessKeyCaptchaTask

Поля

websiteURL (обязательно)s_s_c_user_id (обязательно)s_s_c_session_id (обязательно)s_s_c_web_server_sign (обязательно)s_s_c_web_server_sign2 (обязательно)

CapyTaskProxylessCapyTask

Поля

websiteURL (обязательно)websiteKey (обязательно)

Страница проверки Cloudflare Challenge

Подробнее

AntiCloudflareTask

Поля

websiteURL (обязательно)

CutCaptchaTaskProxylessCutCaptchaTask

Поля

websiteURL (обязательно)

AntiCyberSiAraTaskProxylessAntiCyberSiAraTask

Поля

websiteURL (обязательно)

AtbCaptchaTaskProxylessAtbCaptchaTask

Поля

websiteURL (обязательно)

Tencent Captcha

Подробнее

TencentTaskProxylessTencentTask

Поля

websiteURL (обязательно)

Prosopo Procaptcha

Подробнее

ProsopoTaskProxylessProsopoTask

Поля

websiteURL (обязательно)websiteKey (обязательно)

CaptchaFoxTaskProxylessCaptchaFoxTask

Поля

websiteURL (обязательно)websiteKey (обязательно)

AltchaTaskProxylessAltchaTask

Поля

websiteURL (обязательно)

NetEase Yidun

Подробнее

YidunTaskProxylessYidunTask

Поля

websiteURL (обязательно)websiteKey (обязательно)

Yandex SmartCaptcha

Подробнее

YandexSmartCaptchaTaskProxylessYandexSmartCaptchaTask

Поля

websiteURL (обязательно)websiteKey (обязательно)

VKCaptchaTaskProxylessVKCaptchaTask

Поля

websiteURL (обязательно)

Binance Captcha

Подробнее

BinanceTaskProxylessBinanceTask

Поля

websiteURL (обязательно)websiteKey (обязательно)

Своя задача (Imperva, Temu и другие)

Подробнее

CustomTask

Поля

class (обязательно)

Текст с картинки

Подробнее

ImageToTextTask

Поля

body (обязательно)

Текстовый вопрос

Подробнее

TextCaptchaTask

Поля

comment (обязательно)

Сетка картинок

Подробнее

GridTask

Поля

body (обязательно)

Координаты клика

Подробнее

CoordinatesTask

Поля

body (обязательно)

Поворот

Подробнее

RotateTask

Поля

body (обязательно)

AudioTask

Поля

body (обязательно)

Выделение рамкой

Подробнее

BoundingBoxTask

Поля

body (обязательно)

Обводка

Подробнее

DrawAroundTask

Поля

body (обязательно)

Перетаскивание

Подробнее

DragAndDropTask

Поля

Сложная задача с картинками

Подробнее

ComplexImageTask

Поля

class (обязательно)

Ошибки

Названия одинаковые в обоих форматах. Запросы, отклонённые с ошибкой, не оплачиваются.

ОшибкаЧто значит и что делать
ERROR_KEY_DOES_NOT_EXISTНеверный ключ. Скопируйте его заново со страницы аккаунта. (in.php и res.php: ERROR_WRONG_USER_KEY)
ERROR_ZERO_BALANCEНа балансе не хватает денег для задачи. Пополните баланс; ничего не списано.
ERROR_NO_SLOT_AVAILABLEСейчас слишком много запросов, поэтому задачу не удалось принять. Попробуйте снова через несколько секунд; ничего не списано.
ERROR_TASK_NOT_SUPPORTEDТип задачи неизвестен или отключён. Проверьте название типа.
ERROR_BAD_PARAMETERSОбязательное поле отсутствует или имеет неверный формат.
ERROR_PAGEURLwebsiteURL или pageurl отсутствует или не является полным адресом http(s).
ERROR_GOOGLEKEYВ запросе reCAPTCHA через in.php нет googlekey.
ERROR_BAD_PROXYЗадаче с прокси нужны proxyAddress и proxyPort.
ERROR_ZERO_CAPTCHA_FILESIZEКартинки нет или она слишком маленькая.
ERROR_TOO_BIG_CAPTCHA_FILESIZEКартинка больше 100 КБ.
ERROR_IMAGE_TYPE_NOT_SUPPORTEDКартинка не является корректным base64.
ERROR_WRONG_CAPTCHA_IDВ вашем аккаунте нет задачи с таким id.
CAPCHA_NOT_READYТолько in.php и res.php: задача ещё выполняется. Проверьте снова через 5 секунд.
ERROR_CAPTCHA_UNSOLVABLEЗадачу не удалось решить вовремя. Деньги за неё вернулись на баланс.
ERROR_TOO_MANY_REQUESTSСлишком много запросов. Проверяйте результат не чаще раза в 5 секунд.
ERROR_IP_NOT_ALLOWEDЗапрос пришёл с IP, которого нет в списке разрешённых для аккаунта. Добавьте этот IP на странице аккаунта.