generated: '2026-08-04' method: searched source: >- https://docs.trade.mudrex.com/docs/websocket-streams, https://docs.trade.mudrex.com/docs/market-data spec_type: none description: >- Mudrex runs a real, public event surface — a WebSocket streaming API for klines, mark-price klines and tickers — but publishes NO AsyncAPI document for it, and no webhooks at all. This artifact is the honest capture of the documented channel catalog and protocol envelope; it is NOT an AsyncAPI document and no AsyncAPI pointer is wired into apis.yml, because none exists to point at. Publishing an AsyncAPI 3.x document for this endpoint is the single cheapest machine-readability win available to Mudrex. surface: kind: websocket url: wss://trade.mudrex.com/fapi/v1/price/ws/linear authentication: none (public, read-only) docs: https://docs.trade.mudrex.com/docs/websocket-streams introduced: v1.0.9 (2026-06-26) webhooks: supported: false detail: Mudrex documents no outbound webhook/callback surface for order, position or fee events. protocol: request_envelope: id: int — client correlation id, echoed back by the server method: SUBSCRIBE | UNSUBSCRIBE | LIST_SUBSCRIPTIONS params: string[] — stream names assets: string[] — applied only when a ticker stream is in params success_response: '{ "method": "SUBSCRIBE", "id": 1, "result": "success" }' error_response: '{ "method": "SUBSCRIBE", "id": 1, "error": { "code": 400, "msg": "invalid stream name: kline@5m@btcusdt" } }' semantics: All-or-nothing — if any stream in params is invalid the whole request is rejected and no state changes. keepalive: idle_timeout_seconds: 40 recommended_ping_seconds: 20 persistence: Subscriptions are per-connection and are not persisted; re-subscribe after a reconnect. symbol_format: lowercase, no slash (e.g. btcusdt) — differs from the REST market-data / form channels: - name: kline@1s@ payload: OHLCV candle interval: 1s - name: kline@1m@ payload: OHLCV candle interval: 1m - name: markKline@1s@ payload: OHLC mark price, no volume interval: 1s - name: markKline@1m@ payload: OHLC mark price, no volume interval: 1m - name: ticker@1s payload: changed prices, pushed every 1 second assets_in: assets[] note: One-time snapshot on subscribe; counts as a single subscription regardless of asset count. - name: ticker@5s payload: changed prices, pushed every 5 seconds assets_in: assets[] note: One-time snapshot on subscribe; counts as a single subscription regardless of asset count. rest_companions: - {endpoint: 'GET /fapi/v1/price/kline', description: 'Bulk historical OHLCV klines — ≤25 assets, ≤1440 candles per asset.'} - {endpoint: 'GET /fapi/v1/price/mark-kline', description: 'Bulk historical mark-price klines (OHLC only).'} limits: subscriptions_per_connection: 15 new_connections_per_minute_per_ip: 10 rest_requests_per_minute_per_ip: 300 detail: rate-limits/mudrex-rate-limits.yml errors: errors/mudrex-error-codes.yml recommendation_to_provider: >- Publish an AsyncAPI 3.x document at a stable URL (e.g. https://trade.mudrex.com/asyncapi.yaml) describing these six channels, the SUBSCRIBE/UNSUBSCRIBE operations and the message schemas. The channel catalog, envelope and limits are already written in prose — the spec is a transcription, not new work.