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

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

Как отправить задачу Сетка картинок в UNLOCK API через createTask или in.php: названия типов задач, все параметры, объект solution, поля прокси и примеры кода на 7 языках.
Цена
$0.36 $0.00036 за задачу
Вы отправляете
Картинка сетки в base64 и инструкция, например какой объект выбрать
Вы получаете
Номера ячеек, на которые нужно нажать

Обзор и цена

Названия типов задачи

У этого типа одно название.
GridTask

Также принимается: GridTaskProxyless

Объект задачи

type
StringОбязательный
Название типа задачи. Регистр букв не важен. GridTask
body
StringОбязательный
Картинка в base64 (JPG, PNG или GIF), примерно до 100 KB. Префикс data: допускается.
comment
StringНеобязательный
Инструкция для решателя, например вопрос над картинкой.
rows
IntegerНеобязательный
Число строк в сетке.
columns
IntegerНеобязательный
Число столбцов в сетке.
imgType
StringНеобязательный
Тип картинки, если он известен.
previousId
StringНеобязательный
Id предыдущей задачи, если сетка меняется после первого ответа.
canSkip
BooleanНеобязательный
true, если ответом может быть то, что ни одна плитка не подходит.

Поля, которых здесь нет, передаются решателю как есть.

Запрос

POST /createTask
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "GridTask",
    "body": "/9j/4AAQSkZJRgABAQ...",
    "comment": "Select all squares with traffic lights",
    "rows": 3,
    "columns": 3
  }
}

Объект solution

Возвращается в solution, когда status равен ready.
click
Array
Номера плиток для клика, считая с 1, слева направо и сверху вниз.
POST /getTaskResult
{
  "errorId": 0,
  "taskId": 1001,
  "status": "ready",
  "solution": {
    "click": [
      1,
      4,
      9
    ]
  },
  "cost": "0.00036",
  "createTime": 1791640000,
  "endTime": 1791640014,
  "solveCount": 1
}

Примеры кода

import time, requests

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

task = requests.post(f"{API}/createTask", json={
    "clientKey": KEY,
    "task": {
      "type": "GridTask",
      "body": "/9j/4AAQSkZJRgABAQ...",
      "comment": "Select all squares with traffic lights",
      "rows": 3,
      "columns": 3
    }
}).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"])
        break
else:
    raise SystemExit("timed out")

Метод формы in.php

Та же задача через классический запрос с формой. res.php возвращает ответ текстом.
in.php, res.php
curl -s "https://unlock-api.com/in.php" -d "key=YOUR_API_KEY&method=base64&recaptcha=1&textinstructions=Select+all+traffic+lights&body=BASE64_IMAGE&json=1"
# {"status":1,"request":"1001"}

curl -s "https://unlock-api.com/res.php?key=YOUR_API_KEY&action=get&id=1001&json=1"
# {"status":0,"request":"CAPCHA_NOT_READY"}  then  {"status":1,"request":"ANSWER"}

API форм: in.php и res.php