Websocket API Reference
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.
Server Endpoints
Production Environment
URL:
wss://ws.reya.xyzProtocol: WSS
Description: Production WebSocket server for live trading
Staging Environment
URL:
wss://websocket-staging.reya.xyzProtocol: WSS
Description: Staging WebSocket server for pre-production testing
Test Environment
URL:
wss://websocket-testnet.reya.xyzProtocol: WSS
Description: Test WebSocket server for 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- Perp market summaries/v2/market/{symbol}/summary- Individual perp market summary/v2/market/{symbol}/perpExecutions- Market-specific perpetual executions/v2/market/{symbol}/depth- L2 order book depth snapshots, only relevant for markets using the Reya Order Book instead of the AMM/v2/market/{symbol}/spotExecutions- Market-specific spot 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 perpetual executions/v2/wallet/{address}/spotExecutions- Wallet-specific spot executions/v2/wallet/{address}/accountBalances- Account balance updates
Parameter Validation
Symbol Parameter
Pattern:
^[A-Za-z0-9]+$Examples:
BTCRUSDPERP,ETHRUSD,kBONKRUSDPERP,AI16ZRUSDPERPDescription: Trading symbol supporting alphanumeric characters
Address Parameter
Pattern:
^0x[a-fA-F0-9]{40}$Example:
0x6c51275fd01d5dbd2da194e92f920f8598306df2Description: Ethereum wallet address (40 hexadecimal characters)
Message Structure
All WebSocket messages follow a standardized envelope structure:
Base Message Envelope
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)
Pong Message (Client → Server)
Channels Reference
1. Market Data Channels
/v2/markets/summary
/v2/markets/summaryPurpose: Real-time updates for all market summaries
Subscription:
Message Structure:
Data Type - MarketSummary
symbol(string): Trading symbolupdatedAt(integer): Last calculation timestamp (milliseconds)longOiQty(string): Long open interest in lotsshortOiQty(string): Short open interest in lotsoiQty(string): Total open interest quantityfundingRate(string): Current hourly funding ratelongFundingValue(string): Current long funding valueshortFundingValue(string): Current short funding valuefundingRateVelocity(string): Funding rate velocityvolume24h(string): 24-hour trading volumepxChange24h(string, optional): 24-hour price changethrottledOraclePrice(string, optional): Last oracle price at summary updatethrottledPoolPrice(string, optional): Last pool price at summary updatepricesUpdatedAt(integer, optional): Last price update timestamp
/v2/market/{symbol}/summary
/v2/market/{symbol}/summaryPurpose: Real-time updates for a specific market's summary
Parameters:
symbol: Trading symbol (e.g.,BTCRUSDPERP,kBONKRUSDPERP)
Subscription:
Message Structure:
Data Type - MarketSummary
Same as above - see /v2/markets/summary channel for complete field definitions.
/v2/market/{symbol}/perpExecutions
/v2/market/{symbol}/perpExecutionsPurpose: Real-time perpetual executions for a specific market
Parameters:
symbol: Trading symbol (e.g.,BTCRUSDPERP,AI16ZRUSDPERP)
Subscription:
Message Structure:
Data Type - PerpExecution
exchangeId(integer): Exchange identifiersymbol(string): Trading symbolaccountId(integer): Account identifierqty(string): Execution quantityside(Side): Execution side (B=Buy, A=Sell)fee(string): Execution feeprice(string): Execution pricetype(ExecutionType): Execution type (ORDER_MATCH, LIQUIDATION, ADL)timestamp(integer): Execution timestamp (milliseconds)sequenceNumber(integer): Global sequence number
/v2/prices
/v2/pricesPurpose: Real-time price updates for all symbols
Subscription:
Message Structure:
Data Type - Price
symbol(string): Trading symboloraclePrice(string): Oracle price - Price given by the Stork feeds, used both as the peg price for prices on Reya, as well as Mark PricespoolPrice(string, optional): Pool price - The price currently quoted by the AMM for zero volumeupdatedAt(integer): Last update timestamp (milliseconds)
/v2/prices/{symbol}
/v2/prices/{symbol}Purpose: Real-time price updates for a specific symbol
Parameters:
symbol: Trading symbol (e.g.,BTCRUSDPERP,kBONKRUSDPERP)
Subscription:
Message Structure:
/v2/market/{symbol}/depth
/v2/market/{symbol}/depthPurpose: Real-time L2 order book depth snapshots for a specific market
Parameters:
symbol: Trading symbol (e.g.,BTCRUSDPERP,DOGERUSDPERP)
Subscription:
Message Structure:
Data Type - Depth
symbol(string): Trading symboltype(DepthType): Depth message type (SNAPSHOT, UPDATE)bids(array): Bid side levels aggregated by price, sorted descending by pricepx(string): Price levelqty(string): Aggregated quantity at this price level
asks(array): Ask side levels aggregated by price, sorted ascending by pricepx(string): Price levelqty(string): Aggregated quantity at this price level
updatedAt(integer): Snapshot generation timestamp (milliseconds)
/v2/market/{symbol}/spotExecutions
/v2/market/{symbol}/spotExecutionsPurpose: Real-time spot executions for a specific market
Parameters:
symbol: Trading symbol (e.g.,ETHRUSD,BTCRUSD)
Subscription:
Message Structure:
Data Type - SpotExecution
exchangeId(integer, optional): Exchange identifiersymbol(string): Trading symbolaccountId(integer): Account identifier (taker)makerAccountId(integer): Maker account ID (counterparty)orderId(string, optional): Order ID for the takermakerOrderId(string, optional): Order ID for the makerqty(string): Execution quantityside(Side): Execution side (B=Buy, A=Sell)price(string): Execution pricefee(string): Execution feetype(ExecutionType): Execution type (ORDER_MATCH, LIQUIDATION, ADL)timestamp(integer): Execution timestamp (milliseconds)
2. Wallet Data Channels
/v2/wallet/{address}/positions
/v2/wallet/{address}/positionsPurpose: Real-time position updates for a wallet
Parameters:
address: Ethereum wallet address (e.g.,0x6c51275fd01d5dbd2da194e92f920f8598306df2)
Subscription:
Message Structure:
Data Type - Position
exchangeId(integer): Exchange identifiersymbol(string): Trading symbolaccountId(integer): Account identifierqty(string): Position quantityside(Side): Position side (B=Buy, A=Sell)avgEntryPrice(string): Average entry priceavgEntryFundingValue(string): Average entry funding valuelastTradeSequenceNumber(integer): Last execution sequence number
/v2/wallet/{address}/orderChanges
/v2/wallet/{address}/orderChangesPurpose: Real-time order change updates for wallet
Parameters:
address: Ethereum wallet address
Subscription:
Message Structure:
Data Type - Order
exchangeId(integer): Exchange identifiersymbol(string): Trading symbolaccountId(integer): Account identifierside(Side): Order side (B=Buy, A=Sell)limitPx(string): Limit priceorderType(OrderType): Order type (LIMIT, TP, SL)status(OrderStatus): Order status (OPEN, FILLED, CANCELLED, REJECTED)createdAt(integer): Creation timestamp (milliseconds)lastUpdateAt(integer): Last update timestamp (milliseconds)orderId(string): Order identifierqty(string, optional): Order quantityexecQty(string, optional): Executed quantity in the current order updatecumQty(string, optional): Total executed quantity across all fillstriggerPx(string, optional): Trigger price for TP/SL orderstimeInForce(TimeInForce, optional): Time in force (IOC, GTC)reduceOnly(boolean, optional): Reduce-only flag (exclusively for LIMIT IOC orders)
/v2/wallet/{address}/perpExecutions
/v2/wallet/{address}/perpExecutionsPurpose: Real-time perpetual execution updates for a wallet
Parameters:
address: Ethereum wallet address
Subscription:
Message Structure:
Data Type - PerpExecution
Same as above - see /v2/market/{symbol}/perpExecutions channel for complete field definitions.
/v2/wallet/{address}/spotExecutions
/v2/wallet/{address}/spotExecutionsPurpose: Real-time spot execution updates for a wallet
Parameters:
address: Ethereum wallet address
Subscription:
Message Structure:
Data Type - SpotExecution
Same as above - see /v2/market/{symbol}/spotExecutions channel for complete field definitions.
/v2/wallet/{address}/accountBalances
/v2/wallet/{address}/accountBalancesPurpose: Real-time account balance updates for a wallet
Parameters:
address: Ethereum wallet address
Subscription:
Message Structure:
Data Type - AccountBalance
accountId(integer): Account identifierasset(string): Asset symbol (e.g., WSTETH, RUSD)realBalance(string): Sum of account net deposits and realized PnL from closed positionsbalance_DEPRECATED(string): Sum of account net deposits only (deprecated, will be removed)
Data Types & Schemas
Enumeration Types
ExecutionType - Type of execution that occurred
ORDER_MATCH: Regular order matchingLIQUIDATION: Liquidation executionADL: Auto-deleveraging execution
OrderStatus - Current status of an order
OPEN: Order is active and can be filledFILLED: Order has been completely filledCANCELLED: Order has been cancelledREJECTED: Order was rejected
DepthType - Order book depth message type
SNAPSHOT: Full order book snapshotUPDATE: Single level change update
AccountType - Account type classification
MAINPERP: Main perpetual trading accountSUBPERP: Sub perpetual trading accountSPOT: Spot trading only account
Connection Management
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