# Changelog
v0.5.2
2026-08-27
- add
announcement.summary_allfor subscribing to all announcement types - add
announcement.summary_iposfor subscribing to IPOs announcements
v0.5.1
2026-07-31
- improve real-time announcement delivery reliability after idle periods
- ensure the initial subscription update uses the latest saved announcement
v0.5.0
2026-07-28
- support stock split / reverse split announcements
v0.2.0
2024-08-05
- support engine upgrade announcements
v0.1.0
2024-05-20
- support precision announcements
v0.0.9
2024-04-15
- Support rename announcements
v0.0.8
2024-04-01
- Support deposit/withdrawal announcements
v0.0.6
2023-07-26
- Release for the first time, supporting Simplified Chinese and English announcement push
# Announcement Push API
import time
import json
# pip install websocket_client
from websocket import create_connection
ws = create_connection("wss://api.gateio.ws/ws/v4/ann")
ws.send(json.dumps({
"time": int(time.time()),
"channel": "announcement.summary_listing",
"event": "subscribe",
"payload": ["en"]
}))
print(ws.recv())
package main
import (
"log"
"time"
"github.com/gorilla/websocket"
)
type Request struct {
Time int64 `json:"time"`
Channel string `json:"channel"`
Event string `json:"event"`
Payload []string `json:"payload"`
}
type Response struct {
Time int64 `json:"time"`
TimeMs int64 `json:"time_ms"`
Channel string `json:"channel"`
Event string `json:"event"`
Result struct {
Status string `json:"status"`
} `json:"result"`
}
func main() {
conn, _, err := websocket.DefaultDialer.Dial("wss://api.gateio.ws/ws/v4/ann", nil)
if err != nil {
log.Fatal("Failed to connect to WebSocket server:", err)
}
defer conn.Close()
// build the request body
request := Request{
Time: time.Now().Unix(),
Channel: "announcement.summary_listing",
Event: "subscribe",
Payload: []string{"cn"},
}
// send request
if err := conn.WriteJSON(request); err != nil {
log.Fatal("Failed to send WebSocket request:", err)
}
// receive response
var response Response
if err := conn.ReadJSON(&response); err != nil {
log.Fatal("Failed to read WebSocket response:", err)
}
log.Printf("%#v\n", response)
}
# Request Fields
| Field | Type | Description |
|---|---|---|
| time | Integer | Request timestamp |
| channel | String | Announcement channel name |
| event | String | Event type,subscribe or unsubscribe |
| payload | Array<String> | Announcement languages: cn, en, or both |
# Channel Type
announcement.ping: service liveness checkannouncement.summary_listing: subscribe listing announcementannouncement.summary_delisting: subscribe delisting announcementannouncement.summary_fee: subscribe fee announcementannouncement.summary_etf: subscribe etf announcementannouncement.summary_deposit_withdrawal: subscribe deposit/withdrawal announcementannouncement.summary_rename: subscribe rename announcementannouncement.summary_precision: subscribe precision announcementannouncement.summary_engine_upgrade: subscribe engine upgrade announcementannouncement.summary_stock_split: subscribe stock split / reverse split announcementannouncement.summary_ipos: subscribe IPOs announcementannouncement.summary_all: subscribe all current and future announcement types
# Subscribe to IPO announcements
Use announcement.summary_ipos to receive IPOs announcements, including subscription openings, allocation or unlock updates, pre-market openings, and rule changes. The payload accepts cn, en, or both.
This channel follows the existing type-specific announcement channel behavior: for each subscribed language, the server asynchronously sends the currently cached latest IPOs announcement and continues pushing new IPOs announcements as update events. Clients should process each update independently and must not rely on the arrival order of the cached announcement and an announcement published at the same time. Its response fields are identical to the other type-specific channels, so no client migration is required.
- Subscribe request
{
"time": 1787191200,
"channel": "announcement.summary_ipos",
"event": "subscribe",
"payload": ["en"]
}
- Subscription success
{
"time": 1787191200,
"time_ms": 1787191200123,
"channel": "announcement.summary_ipos",
"event": "subscribe",
"result": {
"status": "success"
}
}
- Latest snapshot and subsequent update
{
"time": 1787191201,
"time_ms": 1787191201123,
"channel": "announcement.summary_ipos",
"event": "update",
"result": {
"lang": "en",
"origin_url": "https://www.gate.com/article/123456",
"title": "Gate Pre-IPOs announcement",
"brief": "Pre-IPOs announcement summary",
"published_at": 1787191200
}
}
# Subscribe to all announcement types
Use announcement.summary_all when one connection needs every announcement type. The payload accepts cn, en, or both. The special payload !all is not supported by this channel.
After the subscription success response, the server sends the latest announcement across all types for each subscribed language as an update event. New announcements are then pushed on the same channel. The aggregate response includes result.type, whose current values are listing, delisting, fee, etf, deposit_withdrawal, rename, precision, engine_upgrade, stock_split, and ipos. Newly added announcement types are included automatically.
If one announcement belongs to multiple types, the server sends one update for each type. Update ordering across different types is not guaranteed. Existing type-specific channels and their response fields are unchanged.
To stop updates for selected languages, send an unsubscribe request with those languages in the payload. Other languages subscribed on the same connection remain active.
- Subscribe request
{
"time": 1787104800,
"channel": "announcement.summary_all",
"event": "subscribe",
"payload": ["en"]
}
- Subscription success
{
"time": 1787104800,
"time_ms": 1787104800123,
"channel": "announcement.summary_all",
"event": "subscribe",
"result": {
"status": "success"
}
}
- Latest snapshot and subsequent update
{
"time": 1787104801,
"time_ms": 1787104801123,
"channel": "announcement.summary_all",
"event": "update",
"result": {
"lang": "en",
"origin_url": "https://www.gate.io/article/123456",
"title": "Example announcement",
"brief": "Example announcement summary",
"published_at": 1787104700,
"type": "listing"
}
}
- Unsubscribe from English updates
{
"time": 1787104900,
"channel": "announcement.summary_all",
"event": "unsubscribe",
"payload": ["en"]
}
# Response Fields
| Field | Type | Description |
|---|---|---|
| time | Integer | Timestamp |
| time_ms | Integer | Timestamp (millisecond) |
| channel | String | Channel name |
| event | String | Event type |
| result | Object | Announcement result |
| lang | string | Language of announcement |
| origin_url | string | Announcement origin url |
| title | string | Announcement title |
| brief | string | Announcement brief |
| published_at | Integer | Announcement published timestamp |
| type | string | Announcement type; only returned by announcement.summary_all |
- Request Example
{
"time": 1659956033,
"channel": "announcement.summary_listing",
"event": "subscribe",
"payload": ["en"]
}
- Response Example
{
"time": 1690365913,
"time_ms": 1690365913056,
"channel": "announcement.summary_listing",
"event": "update",
"result": {
"lang": "en",
"origin_url": "https://www.gate.com/article/228103",
"title": "Gate will commence Worldcoin(WLD) Trading at 7:30am UTC 24th July 2023 test",
"brief": "Gate is going to Gate will commence Worldcoin(WLD) Trading at 7:30am UTC 24th July 2023\r\n\r\nToken symbol:WLD\r\nWebsite:https://worldcoin.org/\r\nToken Contract : Erc20: 0x163f8c2467924be0ae7b5347228cabf260318753\r\nOptimism: 0xdc6ff44d5d932cbd77b52e5612ba0529dc6226f1\r\n\r\nDeposit Worldcoin (WLD) at https://www.gate.com/myaccount/deposit/WLD\r\nTrade Worldcoin (WLD) in USDT market via: https://www.gate.com/trade/WLD_USDT\r\n\r\n\r\nGateway to Crypto\r\nTrade over 1,400 cryptocurrencies safely, quickly and easily on Gate.io\r\n\r\nSign up to enter the crypto gateway and get 40% commission from referrals\r\n\r\nDownload iOS/Android App right now.\r\n\r\nReach out to us!\r\nTwitter: https://twitter.com/gate_io\r\nGateVIP Twitter:https://twitter.com/Gateio_Inst\r\nTelegram: https://t.me/gate_zh\r\nAPI Telegram: https://t.me/gateioapi\r\nInstagram: https://www.instagram.com/gateioglobal\r\nMedium: https://gateio.medium.com/\r\nPodcast: https://gateio.buzzsprout.com/?ch=buzzs\r\n\r\nGate.io Team\r\nJuly 24th, 2023",
"published_at": 1690365913
}
}