UNLOCK API
createTask

createTask

创建任务并返回任务 ID。任务被接受时从余额中扣除该任务类型的价格,任务失败则退回。
POSThttps://unlock-api.com/createTask
以 Content-Type: application/json 发送 POST。task 字段取决于任务类型;请参阅“任务类型”。

请求参数

clientKey
String必填
你的 API 密钥,32 个字符,在账户页面上。
task
Object必填
task 对象。其中的 type 字段决定还需要哪些字段。 任务类型
callbackUrl
String可选
公开的 http(s) 地址。任务完成或失败时,结果以 JSON 通过 POST 发送到该地址。
softId
Integer可选
你的应用 ID,随任务一起保存。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
任务 ID。
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")

此方法可能返回的错误