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 минут) жарамды.

GET /v2/user-api/exchange/account/web-socket/token Көшіру

Авторизация тақырыптары

Қажетті авторизация тақырыптары туралы толық ақпарат қолжетімді Мұнда

Жауап

{ "token": "168b34a3a12370740ff1654f0d0c4726ff1bba8c4675edc0d7553f15e5a2a094" }
Көшіру

Мүмкін кодтар

200: тапсырыс сәтті жасалды

404: пайдаланушы немесе ресурс табылмады

500: Ішкі сервер қатесі

Тереңдік шкаласының белгілері

Өтініш

GET https://exchange-ws.cryptomus.com/api/v2/symbol-scales?symbol={symbol} Көшіру

Жауап


1{
2  "status": "success",
3  "message": "success",
4  "data": [
5    {
6      "scale": "0.01",
7      "index": 0 // index
8    },
9    ...
10  ]
11}
Көшіру

Нарық тізімі

Өтініш

GET https://api-app.cryptomus.com/v1/exchange/market Көшіру

Жауап


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 уақыт белгісі форматындағы қайтару уақыты

Сұраныс хабарламасының құрылымы

ЕсімПараметр түріАнықтама
idIntegerСұрауыңызға жауапты өңдеу үшін бірегей болуы керек
methodStringӨтініш атауы
paramsArrayӘдіс параметрлерін осында беріңіз

Параметр түрі

Integer

Анықтама

Сұрауыңызға жауапты өңдеу үшін бірегей болуы керек

Параметр түрі

String

Анықтама

Өтініш атауы

Параметр түрі

Array

Анықтама

Әдіс параметрлерін осында беріңіз

Жарамсыз JSON жіберілсе, WebSocket қосылымы үзіледі

Хабарлама және сұраныс түрлері

- Сұрау (`ping`, `candles_request`, т.б.)

- Жазылым («candles_subscribe», «lastprice_subscribe» және т.б.). Бірдей деректер түріне қайта жазылу тоқтатылады.

Жауап хабарламасы

ЕсімПараметр түріАнықтама
idIntegerСұрау идентификаторы
dataNullегер сұраныс сәтсіз болса. Егер сәтті болса, әр әдіс үшін жауап құрылымы төменде көрсетілген
errorNullегер сәтті болса. Егер қате болса
messageString
codeIntegerҚате коды

Параметр түрі

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            
Көшіру