UNLOCK API
Grille d'images

Grille d'images

Comment envoyer une tâche Grille d'images à UNLOCK API avec createTask ou in.php : noms du type de tâche, tous les paramètres, l'objet solution, les champs proxy et des exemples de code dans 7 langages.
Prix
$0.36 $0.00036 par tâche
Vous envoyez
L'image de la grille en base64 et la consigne, par exemple l'objet à sélectionner
Vous recevez
Les numéros des cases à cliquer

Présentation et prix

Noms du type de tâche

Ce type n'a qu'un seul nom.
GridTask

Également accepté: GridTaskProxyless

Objet tâche

type
StringObligatoire
Nom du type de tâche. Reconnu quelle que soit la casse. GridTask
body
StringObligatoire
L'image en base64 (JPG, PNG ou GIF), jusqu'à environ 100 KB. Un préfixe data: est accepté.
comment
StringFacultatif
Consigne pour le résolveur, par exemple la question affichée au-dessus de l'image.
rows
IntegerFacultatif
Nombre de lignes de la grille.
columns
IntegerFacultatif
Nombre de colonnes de la grille.
imgType
StringFacultatif
Type d'image, si vous le connaissez.
previousId
StringFacultatif
id de la tâche précédente quand la grille change après la première réponse.
canSkip
BooleanFacultatif
true si la réponse peut être qu'aucune case ne correspond.

Les champs qui ne figurent pas ici sont transmis au résolveur tels qu'envoyés.

Requête

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

Objet solution

Renvoyé dans solution quand status vaut ready.
click
Array
Numéros des cases à cliquer, comptés à partir de 1, de gauche à droite et de haut en bas.
POST /getTaskResult
{
  "errorId": 0,
  "taskId": 1001,
  "status": "ready",
  "solution": {
    "click": [
      1,
      4,
      9
    ]
  },
  "cost": "0.00036",
  "createTime": 1791640000,
  "endTime": 1791640014,
  "solveCount": 1
}

Exemples de code

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éthode formulaire in.php

La même tâche avec la requête de formulaire classique. res.php renvoie la réponse en texte.
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 formulaire : in.php et res.php