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
}
Field
Type
Description

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):

Field
Type
Description

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)

circle-exclamation

Listing types

Value
Meaning

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.)

circle-info

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.

Field
Type
Description

type

string

Always "heartbeat"

timestampNs

integer

Current server time in nanoseconds since UNIX epoch

timeUtc

string

Current server time in ISO 8601 UTC format

circle-info

If you do not receive a heartbeat within 35 seconds, your connection is likely dead. Initiate a reconnection.

Last updated

Was this helpful?