Начало работы
Обзор
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());