Message Reference
All messages are delivered as binary WebSocket frames containing UTF-8 JSON. Every message has a type field.
Welcome
Sent once, immediately after a successful connection.
{
"type": "welcome",
"tier": "premium",
"maxConnections": 5,
"allowedCex": "*",
"expiresInSecs": 2592000
}type
string
Always "welcome"
tier
string
Your subscription tier: basic, premium, or enterprise
maxConnections
integer
Maximum simultaneous connections allowed with your key
allowedCex
string
Exchanges you will receive announcements from (effective filter after applying key restrictions and your cex preference). "*" means all exchanges
expiresInSecs
integer|null
Seconds until your key expires, or null if no expiration
Announcement
Sent whenever a listing or other exchange announcement is detected on a monitored exchange.
Single ticker:
Multiple tickers (one announcement listing several assets at once):
type
string
Always "announcement"
title
string
Original announcement title from the exchange
ticker
string
Asset symbol(s). Comma-separated when multiple tickers are listed in the same announcement (e.g. "BTC" or "ABC,DEF,GHI")
publisher
string
Exchange name in lowercase (e.g. "binance", "upbit")
listingType
string
One of the listing types below
publishTimestampUs
integer
When the exchange published the announcement (microseconds since UNIX epoch)
detectedTimestampUs
integer
When our detection engine captured it (microseconds since UNIX epoch)
dispatchTimestampUs
integer
When the dispatch server broadcasted it (microseconds since UNIX epoch)
Always handle ticker as a potentially comma-separated list. Some exchange announcements list multiple assets at once. Split on , to get individual tickers:
Listing types
spot_listing
New spot market listing
futures_listing
New futures/perpetual listing
spot_delisting
Spot market delisting (coming soon)
futures_delisting
Futures/perpetual delisting (coming soon)
not_listing
Other exchange announcement (maintenance, airdrop, token swap, etc.)
Delistings coming soon. The spot_delisting and futures_delisting types are reserved for future use. Currently, announcements that are not listings are sent with listingType: "not_listing".
Measuring your latency
All timestamps are in microseconds since UNIX epoch (not milliseconds, not nanoseconds).
Python example:
Heartbeat
Sent every 30 seconds to indicate the server is alive.
type
string
Always "heartbeat"
timestampNs
integer
Current server time in nanoseconds since UNIX epoch
timeUtc
string
Current server time in ISO 8601 UTC format
If you do not receive a heartbeat within 35 seconds, your connection is likely dead. Initiate a reconnection.
Last updated
Was this helpful?