UNLOCK API

Tài liệu tham khảo API giải CAPTCHA

Hai định dạng request, một tài khoản. Dùng các phương thức JSON (createTask, getTaskResult, getBalance) hoặc các phương thức form kiểu cũ (in.php, res.php). Cả hai đều dùng API key trên trang tài khoản và chung một số dư.

Cơ bản

URL gốc
https://unlock-api.com
API key
32 ký tự, có trên trang tài khoản. Gửi dưới dạng clientKey (JSON) hoặc key (in.php, res.php).
Định dạng
Phương thức JSON: POST với body JSON. in.php và res.php: trường form qua GET hoặc POST; thêm json=1 để nhận phản hồi JSON.
Giới hạn
1.200 request mỗi phút cho mỗi tài khoản, tính cả lượt kiểm tra kết quả. Chờ khoảng 5 giây sau khi tạo tác vụ, rồi kiểm tra mỗi 5 giây.
Thời gian tối đa
Tác vụ không giải xong trong 5 phút sẽ lỗi với ERROR_CAPTCHA_UNSOLVABLE và tiền được trả lại vào số dư.
Tính phí
Giá tác vụ bị trừ khi tác vụ được tạo. Tác vụ lỗi được hoàn tiền tự động.

Bắt đầu nhanh

Giải reCAPTCHA v2 bằng các phương thức JSON. Thay YOUR_API_KEY bằng key của bạn.

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

Phương thức JSON

POST /createTask Tạo tác vụ

Body: clientKey và một object task. Loại tác vụ quyết định các trường còn lại; xem Loại tác vụ. Phản hồi: errorId 0 và taskId, hoặc errorId 1 kèm 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 Lấy kết quả

Body: clientKey và taskId. Khi tác vụ đang chạy: status processing. Khi xong: status ready kèm solution và cost. Tác vụ lỗi trả về errorId 1 kèm 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 Xem số dư

Body: clientKey. Phản hồi: số dư bằng đô la Mỹ.

{"clientKey":"YOUR_API_KEY"}

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

Báo kết quả sai

reportIncorrectRecaptcha và reportIncorrectImageCaptcha nhận clientKey và taskId và trả về success. Chúng được chấp nhận để tương thích với các thư viện hiện có; báo cáo không làm thay đổi số tiền đã trừ.

Phương thức form (in.php, res.php)

Gửi tác vụ: in.php

Trường: key, method và các trường của loại CAPTCHA. Phản hồi: OK|ID, hoặc với json=1 là {"status":1,"request":"ID"}. Lỗi được trả về bằng tên, ví dụ 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"}

Lấy kết quả: res.php

action=get&id=ID trả về OK|ANSWER khi đã giải và CAPCHA_NOT_READY khi đang xử lý. action=get2 kèm thêm cost. ids=ID1,ID2 kiểm tra tối đa 100 tác vụ một lúc. action=getbalance trả về số dư. action=reportbad và reportgood được chấp nhận.

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

Phương thức khác

POST /getToken Tạo và chờ: getToken

Body giống createTask. Lệnh gọi chờ tối đa 50 giây và trả về phản hồi giống getTaskResult. Nếu tác vụ vẫn đang chạy, phản hồi là status processing kèm taskId; hãy tiếp tục kiểm tra bằng 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"}

Callback kết quả

Thêm callbackUrl vào createTask (hoặc pingback vào in.php) và kết quả sẽ được gửi tới đó khi tác vụ xong: body JSON giống getTaskResult kèm taskId, hoặc với in.php là body form id=…&code=…. Chỉ gọi tới địa chỉ công khai, một lần, thời gian chờ 5 giây; kết quả vẫn lấy được bằng cách kiểm tra như thường.

{"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"}

Thống kê

getQueueStats trả về số tác vụ đang chờ và đang giải cùng thời gian giải trung bình trong giờ qua. getSpendingStats trả về số lượng và số tiền theo từng giờ trong một ngày UTC (date dạng unix time). test trả lại đúng body nó nhận được.

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}}

Danh sách IP được phép

Nếu bạn đặt danh sách IP được phép trên trang tài khoản, request từ IP khác sẽ nhận ERROR_IP_NOT_ALLOWED.

Loại tác vụ

Mỗi loại có một tên không proxy và một tên có proxy (bỏ chữ Proxyless). Tên được nhận không phân biệt hoa thường và theo cả cách viết mà các API giải CAPTCHA khác dùng. Tác vụ có proxy cần thêm proxyType (http, socks4, socks5), proxyAddress và proxyPort, hoặc một chuỗi proxy như http://user:[email protected]:8080. Các trường tùy chọn không liệt kê ở đây được chuyển nguyên cho trình giải.

reCAPTCHA v2

Chi tiết

RecaptchaV2TaskProxylessRecaptchaV2Task

Trường

websiteURL (bắt buộc)websiteKey (bắt buộc)

reCAPTCHA v2 Enterprise

Chi tiết

RecaptchaV2EnterpriseTaskProxylessRecaptchaV2EnterpriseTask

Trường

websiteURL (bắt buộc)websiteKey (bắt buộc)

reCAPTCHA v3

Chi tiết

RecaptchaV3TaskProxylessRecaptchaV3Task

Trường

websiteURL (bắt buộc)websiteKey (bắt buộc)

Cloudflare Turnstile

Chi tiết

TurnstileTaskProxylessTurnstileTask

Trường

websiteURL (bắt buộc)websiteKey (bắt buộc)

GeeTest v3 / v4

Chi tiết

GeeTestTaskProxylessGeeTestTask

Trường

websiteURL (bắt buộc)

FunCaptcha (Arkose Labs)

Chi tiết

FunCaptchaTaskProxylessFunCaptchaTask

Trường

websiteURL (bắt buộc)websitePublicKey (bắt buộc)

Amazon AWS WAF

Chi tiết

AmazonTaskProxylessAmazonTask

Trường

websiteURL (bắt buộc)websiteKey (bắt buộc)

MTCaptcha

Chi tiết

MtCaptchaTaskProxylessMtCaptchaTask

Trường

websiteURL (bắt buộc)websiteKey (bắt buộc)

Friendly Captcha

Chi tiết

FriendlyCaptchaTaskProxylessFriendlyCaptchaTask

Trường

websiteURL (bắt buộc)websiteKey (bắt buộc)

Lemin Cropped Captcha

Chi tiết

LeminTaskProxylessLeminTask

Trường

websiteURL (bắt buộc)captchaId (bắt buộc)divId (bắt buộc)

DataDome

Chi tiết

DataDomeSliderTask

Trường

websiteURL (bắt buộc)captchaUrl (bắt buộc)userAgent (bắt buộc)

KeyCaptcha

Chi tiết

KeyCaptchaTaskProxylessKeyCaptchaTask

Trường

websiteURL (bắt buộc)s_s_c_user_id (bắt buộc)s_s_c_session_id (bắt buộc)s_s_c_web_server_sign (bắt buộc)s_s_c_web_server_sign2 (bắt buộc)

Capy Puzzle

Chi tiết

CapyTaskProxylessCapyTask

Trường

websiteURL (bắt buộc)websiteKey (bắt buộc)

Trang Cloudflare Challenge

Chi tiết

AntiCloudflareTask

Trường

websiteURL (bắt buộc)

Cutcaptcha

Chi tiết

CutCaptchaTaskProxylessCutCaptchaTask

Trường

websiteURL (bắt buộc)

CyberSiARA

Chi tiết

AntiCyberSiAraTaskProxylessAntiCyberSiAraTask

Trường

websiteURL (bắt buộc)

atbCAPTCHA

Chi tiết

AtbCaptchaTaskProxylessAtbCaptchaTask

Trường

websiteURL (bắt buộc)

Tencent Captcha

Chi tiết

TencentTaskProxylessTencentTask

Trường

websiteURL (bắt buộc)

Prosopo Procaptcha

Chi tiết

ProsopoTaskProxylessProsopoTask

Trường

websiteURL (bắt buộc)websiteKey (bắt buộc)

CaptchaFox

Chi tiết

CaptchaFoxTaskProxylessCaptchaFoxTask

Trường

websiteURL (bắt buộc)websiteKey (bắt buộc)

AltchaTaskProxylessAltchaTask

Trường

websiteURL (bắt buộc)

NetEase Yidun

Chi tiết

YidunTaskProxylessYidunTask

Trường

websiteURL (bắt buộc)websiteKey (bắt buộc)

Yandex SmartCaptcha

Chi tiết

YandexSmartCaptchaTaskProxylessYandexSmartCaptchaTask

Trường

websiteURL (bắt buộc)websiteKey (bắt buộc)

VK Captcha

Chi tiết

VKCaptchaTaskProxylessVKCaptchaTask

Trường

websiteURL (bắt buộc)

Binance Captcha

Chi tiết

BinanceTaskProxylessBinanceTask

Trường

websiteURL (bắt buộc)websiteKey (bắt buộc)

Tác vụ tùy chỉnh (Imperva, Temu và các loại khác)

Chi tiết

CustomTask

Trường

class (bắt buộc)

Ảnh sang chữ

Chi tiết

ImageToTextTask

Trường

body (bắt buộc)

Câu hỏi văn bản

Chi tiết

TextCaptchaTask

Trường

comment (bắt buộc)

Lưới ảnh

Chi tiết

GridTask

Trường

body (bắt buộc)

Tọa độ bấm

Chi tiết

CoordinatesTask

Trường

body (bắt buộc)

Xoay ảnh

Chi tiết

RotateTask

Trường

body (bắt buộc)

Âm thanh

Chi tiết

AudioTask

Trường

body (bắt buộc)

Khoanh vùng vật thể

Chi tiết

BoundingBoxTask

Trường

body (bắt buộc)

Vẽ viền quanh

Chi tiết

DrawAroundTask

Trường

body (bắt buộc)

Kéo và thả

Chi tiết

DragAndDropTask

Trường

Tác vụ ảnh phức tạp

Chi tiết

ComplexImageTask

Trường

class (bắt buộc)

Lỗi

Cùng tên lỗi ở cả hai định dạng. Request bị từ chối do lỗi không bị tính phí.

LỗiÝ nghĩa và cách xử lý
ERROR_KEY_DOES_NOT_EXISTKey sai. Hãy sao chép lại từ trang tài khoản. (in.php và res.php: ERROR_WRONG_USER_KEY)
ERROR_ZERO_BALANCESố dư không đủ cho tác vụ. Hãy nạp thêm; chưa có khoản nào bị trừ.
ERROR_NO_SLOT_AVAILABLEHiện có quá nhiều request nên không nhận được tác vụ. Thử lại sau vài giây; chưa có khoản nào bị trừ.
ERROR_TASK_NOT_SUPPORTEDLoại tác vụ không xác định hoặc đang tắt. Kiểm tra lại tên loại.
ERROR_BAD_PARAMETERSThiếu một trường bắt buộc hoặc trường sai định dạng.
ERROR_PAGEURLThiếu websiteURL hoặc pageurl, hoặc không phải địa chỉ http(s) đầy đủ.
ERROR_GOOGLEKEYThiếu googlekey trong request reCAPTCHA qua in.php.
ERROR_BAD_PROXYTác vụ có proxy cần proxyAddress và proxyPort.
ERROR_ZERO_CAPTCHA_FILESIZEThiếu ảnh hoặc ảnh quá nhỏ.
ERROR_TOO_BIG_CAPTCHA_FILESIZEẢnh lớn hơn 100 KB.
ERROR_IMAGE_TYPE_NOT_SUPPORTEDẢnh không phải base64 hợp lệ.
ERROR_WRONG_CAPTCHA_IDKhông có tác vụ nào với id này trong tài khoản của bạn.
CAPCHA_NOT_READYChỉ với in.php và res.php: tác vụ vẫn đang chạy. Kiểm tra lại sau 5 giây.
ERROR_CAPTCHA_UNSOLVABLEKhông giải được tác vụ kịp thời gian. Tiền đã được trả lại vào số dư.
ERROR_TOO_MANY_REQUESTSQuá nhiều request. Hãy giãn lượt kiểm tra kết quả ra mỗi 5 giây.
ERROR_IP_NOT_ALLOWEDRequest đến từ IP không có trong danh sách được phép của tài khoản. Hãy thêm IP trên trang tài khoản.