Документация API

Справочник по интеграции BuranLabs.

Начало работы

Обзор

API принимает изображение капчи в формате Base64 и возвращает распознанный текст.

Базовый URL:

Base URL
https://buranlabs.com

Все запросы выполняются методом POST. Ответы возвращаются в формате JSON.

Начало работы

Авторизация

Каждый запрос должен содержать заголовок Authorization с API-ключом:

Заголовок
Authorization: Bearer ВАШ_КЛЮЧ

Ключ доступен в личном кабинете. Если заголовок отсутствует или подписка истекла - сервер вернёт ошибку.

Не передавайте ключ в URL-параметрах и не коммитьте его в репозиторий. Используйте переменные окружения.
Эндпоинты

POST /api/solve

Принимает изображение капчи и возвращает распознанный текст.

POST /api/solve Решить капчу

Заголовки запроса

ЗаголовокЗначение
Authorization Bearer <ключ> Required
Content-Type application/json Required

Тело запроса (JSON)

ПараметрТипОписание
image string Изображение капчи в Base64 Required
Справочник

Форматы ответов

Ответ всегда содержит поле status. При успехе добавляются answer и time_ms.

Успешный ответ

JSON
{
  "status":  "ok",
  "comment": "Successful",
  "answer":  "8K4mX",
  "time_ms": 3.25
}
ПолеТипОписание
status string "ok" при успехе, "fail" при ошибке
comment string Текстовое пояснение результата
answer string Распознанный текст капчи
time_ms float Время обработки нейросетью в миллисекундах

Ответ с ошибкой

JSON
{
  "status":  "fail",
  "comment": "Invalid key"
}
Справочник

Коды ответов

200
Капча успешно распознана
400
Неверный формат запроса или Base64
401
Ключ не передан, недействителен или подписка истекла
405
Метод не разрешён - принимается только POST
429
Превышен лимит запросов повторите попытку посже
503
Нейросеть временно недоступна
commentПричина
Invalid key Ключ не найден или подписка истекла
Image required Поле image отсутствует или пустое
Invalid image data Строка не является корректным Base64
Method not allowed Запрос отправлен не методом POST
Neural server unavailable Внутренний сбой - повторите запрос
Neural server error Нейросеть вернула некорректный ответ
Rate limit exceeded Превышен лимит капч/мин для вашего тарифа
Thread limit exceeded Превышен лимит одновременных запросов
Справочник

Лимиты

Лимиты применяются на уровне API-ключа и сбрасываются каждую минуту.

ТарифКапч/минПотоковПриоритет
Минимальный - 59 ₽ 500 5 Стандартный
Средний - 239 ₽ 2 000 20 Средний
Максимальный - 499 ₽ 5 000 50 Максимальный
При превышении лимита API вернёт 429 Too Many Requests. Запросы можно повторить со следующей минуты.
Примеры

Код на разных языках

cURL

cURL
curl -X POST https://buranlabs.com/api/solve \
  -H "Authorization: Bearer ВАШ_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{"image": "'"$(base64 -w0 captcha.png)"'"}'

PHP

PHP
$image = base64_encode(file_get_contents('captcha.png'));
 
$response = file_get_contents('https://buranlabs.com/api/solve', false,
  stream_context_create(['http' => [
    'method'  => 'POST',
    'header'  => "Authorization: Bearer ВАШ_КЛЮЧ\r\n"
               . "Content-Type: application/json\r\n",
    'content' => json_encode(['image' => $image]),
  ]])
);

$result = json_decode($response, true);
echo json_encode($result, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);

Python

Python
import requests
import base64
import json

with open("captcha.png", "rb") as f:
    image = base64.b64encode(f.read()).decode()

response = requests.post(
    "https://buranlabs.com/api/solve",
    headers={"Authorization": "Bearer ВАШ_КЛЮЧ"},
    json={"image": image}
)

data = response.json()
print(json.dumps(data, indent=2, ensure_ascii=False))

JavaScript (Node.js)

JavaScript
const fs = require('fs');
 
const image = fs.readFileSync('captcha.png').toString('base64');

const response = await fetch('https://buranlabs.com/api/solve', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer ВАШ_КЛЮЧ',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ image }),
});

const data = await response.json();
console.log(JSON.stringify(data, null, 2));

Java

Java
import java.net.*;
import java.net.http.*;
import java.nio.file.*;
import java.util.Base64;

byte[] bytes = Files.readAllBytes(Path.of("captcha.png"));
String image = Base64.getEncoder().encodeToString(bytes);

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://buranlabs.com/api/solve"))
    .header("Authorization", "Bearer ВАШ_КЛЮЧ")
    .header("Content-Type", "application/json")
    .POST(HttpRequest.BodyPublishers.ofString(
        "{\"image\": \"" + image + "\"}"
    ))
    .build();

HttpResponse<String> response =
    client.send(request, HttpResponse.BodyHandlers.ofString());

System.out.println(response.body());