REST / WebSocket 接口

WebSocket 實時行情流

建立 WebSocket 連接後發送 subscribe JSON 訂閱標的,接收實時推送。

更新日期:2026-09-12

WSwss://api.tiqex.io/api/v1/market/stream

接口說明

實時行情流

連接後發送 action、market、symbols 字段完成訂閱。

請求參數

字段類型必填說明
actionstring首包必須為 subscribe
marketstringcrypto|stocks|cn|hk|futures|indices|forex|commodities|metals|energy|agri
symbolsstring[]訂閱標的列表;數量受套餐限制

響應外殼與鑑權

字段類型說明
succboolean是否成功
dataobject | array業務數據(見下方字段)
msgstring失敗時的可讀錯誤信息(可選)
codestring機器可讀錯誤碼(可選)
X-Request-Idheader請求追蹤 ID(響應頭,不在 JSON body)
X-API-KeyheaderAPI Key;也可用 Authorization: Bearer

data 業務字段

字段類型說明
type=subscribedobject訂閱確認:market、symbols
type=tickobject實時推送
tick.symbol / last / atmixed標的、最新價、RFC3339 時間
tick.bid / ask / volumenumber盤口與量
tick.change / changePercent / high / lownumber漲跌與高低
type=errorobject錯誤幀:msg + code(如 WS_CONN_LIMIT)

常見錯誤碼

codeHTTP說明
INVALID_REQUEST400參數缺失或非法(如 interval)
INVALID_SYMBOL400標的代碼格式無效
UNKNOWN_SYMBOL400無法識別的標的(多市場 quote)
NO_SUBSCRIPTION403無有效訂閱
SUBSCRIPTION_EXPIRED403訂閱已過期
MARKET_NOT_ENABLED403當前套餐未開通該市場
API_KEY_SCOPE_DENIED403Key 權限範圍不足
IP_DENIED / GEO_DENIED403IP 或地區策略拒絕
DAILY_LIMIT_EXCEEDED429日請求配額用盡
MONTHLY_LIMIT_EXCEEDED429月請求配額用盡
RATE_LIMIT_EXCEEDED429用戶級 RPM 超限
KEY_RATE_LIMIT_EXCEEDED429單 Key RPM 超限
UPSTREAM_UNAVAILABLE502上游行情源暫時不可用
RATE_LIMIT_UNAVAILABLE503限流組件不可用
WS_CONN_LIMITWSWebSocket 連接數達到套餐上限

限流與配額

  • REST 的 quote / kline / stream 握手計入日配額與 RPM;推送 tick 不再重複計次。
  • 默認 RPM 約:Free/Trial 30、Growth/Standard 120、Pro 600、Enterprise 3000(以控制檯套餐為準)。
  • WebSocket 連接/標的上限約:Free 1 連接/10 標的;Growth 3/25;Pro 10/50;Enterprise 50/200。

連接示例 (cURL)

wss://api.tiqex.io/api/v1/market/stream
{ "action": "subscribe", "market": "crypto", "symbols": ["BTCUSDT"] }

Python

import asyncio
import websockets
import json

async def main():
    uri = "wss://api.tiqex.io/api/v1/market/stream"
    async with websockets.connect(uri) as ws:
        await ws.send(json.dumps({
            "action": "subscribe",
            "market": "crypto",
            "symbols": ["BTCUSDT"]
        }))
        print(await ws.recv())

asyncio.run(main())

JavaScript

const ws = new WebSocket("wss://api.tiqex.io/api/v1/market/stream");
ws.onopen = () => {
  ws.send(JSON.stringify({
    action: "subscribe",
    market: "crypto",
    symbols: ["BTCUSDT"]
  }));
};
ws.onmessage = (ev) => console.log(ev.data);