Подписка на канал
Для получения данных необходимо подписаться на нужный канал.
Запрос:
{"method":"subscribe","data":["CHANNEL_NAME"]}Пример — подписка на стакан USDTRUB:
{"method":"subscribe","data":["USDTRUB@depth"]}Подписка на несколько каналов одним сообщением:
{"method":"subscribe","data":["USDTRUB@depth","USDTRUB@trades","tickers"]}Подтверждение подписки:
{"id":0,"data":["USDTRUB@depth"]}Отписка от канала
Запрос:
{"method":"unsubscribe","data":["CHANNEL_NAME"]}Пример:
{"method":"unsubscribe","data":["USDTRUB@depth"]}Формат получаемых данных
После подписки сервер отправляет данные в следующем формате:
Для одиночного объекта:
{
"data": {...},
"stream": "CHANNEL_NAME"
}Для массива объектов:
{
"data": [{...}, {...}],
"stream": "CHANNEL_NAME"
}Пример — сделка:
{
"data": {
"price": "78.6",
"qty": "50047.0424",
"side": "bid",
"tradeId": "c10e8385-c300-5181-959b-23b013e8a1c4",
"updatedAt": "2026-01-20T11:03:17.48686Z"
},
"stream": "USDTRUB@trades"
}Пример — тикеры:
{
"data": [
{
"symbol": "USDTRUB",
"lastPrice": "78.6",
"priceChange": "-0.15",
"priceChangePercent": "-0.19",
...
},
{
"symbol": "BTCUSDT",
"lastPrice": "91322.46",
...
}
],
"stream": "tickers"
}Формат названия каналов
| Формат | Описание | Пример |
|---|---|---|
channel | Глобальный канал | tickers, tickers-futures |
SYMBOL@channel | Канал для инструмента | BTCUSDT@depth, USDTRUB@trades |
SYMBOL.TIMEFRAME@channel | Канал со свечами | BTCUSDT.1h@candles, USDTRUB.4h@candles |
ACCOUNT@channel | Приватный канал счёта | CLNTF@my-balances |
Типы данных
| Поле | Тип | Описание |
|---|---|---|
| Цены, объёмы | string | Десятичные числа передаются как строки для сохранения точности |
| Timestamps | integer | Unix timestamp в миллисекундах |
| Даты | string | ISO 8601 формат (2026-01-20T11:03:17.48686Z) |
| IDs | string | UUID v4 |
Ping/Pong (Exchange WebSocket)
Для поддержания соединения клиент обязан периодически отправлять ping чаще чем раз в 60 секунд:
Запрос:
{"method": "ping", "id": 1}Ответ сервера:
{"pong": 1737371097000}
id— произвольное число,pong— текущее время в Unix миллисекундах.
Если сервер не получает ping более 60 секунд — соединение закрывается с причиной "ping timeout".
P2P формат (Socket.IO)
P2P WebSocket использует протокол Socket.IO v4. Формат сообщений отличается:
Подключение к namespace:
40/p2p
Подписка:
42/p2p,["subscribe","{\"id\":0,\"method\":\"SUBSCRIBE\",\"params\":[\"USDTRUB@p2p-trade\"]}"]
Подтверждение:
42/p2p,["subscribe",{"$resourceTypeSocket":"SubscribeResultResourceSocketMessage","data":null,"id":0}]
Ping/Pong:
- Ping:
2 - Pong:
3
