Reya DEX Websocket API V2
Table of Contents
Overview
The Reya DEX Trading WebSocket API v2 provides real-time streaming data for decentralized exchange operations on the Reya Network. This version offers user-friendly data structures with human-readable formats, removing blockchain-specific details while maintaining comprehensive trading functionality.
Key Features
Real-time Updates: Live streaming of market data, positions, orders, and executions
User-Friendly Format: Simplified data structures without blockchain complexity
Comprehensive Coverage: Market summaries, wallet positions, order management, and price feeds
Standardized Protocol: AsyncAPI 2.6.0 compliant specification
Alphanumeric Symbol Support: Supports symbols like
BTCRUSDPERP
,kBONKRUSDPERP
,AI16ZRUSDPERP
Server Endpoints
Production Environment
URL:
wss://ws.reya.xyz
Protocol: WSS
Description: Production WebSocket server for live trading
Test Environment
URL:
wss://websocket-testnet.reya.xyz
Protocol: WSS
Description: Staging WebSocket server for testing and development
Channel Architecture
The API uses a hierarchical channel structure with clear separation between different data types:
Channel Categories
Market Data Channels
/v2/markets/summary
- All market summaries/v2/market/{symbol}/summary
- Individual market summary/v2/market/{symbol}/perpExecutions
- Market-specific executions/v2/prices
- All symbol prices/v2/prices/{symbol}
- Individual symbol prices
Wallet Data Channels
/v2/wallet/{address}/positions
- Position updates/v2/wallet/{address}/orderChanges
- Order change updates/v2/wallet/{address}/perpExecutions
- Wallet-specific executions
Parameter Validation
Symbol Parameter
Pattern:
^[A-Za-z0-9]+$
Examples:
BTCRUSDPERP
,ETHRUSD
,kBONKRUSDPERP
,AI16ZRUSDPERP
Description: Trading symbol supporting alphanumeric characters
Address Parameter
Pattern:
^0x[a-fA-F0-9]{40}$
Example:
0x6c51275fd01d5dbd2da194e92f920f8598306df2
Description: Ethereum wallet address (40 hexadecimal characters)
Message Structure
All WebSocket messages follow a standardized envelope structure:
Base Message Envelope
{
"type": "channel_data",
"timestamp": 1747927089946,
"channel": "/v2/market/BTCRUSDPERP/summary",
"data": { /* channel-specific data */ }
}
Message Components
type: Always
"channel_data"
for data updatestimestamp: Server timestamp in milliseconds
channel: Specific channel identifier
data: Channel-specific payload (object or array)
Heartbeat Messages
Ping Message (Server → Client)
{
"type": "ping",
"timestamp": 1747927089946
}
Pong Message (Client → Server)
{
"type": "pong",
"timestamp": 1747927089946
}
Channels Reference
1. Market Data Channels
/v2/markets/summary
/v2/markets/summary
Purpose: Real-time updates for all market summaries
Subscription:
{
"type": "subscribe",
"channel": "/v2/markets/summary"
}
Message Structure:
{
"type": "channel_data",
"timestamp": 1747927089946,
"channel": "/v2/markets/summary",
"data": [
{
"symbol": "BTCRUSDPERP",
"updatedAt": 1747927089946,
"longOiQty": "154.741",
"shortOiQty": "154.706",
"oiQty": "154.741",
"fundingRate": "-0.000509373441021089",
"longFundingValue": "412142.26",
"shortFundingValue": "412142.26",
"fundingRateVelocity": "-0.00000006243",
"volume24h": "917833.49891",
"pxChange24h": "92.6272285500004",
"throttledOraclePrice": "2666.48162040777",
"throttledPoolPrice": "2666.48166680625",
"pricesUpdatedAt": 1747927089597
}
]
}
/v2/market/{symbol}/summary
/v2/market/{symbol}/summary
Purpose: Real-time updates for a specific market's summary
Parameters:
symbol
: Trading symbol (e.g.,BTCRUSDPERP
,kBONKRUSDPERP
)
Subscription:
{
"type": "subscribe",
"channel": "/v2/market/BTCRUSDPERP/summary"
}
Message Structure:
{
"type": "channel_data",
"timestamp": 1747927089946,
"channel": "/v2/market/BTCRUSDPERP/summary",
"data": {
"symbol": "BTCRUSDPERP",
"updatedAt": 1747927089946,
"longOiQty": "154.741",
"shortOiQty": "154.706",
"oiQty": "154.741",
"fundingRate": "-0.000509373441021089",
"longFundingValue": "412142.26",
"shortFundingValue": "412142.26",
"fundingRateVelocity": "-0.00000006243",
"volume24h": "917833.49891",
"pxChange24h": "92.6272285500004",
"throttledOraclePrice": "2666.48162040777",
"throttledPoolPrice": "2666.48166680625",
"pricesUpdatedAt": 1747927089597
}
}
/v2/market/{symbol}/perpExecutions
/v2/market/{symbol}/perpExecutions
Purpose: Real-time perpetual executions for a specific market
Parameters:
symbol
: Trading symbol (e.g.,BTCRUSDPERP
,AI16ZRUSDPERP
)
Subscription:
{
"type": "subscribe",
"channel": "/v2/market/BTCRUSDPERP/perpExecutions"
}
Message Structure:
{
"type": "channel_data",
"timestamp": 1747927089946,
"channel": "/v2/market/BTCRUSDPERP/perpExecutions",
"data": [
{
"exchangeId": 1,
"symbol": "BTCRUSDPERP",
"accountId": 12345,
"qty": "1.0",
"side": "B",
"price": "43000.00",
"fee": "0.50",
"type": "ORDER_MATCH",
"timestamp": 1747927089946,
"sequenceNumber": 152954
}
]
}
/v2/prices
/v2/prices
Purpose: Real-time price updates for all symbols
Subscription:
{
"type": "subscribe",
"channel": "/v2/prices"
}
Message Structure:
{
"type": "channel_data",
"timestamp": 1747927089946,
"channel": "/v2/prices",
"data": [
{
"symbol": "BTCRUSDPERP",
"oraclePrice": "43000.00",
"poolPrice": "42999.50",
"updatedAt": 1747927089946
},
{
"symbol": "ETHRUSDPERP",
"oraclePrice": "2500.00",
"poolPrice": "2499.75",
"updatedAt": 1747927089946
}
]
}
/v2/prices/{symbol}
/v2/prices/{symbol}
Purpose: Real-time price updates for a specific symbol
Parameters:
symbol
: Trading symbol (e.g.,BTCRUSDPERP
,kBONKRUSDPERP
)
Subscription:
{
"type": "subscribe",
"channel": "/v2/prices/BTCRUSDPERP"
}
Message Structure:
{
"type": "channel_data",
"timestamp": 1747927089946,
"channel": "/v2/prices/BTCRUSDPERP",
"data": {
"symbol": "BTCRUSDPERP",
"oraclePrice": "43000.00",
"poolPrice": "42999.50",
"updatedAt": 1747927089946
}
}
2. Wallet Data Channels
/v2/wallet/{address}/positions
/v2/wallet/{address}/positions
Purpose: Real-time position updates for a wallet
Parameters:
address
: Ethereum wallet address (e.g.,0x6c51275fd01d5dbd2da194e92f920f8598306df2
)
Subscription:
{
"type": "subscribe",
"channel": "/v2/wallet/0x6c51275fd01d5dbd2da194e92f920f8598306df2/positions"
}
Message Structure:
{
"type": "channel_data",
"timestamp": 1747927089946,
"channel": "/v2/wallet/0x6c51275fd01d5dbd2da194e92f920f8598306df2/positions",
"data": [
{
"exchangeId": 1,
"symbol": "BTCRUSDPERP",
"accountId": 12345,
"qty": "1.5",
"side": "B",
"avgEntryPrice": "43000.00",
"avgEntryFundingValue": "100.25",
"lastTradeSequenceNumber": 152954
}
]
}
/v2/wallet/{address}/orderChanges
/v2/wallet/{address}/orderChanges
Purpose: Real-time order change updates for wallet
Parameters:
address
: Ethereum wallet address
Subscription:
{
"type": "subscribe",
"channel": "/v2/wallet/0x6c51275fd01d5dbd2da194e92f920f8598306df2/orderChanges"
}
Message Structure:
{
"type": "channel_data",
"timestamp": 1747927089946,
"channel": "/v2/wallet/0x6c51275fd01d5dbd2da194e92f920f8598306df2/orderChanges",
"data": [
{
"exchangeId": 1,
"symbol": "BTCRUSDPERP",
"accountId": 12345,
"orderId": "123456789-123123123",
"qty": "1.0",
"execQty": "0.5",
"side": "B",
"limitPx": "43000.00",
"orderType": "LIMIT",
"triggerPx": "50000.0",
"timeInForce": "GTC",
"reduceOnly": false,
"status": "OPEN",
"createdAt": 1747927089946,
"lastUpdateAt": 1747927089946
}
]
}
/v2/wallet/{address}/perpExecutions
/v2/wallet/{address}/perpExecutions
Purpose: Real-time perpetual execution updates for a wallet
Parameters:
address
: Ethereum wallet address
Subscription:
{
"type": "subscribe",
"channel": "/v2/wallet/0x6c51275fd01d5dbd2da194e92f920f8598306df2/perpExecutions"
}
Message Structure:
{
"type": "channel_data",
"timestamp": 1747927089946,
"channel": "/v2/wallet/0x6c51275fd01d5dbd2da194e92f920f8598306df2/perpExecutions",
"data": [
{
"exchangeId": 1,
"symbol": "BTCRUSDPERP",
"accountId": 12345,
"qty": "1.0",
"side": "B",
"price": "43000.00",
"fee": "0.50",
"type": "ORDER_MATCH",
"timestamp": 1747927089946,
"sequenceNumber": 152954
}
]
}
Data Types & Schemas
Enumeration Types
Heartbeat Management
The API implements a ping/pong heartbeat mechanism:
Server Ping: Server sends periodic ping messages
Client Pong: Client must respond with pong messages
Connection Health: Failure to respond may result in disconnection
Connection Best Practices
Implement Reconnection Logic: Handle connection drops gracefully
Manage Subscriptions: Track active subscriptions for reconnection
Handle Backpressure: Process messages efficiently to avoid buffer overflow
Monitor Latency: Track message timestamps for performance monitoring
Validate Messages: Verify message structure and required fields