Текстовая

Задачи с текстом на картинке.

Пример задания

Введите текст с картинки

Строчные или прописные буквы
Отправить

1. Создание задачи

POSThttps://api.capsola.cloud/create

Запрос

Ключ передаётся в заголовке X-API-Key, тело — JSON.

json
{
  "type": "TextCaptcha",
  "task": "IMAGE_BASE_64"
}
typestring обязательный

Тип задачи — TextCaptcha.

taskbase64 обязательный

Изображение капчи.

app_idstring

Идентификатор приложения разработчика — выдаётся в партнёрском разделе.

Ответ

json
{
  "status": 1,
  "response": "9051d4b4-0000-44d3-a4c2-db0215227862"
}
statusnumber

1 — задача принята, 0 — ошибка.

responsestring

Идентификатор задачи или код ошибки.

2. Получение результата

POSThttps://api.capsola.cloud/result

Запрос

json
{
  "id": "9051d4b4-0000-44d3-a4c2-db0215227862"
}
idstring обязательный

Идентификатор задачи из ответа на /create.

Ответ

json
{
  "status": 1,
  "response": "Фраза для ввода"
}
statusnumber

1 — задача решена, 0 — ошибка.

responsestring

Текст с картинки или код ошибки.

Ответ CAPCHA_NOT_READY означает, что задача ещё решается. Опрашивайте так:

  1. первый запрос — через 1 секунду после /create: у большинства капч ответ к этому моменту уже готов;
  2. дальше — каждые 2 секунды, пока не придёт ответ или другая ошибка, но не дольше 90 секунд.

Подробнее — про соединение, таймауты и повторы — в разделе «Интеграция».


Примеры использования

import base64
import time

import requests

API = 'https://api.capsola.cloud'

# Один клиент на все запросы — соединение переиспользуется.
session = requests.Session()
session.headers['X-API-Key'] = 'API_KEY'


def b64(url):
    return base64.b64encode(requests.get(url, timeout=15).content).decode()


created = session.post(f'{API}/create', json={
    'type': 'TextCaptcha',
    'task': b64('https://capsola.cloud/examples/text/task.png'),
}, timeout=15).json()
print(created)

if created['status'] == 1:
    # Через 1 с, дальше каждые 2 с — не дольше 90 с.
    for delay in [1] + [2] * 45:
        time.sleep(delay)
        result = session.post(f'{API}/result', json={'id': created['response']}, timeout=10).json()
        print(result)
        if result['status'] == 1 or result['response'] != 'CAPCHA_NOT_READY':
            break