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

Подписка на канал

Для получения данных необходимо подписаться на нужный канал.

Запрос:

{"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Десятичные числа передаются как строки для сохранения точности
TimestampsintegerUnix timestamp в миллисекундах
ДатыstringISO 8601 формат (2026-01-20T11:03:17.48686Z)
IDsstringUUID 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