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 ping → pong is also accepted for legacy clients.