Coin Listing Docs
Telegram ↗

Messages

Connection confirmation, announcement payloads, tier fields, scratch-off, and keep-alive.

Every message is JSON. Three message types: a single connection message after auth, a stream of announcements, and an optional pong reply if you send {"type":"ping"}.

Connection confirmation #

Sent immediately after successful authentication.

{
  "type": "connection",
  "status": "connected",
  "username": "your_username",
  "expiry": "2026-12-31 00:00:00",
  "tier": "pro",
  "delay_ms": 0,
  "sources": ["BINANCE", "UPBIT", "BITHUMB", "COINBASE", "BINANCE_ALPHA"],
  "sent_time": 1770044622132,
  "sent_time_iso": "2026-02-02T15:03:42.132000+00:00"
}
Field Type Description
type string Always "connection" for this message.
status string Always "connected" (auth failures close the socket instead).
username string Your account name.
expiry string License expiry, UTC, YYYY-MM-DD HH:MM:SS.
tier string pro, basic, trial, or free. See Tiers.
delay_ms integer Server-side delay applied to every broadcast on this connection (both /feed and /listings): 0 for Pro and Trial, 10 for Basic, 250 for Free. Add this to your network RTT for the actual end-to-end latency you observe.
sources array of string Active source identifiers.
sent_time integer Server timestamp in Unix milliseconds.
sent_time_iso string Server timestamp in ISO 8601 UTC.

Announcement #

Incoming announcement from an exchange.

/feed example:

{
  "source": "COINBASE",
  "title": "Spot trading for Zama (ZAMA) will go live on 2 February 2026.",
  "url": "https://x.com/CoinbaseMarkets/status/2018339552952307904",
  "detected_at_iso": "2026-02-02T15:03:43.701234+00:00",
  "sent_time": 1770044623707,
  "sent_time_iso": "2026-02-02T15:03:43.707381+00:00",
  "twitter_user": "CoinbaseMarkets",
  "twitter_id": "2018339552952307904"
}

/listings example:

{
  "source": "BINANCE",
  "title": "Binance Futures Will Launch USDⓈ-Margined OPGUSDT, GENIUSUSDT Perpetual Contracts (2026-04-22)",
  "url": "https://www.binance.com/en/support/announcement/...",
  "detected_at_iso": "2026-04-22T08:30:01.123456+00:00",
  "sent_time": 1770044623571,
  "sent_time_iso": "2026-04-22T08:30:01.157892+00:00",
  "coins": ["OPG", "GENIUS"]
}
Field Type Description
source string Exchange identifier. See Sources.
title string Announcement text.
url string | null Link to the original announcement.
detected_at_iso string When the announcement was first observed — upstream where reported, otherwise server-receive time. ISO 8601 UTC, microsecond precision.
sent_time integer When our server queued the message for write to your socket (not the exchange publish time). Unix milliseconds. Use client_recv_ms − sent_time for end-to-end latency.
sent_time_iso string Same instant as sent_time, formatted as ISO 8601 UTC, microsecond precision.
coins array of string Tickers extracted from title. Present on /listings only. Empty is valid.
twitter_user string Twitter handle. Present only on Twitter-sourced announcements.
twitter_id string Tweet ID. Present only on Twitter-sourced announcements.

For Binance delisting posts titled Multiple ... Perpetual Contracts, coins may be extracted from the announcement body.

Trial scratch-off #

Trial-tier clients receive /listings with ticker symbols and coin names replaced by (U+2588 FULL BLOCK), preserving length. url is preserved. /feed is not available on Trial.

{
  "source": "UPBIT",
  "title": "Upbit Lists ███████ (███) - KRW Market",
  "url": "https://upbit.com/service_center/notice?id=6201",
  "detected_at_iso": "2026-02-02T15:03:43.501234+00:00",
  "coins": ["███"],
  "sent_time": 1770044623571,
  "sent_time_iso": "2026-02-02T15:03:43.571892+00:00"
}

Keep-alive #

The server uses standard WebSocket ping and pong (auto-handled by most client libraries). You can additionally send an application-level JSON ping to measure end-to-end latency:

→ {"type": "ping"}
← {"type": "pong", "sent_time": 1770044623571, "sent_time_iso": "2026-02-02T15:03:43.571000+00:00"}

Plain-text pingpong is also accepted for legacy clients.