UNLOCK API
Cuadrícula de imágenes

Cuadrícula de imágenes

Cómo enviar una tarea de Cuadrícula de imágenes a UNLOCK API con createTask o in.php: nombres del tipo de tarea, todos los parámetros, el objeto solution, los campos de proxy y ejemplos de código en 7 lenguajes.
Precio
$0.36 $0.00036 por tarea
Envías
La imagen de la cuadrícula en base64 y la instrucción, por ejemplo el objeto que hay que seleccionar
Recibes
Los números de las celdas en las que hay que hacer clic

Resumen y precio

Nombres del tipo de tarea

Este tipo tiene un solo nombre.
GridTask

También se acepta: GridTaskProxyless

Objeto de tarea

type
StringObligatorio
Nombre del tipo de tarea. Se reconoce sin importar mayúsculas o minúsculas. GridTask
body
StringObligatorio
La imagen en base64 (JPG, PNG o GIF), de hasta unos 100 KB. Se permite un prefijo data:.
comment
StringOpcional
Instrucción para el resolvedor, por ejemplo la pregunta que aparece sobre la imagen.
rows
IntegerOpcional
Número de filas de la cuadrícula.
columns
IntegerOpcional
Número de columnas de la cuadrícula.
imgType
StringOpcional
Tipo de imagen, si lo conoces.
previousId
StringOpcional
id de la tarea anterior cuando la cuadrícula cambia después de la primera respuesta.
canSkip
BooleanOpcional
true si la respuesta puede ser que ninguna casilla coincide.

Los campos que no aparecen aquí se pasan al resolvedor tal como se envían.

Solicitud

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

Se devuelve en solution cuando status es ready.
click
Array
Números de las casillas en las que hacer clic, contando desde 1, de izquierda a derecha y de arriba abajo.
POST /getTaskResult
{
  "errorId": 0,
  "taskId": 1001,
  "status": "ready",
  "solution": {
    "click": [
      1,
      4,
      9
    ]
  },
  "cost": "0.00036",
  "createTime": 1791640000,
  "endTime": 1791640014,
  "solveCount": 1
}

Ejemplos 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 formulario in.php

La misma tarea con la solicitud de formulario clásica. res.php devuelve la respuesta 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 formulario: in.php y res.php