UNLOCK API
Image to text

Image to text

How to send a Image to text task to UNLOCK API with createTask or in.php: task type names, every parameter, the solution object, proxy fields and code samples in 7 languages.
Price
$0.25 $0.00025 per task
You send
The image as base64, up to 100 KB
You get
The text on the image

Overview and price

Task type names

This type has one name.
ImageToTextTask

Task object

type
StringRequired
Task type name. Matched in any letter case. ImageToTextTask
body
StringRequired
The image as base64 (JPG, PNG or GIF), up to about 100 KB. A data: prefix is allowed.
phrase
BooleanOptional
true if the answer has two or more words.
case
BooleanOptional
true if letter case matters.
numeric
IntegerOptional
0 any characters, 1 digits only, 2 letters only, 3 digits or letters, 4 digits and letters.
math
BooleanOptional
true if the image shows a sum to calculate.
minLength
IntegerOptional
Shortest possible answer. 0 means no limit.
maxLength
IntegerOptional
Longest possible answer. 0 means no limit.
comment
StringOptional
Instruction for the solver, for example the question shown above the image.
languagePool
StringOptional
Language of the answer, for example en or ru.

Fields not listed here are passed to the solver as sent.

Request

POST /createTask
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "ImageToTextTask",
    "body": "/9j/4AAQSkZJRgABAQ...",
    "case": true
  }
}

Solution object

Returned in solution when status is ready.
text
String
The answer as text.
POST /getTaskResult
{
  "errorId": 0,
  "taskId": 1001,
  "status": "ready",
  "solution": {
    "text": "w93bx"
  },
  "cost": "0.00025",
  "createTime": 1791640000,
  "endTime": 1791640014,
  "solveCount": 1
}

Code samples

import time, requests

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

task = requests.post(f"{API}/createTask", json={
    "clientKey": KEY,
    "task": {
      "type": "ImageToTextTask",
      "body": "/9j/4AAQSkZJRgABAQ...",
      "case": true
    }
}).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"]["text"])
        break
else:
    raise SystemExit("timed out")

in.php form method

The same task with the classic form request. res.php returns the answer as text.
in.php, res.php
curl -s "https://unlock-api.com/in.php" -d "key=YOUR_API_KEY&method=base64&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"}

Form API: in.php and res.php