WebSocket ағындары
Қосылу уақыты бітті
- Сервер 60 секунд әрекетсіздіктен кейін WebSocket қосылымын жабады (Қосылымды сақтау)
- Белсенділіксіздік клиент жіберген сұраныстардың болмауы ретінде анықталады
Байланысты сақтау
WebSocket қосылымын белсенді күйде ұстау үшін сізге қажет
- Мерзімді сұраныстарды әр 50 секунд сайын жіберіңіз
- Қолданбаңыздың логикасындағы ықтимал ажыратылуларды дұрыс өңдеңіз
Авторизация
Кіріспе
Кез келген WebSocket сұрауларына қол қоймас бұрын, Cryptomus жеке тіркелгіңізде API кілтін жасауыңыз керек
API кілтін жасау бойынша егжей-тегжейлі нұсқаулар қолжетімді Мұнда
Қосылу үшін бір реттік токен алу
WebSocket серверіне қосылмас бұрын, бір реттік аутентификация токенін алуыңыз керек
Сіз токенді жіберу арқылы ала аласыз тиісті сұраныс
Токен 5 минут бойы немесе алғашқы сәтті қосылымға дейін жарамды
WebSocket серверіне қосылу
WebSocket серверіне қосылу үшін
1. Бір реттік алу аутентификация токені
2. Қосылымды орнатқан кезде сұрау параметрінің токенінде токенді көрсетіңіз
Қосылым URL мекенжайының мысалы: wss://api-ws.cryptomus.com/ws?token=b0b1cacd26993392ecf072155bd1686c96e380ad12cefa564aa6665c85c77334
Токенді тек бір рет пайдалануға болады. Әрбір жаңа қосылым үшін жаңа токен сұрау қажет
Токенді сәтті тексергеннен кейін байланыс орнатылады және сіз қолжетімді арналарға жазыла аласыз
WebSocket қосылымы үшін бір реттік аутентификация токенін алу
WebSocket серверіне қосылу үшін бір реттік аутентификация токенін жасауға мүмкіндік береді. Токен алғашқы сәтті қосылымға дейін немесе оның мерзімі аяқталғанға дейін (5 минут) жарамды.
Авторизация тақырыптары
Қажетті авторизация тақырыптары туралы толық ақпарат қолжетімді Мұнда
Жауап
{ "token": "168b34a3a12370740ff1654f0d0c4726ff1bba8c4675edc0d7553f15e5a2a094" }КөшіруМүмкін кодтар
200: тапсырыс сәтті жасалды
404: пайдаланушы немесе ресурс табылмады
500: Ішкі сервер қатесі
Тереңдік шкаласының белгілері
Өтініш
Жауап
1{
2 "status": "success",
3 "message": "success",
4 "data": [
5 {
6 "scale": "0.01",
7 "index": 0 // index
8 },
9 ...
10 ]
11}КөшіруНарық тізімі
Өтініш
Жауап
1{
2 "result": [
3 {
4 "id": "01HSBPVS17CT2GN2FV34K3AMP9",
5 "symbol": "BTC_USDT",
6 "baseCurrency": "BTC",
7 "quoteCurrency": "USDT",
8 "baseMinSize": "0.0000100000000000",
9 "quoteMinSize": "0.1000000000000000",
10 "baseMaxSize": "10000000000.0000000000000000",
11 "quoteMaxSize": "99999999.0000000000000000",
12 "basePrec": "8",
13 "quotePrec": "6",
14 "baseCurrencyFullName": "Bitcoin",
15 "quoteCurrencyFullName": "Tether USD"
16 },
17 ...
18 ]
19}КөшіруМысал ретінде іске асыру
1const WebSocket = require('ws');
2
3class CryptomusWebSocket {
4 constructor(token) {
5 this.token = token;
6 this.socket = new WebSocket('wss://api-ws.cryptomus.com/ws?token=${this.token}');
7 this.setupConnection();
8 }
9
10 setupConnection() {
11 this.socket.on('open', () => {
12 console.log('Connected to Cryptomus WebSocket');
13 this.startPing();
14 });
15
16 this.socket.on('message', (data) => {
17 console.log('Received:', data.toString());
18 });
19 }
20
21 ping() {
22 if (this.socket.readyState === WebSocket.OPEN) {
23 this.socket.send(JSON.stringify({
24 id: 0,
25 method: "ping",
26 params: []
27 }));
28 }
29 }
30
31 startPing() {
32 setInterval(() => {
33 this.ping();
34 }, 50 * 1000); // Every 50 seconds
35 }
36}
37
38// Usage
39const token = "your_auth_token_here";
40const client = new CryptomusWebSocket(token);
41 Көшіру
1import asyncio
2import websockets
3import json
4
5class CryptomusWebSocket:
6 def __init__(self, token):
7 self.token = token
8 self.socket = None
9
10 async def connect(self):
11 self.socket = await websockets.connect(f"wss://api-ws.cryptomus.com/ws?token={self.token}")
12 print('Connected to Cryptomus WebSocket')
13
14 async def ping(self):
15 await self.socket.send(json.dumps({
16 "id": 0,
17 "method": "ping",
18 "params": []
19 }))
20
21 async def start_ping(self):
22 while True:
23 await asyncio.sleep(50) # Every 50 seconds
24 await self.ping()
25
26 async def listen(self):
27 async for message in self.socket:
28 print(f"Received: {message}")
29
30 async def run(self):
31 await self.connect()
32
33 # Start ping task
34 ping_task = asyncio.create_task(self.start_ping())
35
36 # Listen for messages
37 await self.listen()
38
39# Usage
40token = "your_auth_token_here"
41client = CryptomusWebSocket(token)
42asyncio.run(client.run())
43 КөшіруБарлық соңғы нүктелердің Unix уақыт белгісі форматындағы қайтару уақыты
Сұраныс хабарламасының құрылымы
| Есім | Параметр түрі | Анықтама |
|---|---|---|
| id | Integer | Сұрауыңызға жауапты өңдеу үшін бірегей болуы керек |
| method | String | Өтініш атауы |
| params | Array | Әдіс параметрлерін осында беріңіз |
Параметр түрі
IntegerАнықтама
Сұрауыңызға жауапты өңдеу үшін бірегей болуы керекПараметр түрі
StringАнықтама
Өтініш атауыПараметр түрі
ArrayАнықтама
Әдіс параметрлерін осында беріңіз
Жарамсыз JSON жіберілсе, WebSocket қосылымы үзіледі
Хабарлама және сұраныс түрлері
- Сұрау (`ping`, `candles_request`, т.б.)
- Жазылым («candles_subscribe», «lastprice_subscribe» және т.б.). Бірдей деректер түріне қайта жазылу тоқтатылады.
Жауап хабарламасы
| Есім | Параметр түрі | Анықтама |
|---|---|---|
| id | Integer | Сұрау идентификаторы |
| data | Null | егер сұраныс сәтсіз болса. Егер сәтті болса, әр әдіс үшін жауап құрылымы төменде көрсетілген |
| error | Null | егер сәтті болса. Егер қате болса |
| message | String | |
| code | Integer | Қате коды |
Параметр түрі
IntegerАнықтама
Сұрау идентификаторыПараметр түрі
NullАнықтама
егер сұраныс сәтсіз болса. Егер сәтті болса, әр әдіс үшін жауап құрылымы төменде көрсетілгенПараметр түрі
NullАнықтама
егер сәтті болса. Егер қате болсаПараметр түрі
IntegerАнықтама
Қате коды
Код: 1. Хабарлама: Хабарлама пішімі жарамсыз
Код: 2. Хабарлама: Басқа қателер
Жауап хабарламаларының түрлері
- Сұрау нәтижесі
- Жазылым мәртебесі (сәтті/сәтсіз)
- Іс-шараларды жаңарту
Үстел теннисі
Пинг
1{
2 "id": 0,
3 "method": "ping",
4 "params": []
5}
6 КөшіруЖауап теннисі
1{
2 "id": 0,
3 "method": "pong",
4 "data": null,
5 "error": null
6}
7 КөшіруМысал ретінде жазылымдарды
Өтініш
1{
2 "id": 0,
3 "method": "trade_subscribe",
4 "params": [
5 "BTC_USDT"
6 ]
7}
8 КөшіруЖауап
1{
2 "id": 0,
3 "method": "trade_subscribe",
4 "data": {
5 "status": "success"
6 },
7 "error": null
8}
9 КөшіруІс-шараны жаңарту
1{
2 "id": 0,
3 "method": "trade_update",
4 "data": [], // See structure for each method below
5 "error": null
6}
7 КөшіруСоңғы баға
Жазылым
1{
2 "id": 0,
3 "method": "lastprice_subscribe",
4 "params": [
5 "BTC_USDT", // Market
6 "BTC_USDT",
7 "ETH_USDT",
8 ...
9 ]
10}
11 КөшіруБарлық іс-шараларға жазылыңыз lastprice_subscribe
1{
2 "id": 0,
3 "method": "lastprice_subscribe",
4 "params": [
5 "all" // This also works for other events
6 ]
7}
8 КөшіруЖауап
1{
2 "id": 0,
3 "method": "lastprice_subscribe",
4 "data": {
5 "status": "success"
6 },
7 "error": null
8}
9 КөшіруІс-шара
1{
2 "id": 0,
3 "method": "lastprice_update",
4 "data": {
5 "symbol": "BTC_USDT",
6 "timestamp": 1750953362,
7 "price": "107152.55"
8 },
9 "error": null
10}
11 КөшіруЖазылымды тоқтату
Өтініш
1{
2 "id": 0,
3 "method": "lastprice_unsubscribe",
4 "params": [
5 "BTC_USDT",
6 "ETH_USDT",
7 ...
8 ]
9}
10 КөшіруБарлық іс-шараларға жазылымнан бас тарту lastprice_unsubscribe
1{
2 "id": 0,
3 "method": "lastprice_unsubscribe",
4 "params": [
5 "all" // This also works for other events
6 ]
7}
8 КөшіруЖауап
1{
2 "id": 0,
3 "data": {
4 "status": "success"
5 },
6 "error": null
7}КөшіруТереңдік
Жазылым
Алдымен сізге нарықтың масштабтық индексін алу керек қалай алуға болады
1{
2 "id": 0,
3 "method": "depth_subscribe",
4 "params": [
5 "BTC_USDT:0", // market:scale_index
6 "BTC_USDT:1",
7 "ETH_USDT:1",
8 ...
9 ]
10}
11 КөшіруБарлық іс-шараларға жазылыңыз depth_subscribe
1{
2 "id": 0,
3 "method": "depth_subscribe",
4 "params": [
5 "all" // This also works for other events
6 ]
7}
8 КөшіруЖауап
1{
2 "id": 0,
3 "method": "depth_subscribe",
4 "data": {
5 "status": "success"
6 },
7 "error": null
8}
9 КөшіруІс-шара
1{
2 "id": 0,
3 "method": "depth_update",
4 "data": {
5 "symbol": "BTC_USDT",
6 "timestamp": 1750952911,
7 "full_reload": false, // If false, it is a partial update, if true, it is a fully updated orderbook.
8 "scale_index": 0,
9 "asks": [
10 [
11 "107043.93", // price
12 "0.304313" // value
13 ]
14 ],
15 "bids": [
16 [
17 "106976.11",
18 "0" // for partial update - finished orders will be 0
19 ]
20 ]
21 },
22 "error": null
23}
24 КөшіруЖазылымды тоқтату
Өтініш
1{
2 "id": 0,
3 "method": "depth_unsubscribe",
4 "params": [
5 "BTC_USDT:0", // market:scale_index
6 "ETH_USDT:1",
7 ...
8 ]
9}
10 КөшіруБарлық іс-шараларға жазылымнан бас тарту depth_unsubscribe
1{
2 "id": 0,
3 "method": "depth_unsubscribe",
4 "params": [
5 "all" // This also works for other events
6 ]
7}
8 КөшіруЖауап
1{
2 "id": 0,
3 "data": {
4 "status": "success"
5 },
6 "error": null
7}
8 КөшіруТикер
Жазылым
1{
2 "id": 0,
3 "method": "ticker_subscribe",
4 "params": [
5 "BTC_USDT", // Market
6 "BTC_USDT",
7 "ETH_USDT",
8 ...
9 ]
10}
11 КөшіруБарлық іс-шараларға жазылыңыз ticker_subscribe
1{
2 "id": 0,
3 "method": "ticker_subscribe",
4 "params": [
5 "all" // This also works for other events
6 ]
7}
8 КөшіруЖауап
1{
2 "id": 0,
3 "method": "ticker_subscribe",
4 "data": {
5 "status": "success"
6 },
7 "error": null
8}
9 КөшіруІс-шара
1{
2 "id": 0,
3 "method": "ticker_update",
4 "data": {
5 "symbol": "BTC_USDT",
6 "timestamp": 1750953144,
7 "price": "107090.35",
8 "open": "107042.21",
9 "high": "108248.15",
10 "low": "106573.19",
11 "volume": "1531.027982",
12 "quote_volume": "164564314.80174687",
13 "price_change": "0.04"
14 },
15 "error": null
16}
17 КөшіруЖазылымды тоқтату
Өтініш
1{
2 "id": 0,
3 "method": "ticker_unsubscribe",
4 "params": [
5 "BTC_USDT", // Market
6 "ETH_USDT",
7 ...
8 ]
9}
10 КөшіруБарлық іс-шараларға жазылымнан бас тарту ticker_unsubscribe
1{
2 "id": 0,
3 "method": "ticker_unsubscribe",
4 "params": [
5 "all" // This also works for other events
6 ]
7}
8 КөшіруЖауап
1{
2 "id": 0,
3 "data": {
4 "status": "success"
5 },
6 "error": null
7}
8 КөшіруСауда-саттық
Жазылым
1{
2 "id": 0,
3 "method": "trade_subscribe",
4 "params": [
5 "BTC_USDT", // Market
6 "BTC_USDT",
7 "ETH_USDT",
8 ...
9 ]
10}
11 КөшіруБарлық іс-шараларға жазылыңыз trade_subscribe
1{
2 "id": 0,
3 "method": "trade_subscribe",
4 "params": [
5 "all" // This also works for other events
6 ]
7}
8 КөшіруЖауап
1{
2 "id": 0,
3 "method": "trade_subscribe",
4 "data": {
5 "status": "success"
6 },
7 "error": null
8}
9 КөшіруІс-шара
1{
2 "id": 0,
3 "method": "trade_update",
4 "data": {
5 "symbol": "BTC_USDT",
6 "timestamp": 1750953177,
7 "trades": [
8 {
9 "price": 107100.01,
10 "quantity": 0.000254,
11 "timestamp": 1750953177,
12 "direction": "buy"
13 },
14 ...
15 ]
16 },
17 "error": null
18}
19 КөшіруЖазылымды тоқтату
Өтініш
1{
2 "id": 0,
3 "method": "trade_unsubscribe",
4 "params": [
5 "BTC_USDT", // Market
6 "ETH_USDT",
7 ...
8 ]
9}
10 КөшіруБарлық іс-шараларға жазылымнан бас тарту trade_unsubscribe
1{
2 "id": 0,
3 "method": "trade_unsubscribe",
4 "params": [
5 "all" // This also works for other events
6 ]
7}
8 КөшіруЖауап
1{
2 "id": 0,
3 "data": {
4 "status": "success"
5 },
6 "error": null
7}
8 КөшіруТапсырыстар
Жазылым
1{
2 "id": 0,
3 "method": "order_subscribe",
4 "params": [
5 "BTC_USDT", // Market
6 "TRX_USDT",
7 "ETH_USDT",
8 ...
9 ]
10}
11 КөшіруБарлық іс-шараларға жазылыңыз order_subscribe
1{
2 "id": 0,
3 "method": "order_subscribe",
4 "params": [
5 "all" // This also works for other events
6 ]
7}
8 КөшіруЖауап
1{
2 "id": 0,
3 "method": "order_subscribe",
4 "data": {
5 "status": "success"
6 },
7 "error": null
8}
9 КөшіруІс-шаралар
Тапсырыс жасалды
1{
2 "id": "1",
3 "method": "order_update",
4 "data": {
5 "type": "created",
6 "info": {
7 "id": "01JYET5DQ772MPYHHE417FQF1J",
8 "symbol": "TRX_USDT",
9 "orderType": "limit",
10 "direction": "sell",
11 "price": "0.2200000000000000",
12 "quantity": "50.0000000000000000",
13 "value": "11.0000000000000000",
14 "filledQuantity": "0.0000000000000000",
15 "filledValue": "0.0000000000000000",
16 "clientOid": null,
17 "createTs": 1750696376
18 }
19 },
20 "error": null
21}
22 КөшіруТапсырыс жаңартылды
1{
2 "id": "3",
3 "method": "order_update",
4 "data": {
5 "type": "updated",
6 "info": {
7 "id": "01JYET5DQ772MPYHHE417FQF1J",
8 "symbol": "TRX_USDT",
9 "orderType": "limit",
10 "direction": "sell",
11 "price": "0.2200000000000000",
12 "quantity": "50.0000000000000000",
13 "value": "11.0000000000000000",
14 "filledQuantity": "20.0000000000000000",
15 "filledValue": "4.4000000000000000",
16 "clientOid": null,
17 "createTs": 1750696376,
18 "updateTs": 1750696487,
19 }
20 },
21 "error": null
22}
23 КөшіруТапсырыс аяқталды
1{
2 "id": "3",
3 "method": "order_update",
4 "data": {
5 "type": "finished",
6 "info": {
7 "id": "01JYET5DQ772MPYHHE417FQF1J",
8 "symbol": "TRX_USDT",
9 "orderType": "limit",
10 "direction": "sell",
11 "price": "0.2200000000000000",
12 "quantity": "50.0000000000000000",
13 "value": "11.0000000000000000",
14 "filledQuantity": "50.0000000000000000",
15 "filledValue": "11.0000000000000000",
16 "clientOid": null,
17 "createTs": 1750696376,
18 "finishTs": 1750696417,
19 "state": "completed""internalState": "filled"
20 }
21 },
22 "error": null
23}
24 КөшіруЖаңартулардан бас тарту
Белгілі бір нарықтардан
1{
2 "id": 0,
3 "method": "order_unsubscribe",
4 "params": [
5 "BTC_USDT", // Market
6 "ETH_USDT",
7 ...
8 ]
9}
10 КөшіруБарлық нарықтардан
1{
2 "id": 0,
3 "method": "order_unsubscribe",
4 "params": [
5 "all" // Optional, will also work if an empty array is passed in
6 ]
7}
8 КөшіруЖауап
1{
2 "id": 0,
3 "data": {
4 "status": "success"
5 },
6 "error": null
7}
8 КөшіруБаланстар
Жазылым
Негізгі валюта нарық тізімі
1{
2 "id": 0,
3 "method": "balance_subscribe",
4 "params": [
5 "BTC", // BaseCurrency from market list
6 "TRX,
7 "ETH",
8 ...
9 ]
10}
11 КөшіруБарлық іс-шараларға жазылыңыз balance_subscribe
1{
2 "id": 0,
3 "method": "balance_subscribe",
4 "params": [
5 "all" // This also works for other events
6 ]
7}
8 КөшіруЖауап
1{
2 "id": 0,
3 "method": "balance_subscribe",
4 "data": {
5 "status": "success"
6 },
7 "error": null
8}
9 КөшіруІс-шаралар
1{
2 "id": "4",
3 "method": "balance_update",
4 "data": {
5 "info": {
6 "walletId": "01J7E836F6K5KCX5DP2W0F6FAG",
7 "currencyCode": "USDT",
8 "amount": "50.0000000000000000",
9 "oldBalance": "40000.0000000000000000",
10 "newBalance": "39950.00000000"
11 }
12 },
13 "error": null
14}
15 КөшіруІс-шараларға жазылудан бас тарту
Белгілі бір валюталардан
Негізгі валюта нарық тізімі
1{
2 "id": 0,
3 "method": "balance_unsubscribe",
4 "params": [
5 "BTC", // BaseCurrency from market list
6 "ETH",
7 ...
8 ]
9}
10 КөшіруБарлық валюталардан
1{
2 "id": 0,
3 "method": "balance_unsubscribe",
4 "params": [
5 "all" // Optional, will also work if an empty array is passed in
6 ]
7}
8 КөшіруЖауап
1{
2 "id": 0,
3 "data": {
4 "status": "success"
5 },
6 "error": null
7}
8 КөшіруҰсыныстар
Жазылым
1{
2 "id": 0,
3 "method": "deal_subscribe",
4 "params": [
5 "BTC_USDT", // Market
6 "TRX_USDT,
7 "ETH_USDT",
8 ...
9 ]
10}
11 КөшіруБарлық іс-шараларға жазылыңыз deal_subscribe
1{
2 "id": 0,
3 "method": "deal_subscribe",
4 "params": [
5 "all" // This also works for other events
6 ]
7}
8 КөшіруЖауап
1{
2 "id": 0,
3 "data": {
4 "status": "success"
5 },
6 "error": null
7}
8 КөшіруІс-шаралар
1{
2 "id": "4",
3 "method": "deal_update",
4 "data": {
5 "info": {
6 "dealId": "01JYH50V5VWPP3QTYGM6CPZ0AR",
7 "symbol": "TRX_USDT",
8 "dealState": "completed",
9 "transactionId": "01JYH50V5YM8M3943KJ9HY2VXM",
10 "filledPrice": "0.2726960000000000",
11 "filledQuantity": "100.0000000000000000",
12 "filledValue": "27.2696000000000000",
13 "fee": "1.0907840000000000",
14 "feeCurrency": "USDT",
15 "tradeRole": "taker",
16 "committedAt": 1750774869
17 }
18 },
19 "error": null
20}
21 КөшіруЖаңартулардан бас тарту
Белгілі бір нарықтардан
1{
2 "id": 0,
3 "method": "deal_unsubscribe",
4 "params": [
5 "BTC_USDT", // Market
6 "TRX_USDT,
7 ...
8 ]
9}
10 КөшіруБарлық нарықтардан
1{
2 "id": 0,
3 "method": "deal_unsubscribe",
4 "params": [
5 "all" // Optional, will also work if an empty array is passed in
6 ]
7}
8 КөшіруЖауап
1{
2 "id": 0,
3 "data": {
4 "status": "success"
5 },
6 "error": null
7}
8 Көшіру