API Документация
(в разработке)

Полное руководство по интеграции с платформой Arbitutor

v1.0

Введение

Arbitutor API предоставляет программный доступ к функциям платформы обучения криптоарбитражу. С помощью API вы можете:

  • Получать данные сканера арбитражных связок в реальном времени
  • Управлять профилем пользователя и прогрессом обучения
  • Получать аналитику и статистику по сделкам
  • Интегрировать ИИ-наставника в сторонние приложения
  • Автоматизировать торговые стратегии
📘 Базовый URL:
https://api.arbitutor.ru/v2
📊 Формат данных: JSON
🔒 Протокол: HTTPS only
⚡ Rate Limit: 100 запросов в минуту

Аутентификация

Все запросы к API требуют аутентификации с использованием API-ключа. Ключ передается в заголовке Authorization.

Получение API-ключа

1. Войдите в личный кабинет на платформе Arbitutor
2. Перейдите в раздел "Настройки" → "API"
3. Нажмите "Создать новый ключ"
4. Скопируйте ключ и сохраните в безопасном месте

⚠️ Важно: Никогда не передавайте API-ключ третьим лицам и не публикуйте его в публичных репозиториях. Ключ дает полный доступ к вашему аккаунту.

Использование ключа

HTTP Header
Authorization: Bearer YOUR_API_KEY_HERE

Пример запроса с аутентификацией

cURL
Python
JavaScript
cURL
curl -X GET "https://api.arbitutor.ru/v2/user/profile" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json"
Python
import requests

api_key = "YOUR_API_KEY"
headers = {
    "Authorization": f"Bearer {api_key}",
    "Content-Type": "application/json"
}

response = requests.get(
    "https://api.arbitutor.ru/v2/user/profile",
    headers=headers
)

print(response.json())
JavaScript
const apiKey = 'YOUR_API_KEY';

fetch('https://api.arbitutor.ru/v2/user/profile', {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${apiKey}`,
    'Content-Type': 'application/json'
  }
})
.then(response => response.json())
.then(data => console.log(data));

Быстрый старт

Пример получения актуальных арбитражных связок за 5 минут:

Шаг 1: Получите API-ключ

Создайте ключ в личном кабинете (см. раздел "Аутентификация")

Шаг 2: Установите библиотеку (для Python)

bash
pip install arbitutor-api

Шаг 3: Получите связки

Python
from bcs_api import ArbitutorClient

# Инициализация клиента
client = ArbitutorClient(api_key="YOUR_API_KEY")

# Получение топ-10 связок
opportunities = client.scanner.get_opportunities(
    min_profit=2.0,  # минимальная доходность 2%
    limit=10
)

for opp in opportunities:
    print(f"{opp['pair']}: {opp['profit']}% прибыли")
    print(f"Биржи: {opp['buy_exchange']} → {opp['sell_exchange']}")
✓ Готово! Вы получили первые данные из API. Теперь изучите полную документацию endpoints ниже.

Основные Endpoints

Сканер арбитражных связок

GET /scanner/opportunities

Получить список актуальных арбитражных возможностей

Параметры запроса

Параметр Тип Описание
min_profit float Минимальная доходность в % (по умолчанию: 1.0)
exchanges array Список бирж для фильтрации (опционально)
limit integer Количество результатов (1-100, по умолчанию: 20)

Пример запроса

HTTP
GET /v2/scanner/opportunities?min_profit=2.5&limit=10
Host: api.arbitutor.ru
Authorization: Bearer YOUR_API_KEY

Пример ответа

JSON
{
  "success": true,
  "data": [
    {
      "id": "opp_123456",
      "pair": "BTC/USDT",
      "buy_exchange": "Binance",
      "sell_exchange": "Bybit",
      "buy_price": 43250.50,
      "sell_price": 44380.20,
      "profit_percent": 2.61,
      "profit_usdt": 1129.70,
      "volume_available": 0.5,
      "timestamp": "2025-10-23T14:30:00Z",
      "estimated_time": 180
    }
  ],
  "meta": {
    "total": 47,
    "page": 1,
    "per_page": 10
  }
}
GET /scanner/exchanges

Получить список поддерживаемых бирж и их статус

Пример ответа

JSON
{
  "success": true,
  "data": [
    {
      "name": "Binance",
      "status": "online",
      "last_update": "2025-10-23T14:35:12Z",
      "supported_pairs": 450,
      "p2p_available": true
    },
    {
      "name": "Bybit",
      "status": "online",
      "last_update": "2025-10-23T14:35:08Z",
      "supported_pairs": 320,
      "p2p_available": true
    }
  ]
}

Управление профилем

GET /user/profile

Получить информацию о текущем пользователе

Пример ответа

JSON
{
  "success": true,
  "data": {
    "id": "user_789012",
    "email": "user@example.com",
    "name": "Иван Иванов",
    "subscription": {
      "plan": "Pro",
      "expires_at": "2025-11-23T00:00:00Z"
    },
    "learning_progress": {
      "completed_modules": 3,
      "total_modules": 4,
      "current_level": "Advanced"
    },
    "created_at": "2025-09-15T10:00:00Z"
  }
}
POST /user/api-keys

Создать новый API-ключ

Тело запроса

JSON
{
  "name": "Production Key",
  "permissions": ["read", "write"]
}

Аналитика

GET /analytics/stats

Получить статистику по сделкам пользователя

Параметры запроса

Параметр Тип Описание
period string Период: 7d, 30d, 90d, all (по умолчанию: 30d)

Пример ответа

JSON
{
  "success": true,
  "data": {
    "total_trades": 145,
    "profitable_trades": 138,
    "total_profit_usdt": 2847.50,
    "average_profit_percent": 2.35,
    "win_rate": 95.17,
    "best_trade": {
      "profit_percent": 5.8,
      "date": "2025-10-20"
    }
  }
}

Коды ошибок

API использует стандартные HTTP коды состояния для индикации успеха или неудачи запроса.

Код Значение Описание
200 OK Запрос выполнен успешно
201 Created Ресурс успешно создан
400 Bad Request Неверные параметры запроса
401 Unauthorized Отсутствует или неверный API-ключ
403 Forbidden Недостаточно прав для выполнения операции
404 Not Found Ресурс не найден
429 Too Many Requests Превышен лимит запросов
500 Internal Server Error Внутренняя ошибка сервера

Формат сообщения об ошибке

JSON
{
  "success": false,
  "error": {
    "code": "INVALID_API_KEY",
    "message": "Предоставленный API-ключ недействителен",
    "details": "Проверьте правильность ключа в настройках"
  }
}

Rate Limiting

Для обеспечения стабильности API установлены следующие лимиты:

Тарифный план Запросов в минуту Запросов в день
Free 30 1,000
Basic 100 10,000
Pro 300 50,000
Enterprise 1,000 Без ограничений

Заголовки ответа

В каждом ответе API возвращает заголовки с информацией о лимитах:

HTTP Headers
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1698067200
⚠️ Превышение лимита: При превышении лимита вы получите ответ с кодом 429. Повторите запрос после времени, указанного в X-RateLimit-Reset.

Webhooks

Настройте webhooks для получения уведомлений о важных событиях в реальном времени.

Поддерживаемые события

  • opportunity.new - Новая арбитражная связка
  • opportunity.expired - Связка больше не актуальна
  • user.subscription.updated - Изменение подписки
  • analytics.milestone - Достижение порога прибыли

Настройка webhook

POST /webhooks
{
  "url": "https://your-server.com/webhook",
  "events": ["opportunity.new"],
  "secret": "your_webhook_secret"
}

Формат уведомления

JSON
{
  "event": "opportunity.new",
  "timestamp": "2025-10-23T14:30:00Z",
  "data": {
    "id": "opp_123456",
    "pair": "BTC/USDT",
    "profit_percent": 2.61
  }
}

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

Автоматический мониторинг связок

Python
import time
from bcs_api import ArbitutorClient

client = ArbitutorClient(api_key="YOUR_API_KEY")

def monitor_opportunities():
    while True:
        # Получаем связки с доходностью > 3%
        opportunities = client.scanner.get_opportunities(
            min_profit=3.0,
            limit=5
        )

        for opp in opportunities:
            profit = opp['profit_percent']
            pair = opp['pair']

            if profit > 5.0:
                print(f"🚀 Высокая прибыль! {pair}: {profit}%")
                # Отправить уведомление
                send_notification(opp)
            else:
                print(f"✓ {pair}: {profit}%")

        # Проверка каждые 30 секунд
        time.sleep(30)

monitor_opportunities()

Интеграция с торговым ботом

JavaScript
const ArbitutorClient = require('arbitutor-api');
const TradingBot = require('./trading-bot');

const client = new ArbitutorClient({ apiKey: 'YOUR_API_KEY' });
const bot = new TradingBot();

async function executeArbitrage() {
  const opportunities = await client.scanner.getOpportunities({
    minProfit: 2.5,
    exchanges: ['Binance', 'Bybit']
  });

  for (const opp of opportunities) {
    // Проверяем ликвидность
    if (opp.volume_available >= 0.1) {
      // Выполняем сделку
      const result = await bot.executeTrade({
        pair: opp.pair,
        buyExchange: opp.buy_exchange,
        sellExchange: opp.sell_exchange,
        amount: 0.1
      });

      console.log(`Trade executed: ${result.profit} USDT profit`);
    }
  }
}

setInterval(executeArbitrage, 60000); // Каждую минуту

Содержание