UNLOCK API
Grade de imagens

Grade de imagens

Como enviar uma tarefa de Grade de imagens para a UNLOCK API com createTask ou in.php: nomes do tipo de tarefa, todos os parâmetros, o objeto solution, os campos de proxy e exemplos de código em 7 linguagens.
Preço
$0.36 $0.00036 por tarefa
Você envia
A imagem da grade em base64 e a instrução, por exemplo o objeto a selecionar
Você recebe
Os números das células a clicar

Visão geral e preço

Nomes do tipo de tarefa

Este tipo tem um único nome.
GridTask

Também aceito: GridTaskProxyless

Objeto da tarefa

type
StringObrigatório
Nome do tipo de tarefa. Reconhecido com letras maiúsculas ou minúsculas. GridTask
body
StringObrigatório
A imagem em base64 (JPG, PNG ou GIF), com até cerca de 100 KB. Um prefixo data: é permitido.
comment
StringOpcional
Instrução para o resolvedor, por exemplo a pergunta mostrada acima da imagem.
rows
IntegerOpcional
Número de linhas da grade.
columns
IntegerOpcional
Número de colunas da grade.
imgType
StringOpcional
Tipo de imagem, se você souber.
previousId
StringOpcional
id da tarefa anterior quando a grade muda depois da primeira resposta.
canSkip
BooleanOpcional
true se a resposta puder ser que nenhum quadro corresponde.

Campos que não aparecem aqui são repassados ao resolvedor como foram enviados.

Requisição

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

Objeto solution

Retornado em solution quando status é ready.
click
Array
Números dos quadros a clicar, contados a partir de 1, da esquerda para a direita e de cima para baixo.
POST /getTaskResult
{
  "errorId": 0,
  "taskId": 1001,
  "status": "ready",
  "solution": {
    "click": [
      1,
      4,
      9
    ]
  },
  "cost": "0.00036",
  "createTime": 1791640000,
  "endTime": 1791640014,
  "solveCount": 1
}

Exemplos de código

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")

Método de formulário in.php

A mesma tarefa com a requisição de formulário clássica. res.php retorna a resposta como texto.
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 de formulário: in.php e res.php