Перейти к содержанию

REST API

Все эндпоинты доступны по базовому пути /api/v1. Сервер реализован на фреймворке Echo (Go).

Интерактивная документация API

Открыть ReDoc — Exchange API


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

Метод Описание
JWT Bearer Токен передаётся в заголовке Authorization: Bearer <token>. Используется для пользовательских сессий после логина.
HMAC-SHA256 API Key Запрос подписывается секретным ключом. Подпись передаётся в заголовке X-Signature. Публичный ключ — в X-API-Key. Используется для алгоритмической торговли.

Middleware и обозначения

В таблицах ниже используются следующие обозначения для middleware:

Обозначение Описание
Auth Требует JWT Bearer токен
APIKey Требует HMAC-SHA256 подпись
RecvWindow Защита от replay: запрос должен содержать timestamp в пределах окна (recvWindow)
StatusRestricted Недоступно для аккаунтов со статусом restricted
OrdersRateLimit Лимит запросов на ордера

Ограничения по частоте запросов (Rate Limits)

Тип Лимит
Стандартный 5 RPS
Строгий (логин) 1 RPS
Внутренние сети 40 RPS

Accounts — Аккаунты

Эндпоинты

Метод Путь Описание Auth Rate Limit
GET /accounts/me/ Информация о текущем пользователе Auth Стандартный

GET /accounts/me/

Возвращает данные текущего аутентифицированного пользователя.

Ответ 200 OK:

Поле Тип Описание
id string (uuid) Идентификатор
email string Email
status string Статус
tier object Тарифный уровень
created_at string Дата регистрации

Orders — Ордера

Эндпоинты

Метод Путь Описание Auth Rate Limit
POST /orders/place/ Разместить ордер RecvWindow + APIKey + StatusRestricted + OrdersRateLimit Стандартный
POST /orders/cancel/ Отменить ордер RecvWindow + APIKey + OrdersRateLimit Стандартный
POST /orders/cancel-all/ Отменить все ордера по паре RecvWindow + APIKey + OrdersRateLimit Стандартный
GET /orders/ Список ордеров пользователя Auth Стандартный

POST /orders/place/

Размещение нового ордера. Запрос должен быть подписан API-ключом.

Заголовки:

Заголовок Описание
X-API-Key Публичный API-ключ
X-Signature HMAC-SHA256 подпись тела запроса
X-Timestamp Unix timestamp запроса (мс)
X-Recv-Window Окно валидности (мс, опционально, по умолчанию 5000)

Тело запроса:

Поле Тип Обязательно Описание
ticker string Да Торговая пара, например BTC-USDT
side string Да buy или sell
type string Да limit или market
price string (decimal) Для лимитных Цена
qty string (decimal) Да Количество
client_order_id string Нет Пользовательский ID для идемпотентности

Ответ 200 OK:

Поле Тип Описание
order_id string (uuid) Идентификатор ордера в системе
client_order_id string Пользовательский ID
exchange_time string (ISO 8601) Время принятия ордера движком
status string Статус ордера

POST /orders/cancel/

Отмена конкретного ордера.

Тело запроса:

Поле Тип Обязательно Описание
order_id string (uuid) Да* Системный ID ордера
client_order_id string Да* Пользовательский ID ордера

*Одно из двух полей обязательно.

Ответ 200 OK:

Поле Тип Описание
order_id string Идентификатор отменённого ордера
status string cancelled

POST /orders/cancel-all/

Отмена всех открытых ордеров по торговой паре.

Тело запроса:

Поле Тип Обязательно Описание
ticker string Да Торговая пара

Ответ 200 OK:

Поле Тип Описание
orders_canceled integer Количество отменённых ордеров

GET /orders/

Список ордеров пользователя с фильтрацией.

Query-параметры:

Параметр Тип Описание
ticker string Фильтр по торговой паре
status string open, filled, cancelled, partial
limit integer Количество записей (по умолчанию 50, макс. 500)
offset integer Смещение для пагинации

Ответ 200 OK:

Поле Тип Описание
orders array Массив объектов ордеров
total integer Общее количество

Trades — Сделки

Эндпоинты

Метод Путь Описание Auth Rate Limit
GET /trades/ История сделок пользователя Auth Стандартный

GET /trades/

Query-параметры:

Параметр Тип Описание
ticker string Фильтр по торговой паре
from string (ISO 8601) Начало периода
to string (ISO 8601) Конец периода
limit integer Количество записей (по умолчанию 50, макс. 500)
offset integer Смещение

Ответ 200 OK:

Поле Тип Описание
trades array Массив сделок
total integer Общее количество

Объект сделки:

Поле Тип Описание
id string (uuid) Идентификатор
ticker string Торговая пара
side string Сторона пользователя: buy или sell
price string (decimal) Цена
qty string (decimal) Объём
fee string (decimal) Комиссия
executed_at string (ISO 8601) Время исполнения

Balances — Балансы

Эндпоинты

Метод Путь Описание Auth Rate Limit
POST /balances/transfer/ Перевод между аккаунтами Auth + StatusRestricted Стандартный
GET /balances/ Список балансов Auth Стандартный

POST /balances/transfer/

Перевод средств между funding и trading балансовыми аккаунтами или между субаккаунтами.

Тело запроса:

Поле Тип Обязательно Описание
from_balance_account_id string (uuid) Да Источник
to_balance_account_id string (uuid) Да Назначение
asset string Да Код актива
amount string (decimal) Да Сумма перевода

Ответ 200 OK:

Поле Тип Описание
transfer_id string (uuid) Идентификатор перевода
status string completed

GET /balances/

Возвращает все балансы текущего аккаунта.

Query-параметры:

Параметр Тип Описание
balance_account_id string (uuid) Фильтр по конкретному балансовому аккаунту

Ответ 200 OK:

Поле Тип Описание
balances array Массив объектов балансов

Объект баланса:

Поле Тип Описание
asset string Код актива
available string (decimal) Доступный остаток
locked string (decimal) Заблокировано в ордерах
balance_account_id string (uuid) Балансовый аккаунт

Market Data — Рыночные данные (публичные)

Эти эндпоинты не требуют аутентификации.

Эндпоинты

Метод Путь Описание
GET /exchange/tickers/ Список торговых пар
GET /exchange/assets/ Список активов
GET /exchange/orderbook/ Книга ордеров
GET /exchange/trades/ Публичные сделки
GET /exchange/klines/ Свечные данные (OHLCV)

GET /exchange/tickers/

Список всех активных торговых пар с текущими ценами и объёмами.

Ответ 200 OK:

Поле Тип Описание
tickers array Массив объектов тикеров

Объект тикера:

Поле Тип Описание
symbol string Символ пары
base_asset string Базовый актив
quote_asset string Котируемый актив
last_price string Последняя цена
price_change_24h string Изменение цены за 24 часа
volume_24h string Объём за 24 часа
high_24h string Максимум за 24 часа
low_24h string Минимум за 24 часа

GET /exchange/assets/

Список всех активных активов.

Ответ 200 OK:

Поле Тип Описание
assets array Массив объектов активов

Объект актива:

Поле Тип Описание
code string Код актива
name string Полное название
decimals integer Знаков после запятой
networks array Доступные сети (депозит, вывод)

GET /exchange/orderbook/

Текущее состояние книги ордеров (L2-агрегация).

Query-параметры:

Параметр Тип Обязательно Описание
ticker string Да Торговая пара
depth integer Нет Глубина (по умолчанию 20, макс. 100)

Ответ 200 OK:

Поле Тип Описание
ticker string Торговая пара
bids array Массив [price, qty] заявок на покупку
asks array Массив [price, qty] заявок на продажу
timestamp string (ISO 8601) Время снапшота

GET /exchange/trades/

Публичная история последних сделок по торговой паре.

Query-параметры:

Параметр Тип Обязательно Описание
ticker string Да Торговая пара
limit integer Нет Количество записей (по умолчанию 50, макс. 500)

Ответ 200 OK:

Поле Тип Описание
trades array Массив публичных сделок

Объект публичной сделки:

Поле Тип Описание
id string (uuid) Идентификатор
price string Цена
qty string Объём
side string Агрессивная сторона: buy или sell
executed_at string (ISO 8601) Время

GET /exchange/klines/

Свечные данные OHLCV для построения графиков.

Query-параметры:

Параметр Тип Обязательно Описание
ticker string Да Торговая пара
interval string Да Таймфрейм: 1m, 5m, 15m, 1h, 4h, 1d
from string (ISO 8601) Нет Начало периода
to string (ISO 8601) Нет Конец периода
limit integer Нет Количество свечей (по умолчанию 200, макс. 1000)

Ответ 200 OK:

Поле Тип Описание
klines array Массив свечей

Объект свечи:

Поле Тип Описание
open_time string (ISO 8601) Время открытия
open string Цена открытия
high string Максимум
low string Минимум
close string Цена закрытия
volume string Объём

WebSocket — Стримы в реальном времени

Эндпоинты

Путь Описание Auth
WS /exchange/ws/orderbook/ Стрим обновлений книги ордеров — (публичный)
WS /exchange/ws/trades/ Стрим публичных сделок — (публичный)
WS /exchange/ws/orders/ Стрим обновлений ордеров пользователя API Key (query params)

WS /exchange/ws/orderbook/

Публичный стрим снапшотов книги ордеров.

Query-параметры при подключении:

Параметр Описание
ticker Торговая пара
depth Глубина книги

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

{
  "ticker": "BTC-USDT",
  "bids": [["65000.00", "0.5"], ["64999.00", "1.2"]],
  "asks": [["65001.00", "0.3"], ["65002.00", "0.8"]],
  "timestamp": "2024-01-15T12:00:00.000Z"
}

WS /exchange/ws/trades/

Публичный стрим сделок в реальном времени.

Query-параметры при подключении:

Параметр Описание
ticker Торговая пара

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

{
  "id": "uuid",
  "ticker": "BTC-USDT",
  "price": "65000.00",
  "qty": "0.1",
  "side": "buy",
  "executed_at": "2024-01-15T12:00:00.000Z"
}

WS /exchange/ws/orders/

Персональный стрим обновлений ордеров. Требует аутентификации через API Key.

Query-параметры при подключении:

Параметр Описание
api_key Публичный API-ключ
timestamp Unix timestamp (мс)
signature HMAC-SHA256 подпись

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

{
  "event": "order_update",
  "order": {
    "id": "uuid",
    "ticker": "BTC-USDT",
    "side": "buy",
    "type": "limit",
    "price": "65000.00",
    "qty": "0.1",
    "filled_qty": "0.05",
    "status": "partial",
    "updated_at": "2024-01-15T12:00:00.000Z"
  }
}

Коды ошибок

HTTP-код Описание
400 Bad Request Неверные параметры запроса
401 Unauthorized Отсутствует или недействителен токен
403 Forbidden Недостаточно прав (статус restricted, неверная подпись)
404 Not Found Ресурс не найден
429 Too Many Requests Превышен лимит запросов
500 Internal Server Error Внутренняя ошибка сервера

Формат тела ошибки:

{
  "error": {
    "code": "INSUFFICIENT_BALANCE",
    "message": "Недостаточно средств для выполнения операции"
  }
}