$npx -y skills add asterdex/aster-skills-hub --skill aster-api-spot-websocket-v1WebSocket market + user data streams for Aster Spot API v1. Subscription model, stream names, listenKey (/api/v1/listenKey). Use when implementing real-time spot market or user events. listenKey = USER_STREAM; see aster-api-spot-auth-v1.
| 1 | # Aster Spot API WebSocket (v1) |
| 2 | |
| 3 | **Base:** wss://sstream.asterdex.com. **Raw:** `/ws/<streamName>`. **Combined:** `/stream?streams=name1/name2/...` → `{"stream":"<name>","data":<payload>}`. Stream names **lowercase** (e.g. btcusdt). |
| 4 | |
| 5 | **Limits:** Connection 24h; ping every 5 min → pong within 15 min; 5 msg/s; max 1024 streams. |
| 6 | |
| 7 | ## Market: subscribe / unsubscribe |
| 8 | |
| 9 | JSON: **Subscribe** `{"method":"SUBSCRIBE","params":["btcusdt@aggTrade","btcusdt@depth"],"id":1}` → `{"result":null,"id":1}`. **Unsubscribe:** `UNSUBSCRIBE` + params. **List:** `LIST_SUBSCRIPTIONS`. |
| 10 | |
| 11 | ## Stream names (market) |
| 12 | |
| 13 | | Stream | Description | |
| 14 | |--------|-------------| |
| 15 | | `<symbol>@aggTrade` | Aggregate trades | |
| 16 | | `<symbol>@trade` | Tick-by-tick trades | |
| 17 | | `<symbol>@kline_<interval>` | Kline (e.g. 1m, 1h) | |
| 18 | | `<symbol>@depth`, `@depth@100ms` | Diff. book depth (1000ms or 100ms) | |
| 19 | | `<symbol>@miniTicker` | 24h mini ticker | |
| 20 | | `!miniTicker@arr` | All mini tickers | |
| 21 | | `<symbol>@ticker` | 24h ticker | |
| 22 | | `!ticker@arr` | All tickers | |
| 23 | | `<symbol>@bookTicker` | Best bid/ask | |
| 24 | | `!bookTicker` | All book tickers | |
| 25 | |
| 26 | ## User data stream (USER_STREAM) |
| 27 | |
| 28 | 1. **Start:** POST /api/v1/listenKey → `{ "listenKey": "..." }` (existing key extended 60 min). API key in header. |
| 29 | 2. **Connect:** wss://sstream.asterdex.com/ws/<listenKey>. |
| 30 | 3. **Keepalive:** PUT /api/v1/listenKey with listenKey (e.g. every 30 min). |
| 31 | 4. **Close:** DELETE /api/v1/listenKey with listenKey. |
| 32 | |
| 33 | **Events:** outboundAccountPosition (balance), executionReport (order update). |
| 34 | |
| 35 | ## Order book sync (depth) |
| 36 | |
| 37 | 1. Subscribe to `<symbol>@depth`; buffer events. |
| 38 | 2. Snapshot: GET /api/v1/depth?symbol=SYMBOL&limit=1000. |
| 39 | 3. Discard events with `u` ≤ lastUpdateId; first valid: `U` ≤ lastUpdateId+1 and `u` ≥ lastUpdateId+1. |
| 40 | 4. Each event: `pu` = previous `u`; else re-sync. Qty absolute; 0 = remove level. |
| 41 | |
| 42 | Payload shapes: [reference.md](reference.md). |