Real time data client
This client provides a wrapper to connect to the real-time-data-streaming
WebSocket
service.
How to use it
Here is a quick example about how to connect to the service and start receiving messages (you can find more in the folder examples/
):
import { RealTimeDataClient } from "../src/client";
import { Message } from "../src/model";
const onMessage = (message: Message): void => {
console.log(message.topic, message.type, message.payload);
};
const onConnect = (client: RealTimeDataClient): void => {
client.subscribe({
subscriptions: [
{
topic: "comments",
type: "*",
filters: `{"parentEntityID":100,"parentEntityType":"Event"}`,
},
],
});
};
new RealTimeDataClient({ onMessage, onConnect }).connect();
How to subscribe and unsubscribe from messages
Once the connection is stablished and you have a client: RealTimeDataClient
object, you can subscribe
and unsubscribe
to many messages streamings using the same connection.
Subscribe
Subscribe to 'trades' messages from the topic 'activity' and to the all comments messages.
client.subscribe({
subscriptions: [
{
topic: "activity",
type: "trades",
},
],
});
client.subscribe({
subscriptions: [
{
topic: "comments",
type: "*",
},
],
});
Unsubscribe
Unsubscribe from the new trades messages of the topic 'activity'. If 'activity' has more messages types and I used '*' to connect to all of them, this will only unsubscribe from the type 'trades'.
client.subscribe({
subscriptions: [
{
topic: "activity",
type: "trades",
},
],
});
Disconnect
The client
object provides a method to disconnect from the WebSocket
server:
client.disconnect();
Messages hierarchy
activity | trades | - | {"event_slug":"string"}' OR '{"market_slug":"string"} | Trade | |
activity | orders_matched | - | {"event_slug":"string"}' OR '{"market_slug":"string"} | Trade | |
comments | comment_created | - | {"parentEntityID":number,"parentEntityType":"Event / Series"} | Comment | |
comments | comment_removed | - | {"parentEntityID":number,"parentEntityType":"Event / Series"} | Comment | |
comments | reaction_created | - | {"parentEntityID":number,"parentEntityType":"Event / Series"} | Reaction | |
comments | reaction_removed | - | {"parentEntityID":number,"parentEntityType":"Event / Series"} | Reaction | |
rfq | request_created | - | - | Request | |
rfq | request_edited | - | - | Request | |
rfq | request_canceled | - | - | Request | |
rfq | request_expired | - | - | Request | |
rfq | quote_created | - | - | Quote | |
rfq | quote_edited | - | - | Quote | |
rfq | quote_canceled | - | - | Quote | |
rfq | quote_expired | - | - | Quote | |
crypto_prices | update | - | {"symbol":string} | CryptoPrice | CryptoPriceHistorical |
clob_user | order | ClobAuth | - | Order | |
clob_user | trade | ClobAuth | - | Trade | |
clob_market | price_change | - | ["100","200",...] | PriceChanges | |
clob_market | agg_orderbook | - | ["100","200",...] | AggOrderbook | AggOrderbook |
clob_market | last_trade_price | - | ["100","200",...] | LastTradePrice | |
clob_market | tick_size_change | - | ["100","200",...] | TickSizeChange | |
clob_market | market_created | - | - | ClobMarket | |
clob_market | market_resolved | - | - | ClobMarket | |
Auth
ClobAuth
export interface ClobApiKeyCreds {
key: string;
secret: string;
passphrase: string;
}
client.subscribe({
subscriptions: [
{
topic: "clob_user",
type: "*",
clob_auth: {
key: "xxxxxx-xxxx-xxxxx-xxxx-xxxxxx",
secret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
passphrase: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
},
},
],
});
Message types
Activity
Trade
asset | string | ERC1155 token ID of conditional token being traded |
bio | string | Bio of the user of the trade |
conditionId | string | Id of market which is also the CTF condition ID |
eventSlug | string | Slug of the event |
icon | string | URL to the market icon image |
name | string | Name of the user of the trade |
outcome | string | Human readable outcome of the market |
outcomeIndex | integer | Index of the outcome |
price | float | Price of the trade |
profileImage | string | URL to the user profile image |
proxyWallet | string | Address of the user proxy wallet |
pseudonym | string | Pseudonym of the user |
side | string | Side of the trade (BUY /SELL ) |
size | integer | Size of the trade |
slug | string | Slug of the market |
timestamp | integer | Timestamp of the trade |
title | string | Title of the event |
transactionHash | string | Hash of the transaction |
id | string | Unique identifier of comment |
body | string | Content of the comment |
parentEntityType | string | Type of the parent entity (Event or Series) |
parentEntityID | number | ID of the parent entity |
parentCommentID | string | ID of the parent comment |
userAddress | string | Address of the user |
replyAddress | string | Address of the reply user |
createdAt | string | Creation timestamp |
updatedAt | string | Last update timestamp |
Reaction
id | string | Unique identifier of reaction |
commentID | number | ID of the comment |
reactionType | string | Type of the reaction |
icon | string | Icon representing the reaction |
userAddress | string | Address of the user |
createdAt | string | Creation timestamp |
RFQ
Request
requestId | string | Unique identifier for the request |
proxyAddress | string | User proxy address |
market | string | Id of market which is also the CTF condition ID |
token | string | ERC1155 token ID of conditional token being traded |
complement | string | Complement ERC1155 token ID of conditional token being traded |
state | string | Current state of the request |
side | string | Indicates buy or sell side |
sizeIn | number | Input size of the request |
sizeOut | number | Output size of the request |
price | number | Price from in/out sizes |
expiry | number | Expiry timestamp (UNIX format) |
Quote
quoteId | string | Unique identifier for the quote |
requestId | string | Associated request identifier |
proxyAddress | string | User proxy address |
token | string | ERC1155 token ID of conditional token being traded |
state | string | Current state of the quote |
side | string | Indicates buy or sell side |
sizeIn | number | Input size of the quote |
sizeOut | number | Output size of the quote |
sizeOut | number | Output size of the request |
condition | string | Id of market which is also the CTF condition ID |
complement | string | Complement ERC1155 token ID of conditional token being traded |
expiry | number | Expiry timestamp (UNIX format) |
CryptoPrice
symbol | string | Symbol of the asset |
timestamp | number | Timestamp in milliseconds for the update |
value | number | Value at the time of update |
Filters
{"symbol":"btcusdt"}
{"symbol":"ethusdt"}
{"symbol":"xrpusdt"}
{"symbol":"solusdt"}
Initial data dump on connection
When the connection is stablished, if a filter
is used, the server will dump an initial snapshoot of recent data
symbol | string | Symbol of the asset |
data | array | Array of price data objects, each containing timestamp and value |
CLOB User
Order
asset_id | string | Order's ERC1155 token ID of conditional token |
created_at | string (timestamp) | Order's creation UNIX timestamp |
expiration | string (timestamp) | Order's expiration UNIX timestamp |
id | string | Unique order hash identifier |
maker_address | string | Maker’s address (funder) |
market | string | Condition ID or market identifier |
order_type | string | Type of order: GTC , GTD , FOK , FAK |
original_size | string | Original size of the order at placement |
outcome | string | Order outcome: YES / NO |
owner | string | UUID of the order owner |
price | string | Order price (e.g., in decimals like 0.5 ) |
side | string | Side of the trade: BUY or SELL |
size_matched | string | Amount of order that has been matched |
status | string | Status of the order (e.g., MATCHED ) |
type | string | Type of update: PLACEMENT , CANCELLATION , FILL , etc. |
Trade
asset_id | string | ERC1155 token ID of the conditional token involved in the trade |
fee_rate_bps | string | Fee rate in basis points (bps) |
id | string | Unique identifier for the match record |
last_update | string (timestamp) | Last update timestamp (UNIX) |
maker_address | string | Maker’s address |
maker_orders | array | List of maker orders (see nested schema below) |
market | string | Condition ID or market identifier |
match_time | string (timestamp) | Match execution timestamp (UNIX) |
outcome | string | Outcome of the market: YES / NO |
owner | string | UUID of the taker (owner of the matched order) |
price | string | Matched price (in decimal format, e.g., 0.5 ) |
side | string | Taker side of the trade: BUY or SELL |
size | string | Total matched size |
status | string | Status of the match: e.g., MINED |
taker_order_id | string | ID of the taker's order |
transaction_hash | string | Transaction hash where the match was settled |
maker_orders
asset_id | string | ERC1155 token ID of the conditional token of the maker's order |
fee_rate_bps | string | Maker's fee rate in basis points |
maker_address | string | Maker’s address |
matched_amount | string | Amount matched from the maker's order |
order_id | string | ID of the maker's order |
outcome | string | Outcome targeted by the maker's order (YES / NO ) |
owner | string | UUID of the maker |
price | string | Order price |
side | string | Side of the maker: BUY or SELL |
CLOB market
PriceChanges
market | string | Condition ID |
price_changes | array | Price changes by book |
timestamp | string (timestamp) | Timestamp in milliseconds since epoch (UNIX time * 1000) |
PriceChange
asset_id | string | Asset identifier |
hash | string | Unique hash ID of the book snapshot |
price | string | Price quoted (e.g., 0.5 ) |
side | string | Side of the quote: BUY or SELL |
size | string | Size or volume available at the quoted price (e.g., 0 , 100 ) |
best_ask | string | Best ask price |
best_bid | string | Best bid price |
AggOrderbook
asks | array | List of ask aggregated orders (sell side), each with price and size |
asset_id | string | Asset Id identifier |
bids | array | List of aggregated bid orders (buy side), each with price and size |
hash | string | Unique hash ID for this orderbook snapshot |
market | string | Market or condition ID |
min_order_size | string | Minimum allowed order size |
neg_risk | boolean | NegRisk or not |
tick_size | string | Minimum tick size |
timestamp | string (timestamp) | Timestamp in milliseconds since epoch (UNIX time * 1000) |
asks
/bids
scheema
price | string | Price level |
size | string | Size at that price |
Initial data dump on connection
When the connection is stablished, if a filter
is used, the server will dump an initial snapshoot of recent data
LastTradePrice
asset_id | string | Asset Id identifier |
fee_rate_bps | string | Fee rate in basis points (bps) |
market | string | Market or condition ID |
price | string | Trade price (e.g., 0.5 ) |
side | string | Side of the order: BUY or SELL |
size | string | Size of the trade |
TickSizeChange
market | string | Market or condition ID |
asset_id | string | Array of two ERC1155 asset ID |
old_tick_size | string | Previous tick size before the change |
new_tick_size | string | Updated tick size after the change |
ClobMarket
market | string | Market or condition ID |
asset_ids | [2]string | Array of two ERC1155 asset ID identifiers associated with market |
min_order_size | string | Minimum size allowed for an order |
tick_size | string | Minimum allowable price increment |
neg_risk | boolean | Indicates if the market is negative risk |