REST API¶
Все эндпоинты доступны по базовому пути /api/v1. Сервер реализован на фреймворке Echo (Go).
Интерактивная документация 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 |
|
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 |
Внутренняя ошибка сервера |
Формат тела ошибки: