The websocket API requires a valid API key. You can get one by contacting us .
The prices channel streams real-time bid and ask price updates for prediction markets. Use this channel to build live price tickers, trading interfaces, and market monitoring tools.
Subscribe
Subscribe to All Prices
{
"type" : "subscribe" ,
"channel" : "prices" ,
"all" : true
}
Subscribe to Specific Tickers
{
"type" : "subscribe" ,
"channel" : "prices" ,
"tickers" : [ "BTCD-25DEC0313-T92749.99" , "SPX-25DEC0313-T5000" ]
}
Unsubscribe
Unsubscribe from All Prices
{
"type" : "unsubscribe" ,
"channel" : "prices" ,
"all" : true
}
Unsubscribe from Specific Tickers
{
"type" : "unsubscribe" ,
"channel" : "prices" ,
"tickers" : [ "BTCD-25DEC0313-T92749.99" ]
}
When subscribed to the prices channel, you’ll receive messages with the following structure:
{
"channel" : "prices" ,
"type" : "ticker" ,
"market_ticker" : "BTCD-25DEC0313-T92749.99" ,
"yes_bid" : "0.45" ,
"yes_ask" : "0.47" ,
"no_bid" : "0.53" ,
"no_ask" : "0.55"
}
Response Fields
Field Type Description channelstring Always "prices" typestring Message type market_tickerstring Market identifier yes_bidstring | null Best bid price for YES outcome yes_askstring | null Best ask price for YES outcome no_bidstring | null Best bid price for NO outcome no_askstring | null Best ask price for NO outcome
Price fields may be null if there is no current bid or ask at that level.
Code Examples
const WEBSOCKET_URL = "wss://prediction-markets-api.dflow.net/api/v1/ws" ;
const ws = new WebSocket ( WEBSOCKET_URL );
ws . onopen = () => {
console . log ( "Connected to WebSocket" );
// Subscribe to all price updates
ws . send (
JSON . stringify ({
type: "subscribe" ,
channel: "prices" ,
all: true ,
})
);
};
ws . onmessage = ( event ) => {
const message = JSON . parse ( event . data );
if ( message . channel === "prices" ) {
console . log ( "Price update:" , {
ticker: message . market_ticker ,
yesBid: message . yes_bid ,
yesAsk: message . yes_ask ,
noBid: message . no_bid ,
noAsk: message . no_ask ,
});
}
};
ws . onerror = ( error ) => {
console . error ( "WebSocket error:" , error );
};
ws . onclose = () => {
console . log ( "WebSocket connection closed" );
};
Subscribe to Specific Markets
const WEBSOCKET_URL = "wss://prediction-markets-api.dflow.net/api/v1/ws" ;
// Market tickers to subscribe to
const marketTickers = [ "BTCD-25DEC0313-T92749.99" , "SPX-25DEC0313-T5000" ];
const ws = new WebSocket ( WEBSOCKET_URL );
ws . onopen = () => {
console . log ( "Connected to WebSocket" );
// Subscribe to specific tickers for prices
ws . send (
JSON . stringify ({
type: "subscribe" ,
channel: "prices" ,
tickers: marketTickers ,
})
);
};
ws . onmessage = ( event ) => {
const message = JSON . parse ( event . data );
console . log ( `Price update for ${ message . market_ticker } :` , message );
};
interface PriceUpdate {
channel : "prices" ;
type : string ;
market_ticker : string ;
yes_bid : string | null ;
yes_ask : string | null ;
no_bid : string | null ;
no_ask : string | null ;
}
function handlePriceUpdate ( update : PriceUpdate ) {
console . log ( `Price update for ${ update . market_ticker } :` , {
yesBid: update . yes_bid ,
yesAsk: update . yes_ask ,
noBid: update . no_bid ,
noAsk: update . no_ask ,
});
}