UNLOCK API
createTask

createTask

작업을 만들고 작업 번호를 돌려줘요. 작업이 접수될 때 그 작업 종류의 가격이 잔액에서 빠지고, 실패하면 돌아와요.
POSThttps://unlock-api.com/createTask
Content-Type: application/json으로 POST하세요. task 항목은 작업 종류에 따라 달라요. 작업 종류를 보세요.

요청 항목

clientKey
String필수
계정 화면에 있는 32자 API 키예요.
task
Object필수
task 객체예요. 그 안의 type 항목에 따라 필요한 다른 항목이 정해져요. 작업 종류
callbackUrl
String선택
공개된 http(s) 주소예요. 작업이 끝나거나 실패하면 결과를 그 주소로 JSON POST해요.
softId
Integer선택
내 애플리케이션 번호로, 작업과 함께 저장돼요. appId도 같은 항목으로 받아요.

요청

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

응답

{
  "errorId": 0,
  "taskId": 1001
}

응답 항목

errorId
Integer
요청이 성공하면 0, 실패하면 1이에요.
taskId
Integer
작업 번호예요.
errorCode
String
errorId가 1일 때 오류 이름이에요.
errorDescription
String
오류를 영어로 짧게 설명해요.

코드 예시

import time, requests

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

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

for _ in range(60):   # 60 x 5 s = the 5 minute task limit
    time.sleep(5)
    r = requests.post(f"{API}/getTaskResult", json={"clientKey": KEY, "taskId": task["taskId"]}).json()
    if r["errorId"]:
        raise SystemExit(f"{r['errorCode']}: {r.get('errorDescription', '')}")   # failed tasks are refunded
    if r["status"] == "ready":
        print(r["solution"]["token"])
        break
else:
    raise SystemExit("timed out")

이 메서드가 돌려주는 오류